Portsentry & TCP wrapper TCP Wrapper C'est un utilitaire qui permet en fonction des demandes de services qu'il reçoit soit de les autoriser soit de refuser. On peut par exemple offfir le service ftp que à certaines adresses IP seulement et ne pas l'offrir à d'autres. Il existe plusieurs manières de configurer TCPwrappers. L'une d'elle est de refuser à tout le monde en spécifiant ALL: ALL dans le fichier /etc/hosts.deny et ouvrir les services au compte goutte aux personnes autorisées dans le fichier /etc/hosts.allow Si maintenant l'ip 192.168.1.101 essaie de se connecter sur le serveur ftp sans que son adresse ip ait été spécifiée dans /etc/hosts.allow, laors vinci:~# ftp 192.168.1.1 Connected to 192.168.1.1. 421 Service not available, remote server has closed connection
Si dans /etc/hosts.all on autorise 192.168.1.101 à utiliser le service ftp, alors il suffit d'ajouter dans /etc/hosts.allow: ## Le service ftp limité au localhost et à 192.168.1.101 wu-ftpd: localhost 192.168.1.101 Ensuite un ftp 192.168.1.1 donne ceci
Connecté à 192.168.1.101 220 ProFTPD 1.2.0pre10 Server (Debian) Utilisateur (192.168.1.101:(none)) : Attention : TCPWrapper ne saurait n'est qu'être une rempart en plus dans la défense contre les envahisseurs!
Mais que fait portsentry ???? L'idéé : un IDS (très) actif ! Portsentry est un logiciel libre qui permet de détecter des scans de port qu'ils soient furtifs ou non Sa force de réaction est basée sur l'algorithme suivant : 1. Si détecte un scan que la règle de configuration /etc/portsentry/portsentry.conf a défini alors étape 2 2. 3 Types de réactions (immédiates) 1. Soit il ajoute dans /etc/hosts.deny l'adresse IP du scanner et lui interdit tous les services ALL: $TARGET : DENY
$TARGET représente l'adresse IP de l'attaquant 2. Soit il ajoute une règle dans le firewall iptables debian:~# iptables -I INPUT -s $TARGET -j DENY
3. Soit il lui ajoute une route Cette route est en fait une route de rejet ! debian:~# route add -host $TARGET reject
Table de routage IP du noyau Destination
Passerelle
Genmask
Indic Metric Ref Use Iface
192.168.1.101
-
255.255.255.255
!H
0
-
0
-
212.198.129.0
0.0.0.0
255.255.255.0
U
0
0
0
eth1
192.168.1.0
0.0.0.0
255.255.255.0
U
0
0
0
eth0
0.0.0.0
gw
0.0.0.0
UG
0
0
0
eth1
La première ligne nous indique bien que pour aller vers le host $TARGET, c'est impossible ! :)