Iptables :
Dans ce TP , nous allons utiliser
IpTables, une solution complète de firewall sous linux (à partir du noyau 2.4).
1 - Lancement d’Iptables
Dans le cas ou les options iptables du
kernel ont étés compilées en modules, il est nécessaire de charger ces modules
avant de pouvoir utiliser iptables :
# modprobe ip_tables
Opérations sur une seule chaîne et sur la table filtrer:
1.1.1.
Première
règle :
·
Interdire tout
paquet entrant :
#iptables -A INPUT -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.2.
Paramètre
protocole :
·
Interdire le
protocole ICMP :
iptables -A INPUT -p icmp -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.3.
Paramètre
source :
·
Interdire le
protocole ICMP provenant de localhost :
iptables -A INPUT -p icmp -s localhost -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.4.
chaîne OUTPUT
paramètre destination :
·
Interdire tout
paquet à destination de localhost :
iptables -A OUTPUT -d localhost -j DROP
·
Effacer la
règle :
iptables -D OUTPUT 1
1.1.5.
paramètre
inversion :
·
Interdire un
paquet s' il ne provient pas de localhost :
iptables -A INPUT -s ! localhost -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.6.
paramètre
interface d'entrée :
·
Interdire un
paquet s' il provient de lo :
iptables -A INPUT -i lo -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.7.
paramètre
interface de sortie :
·
Interdire tout
paquet sortant par eth0 :
iptables -A OUTPUT -o eth0 -j DROP
·
Effacer la
règle :
iptables -D OUTPUT 1
1.1.8.
paramètre
destination port :
·
Interdire tout
paquet à destination du port ftp :
iptables -A INPUT -p tcp --dport 21 -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.9.
paramètre source
port :
·
Interdire tout
paquet sortant par eth0 dont le numéro de port destination est inférieur à
1024 :
iptables -A OUTPUT -o eth0 -p tcp --sport
:1023 -j DROP
iptables -A OUTPUT -o eth0 -p udp --sport
:1023 -j DROP
·
Effacer la
règle :
iptables -D OUTPUT 1
1.1.10. paramètre flag TCP :
·
Interdire toute
tentative d' initialisation de connexion TCP provenant de eth0 :
iptables -A INPUT -i eth0 -p tcp --syn --sport
:1023 -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
1.1.11. paramètre flag icmp :
·
Interdire tout
paquet entrant correspondant à un ping :
iptables -A INPUT -p icmp --icmp-type
echo-request -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
·
Interdire toute
réponse à un ping :
iptables -A OUTPUT -p icmp --icmp-type
echo-reply -j DROP
·
Effacer la
règle :
iptables -D OUTPUT 1
1.1.12. paramètre extension:
2.1.12.1. extension mac :
·
Interdire tout
paquet entrant par eth0 dont l' adresse mac n' est pas celle du voisin :
iptables -A INPUT -i eth0 -m mac --mac-source
! 00:50:FC:23:2D:D7 -j DROP
·
Effacer la
règle :
iptables -D INPUT 1
2.1.12.2. extension limit :
·
Positionner la
police par défaut à DROP pour la chaîne INPUT :
iptables -P INPUT DROP
·
Ecrire une règle qui laisse
entrer 5 tentatives de connexion TCP puis qui n' en laisse passer plus que 2
par minute :
iptables -A INPUT -p tcp --syn -m limit
--limit 2/minute --limit-burst 5 -j ACCEPT
·
Faire de même
avec les pings :
iptables -A INPUT -p icmp --icmp-type ping -m
limit --limit 2/minute --limit-burst 5 -j ACCEPT
·
combien de temps faudra t' il
pour qu' on puisse à nouveau avoir 5 des ces paquets qui puissent passer à la
suite ?
5 minutes
·
Effacer la
règle :
iptables -D INPUT 1
1.1.13. le suivi de connexion(ip_conntrack) :
·
Positionnez les
règles par défaut à DROP pour les chaînes INPUT, OUTPUT, FORWARD :
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
·
Autoriser tout paquet relatif à
une connexion déjà établi ou en rapport avec une connexion déjà établi en
entrée
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j
ACCEPT
·
Interdire tout paquet relatif à
une connexion de type INVALID :
iptables -A INPUT -m state --state INVALID -j
DROP
·
Autoriser tout
paquet créant une nouvelle connexion en sortie à destination du port 80 :
iptables -A OUTPUT -p tcp --dport 80 -m state
--state NEW -j ACCEPT
·
Que faut il
modifier ici pour que l' on puisse naviguer sur le net ?
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW
-j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW
-j ACCEPT
iptables -A OUTPUT -m state --state
ESTABLISHED,RELATED -j ACCEPT
Opérations sur plusieurs chaînes et sur la table filter:
ü création d'un nouvelle chaîne :
·
créer une nouvelle chaîne qui log
le paquet en ajoutant le préfixe [INPUT DROP] et qui le drop renvoyer sur cette
nouvelle chaîne tout paquet engendrant une nouvelle connexion en entrée :
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG
--log-prefix «[INPUT DROP]»
iptables -A LOG_DROP -j DROP
0 commentaires:
Enregistrer un commentaire