420-876-MA Linux III : Gestion de réseaux
MODULE 14 Configurer un pare-feu (iptables)
GROUPE 1612
AUTOMNE -2007
COLLÈGE DE MAISONNEUVE
3800, rue Sherbrooke Est Montréal (Québec) H1X 2A2 Téléphone : (514) 254 7131
CONFIGURER UN PARE-FEU AVEC IPTABLES
1 2 3
4 5 6 7
INSTALLATION ....................................................................................................... 3 FILTRER LES PAQUETS ......................................................................................... 3 TABLES ..................................................................................................................... 3 3.1 Table NAT .......................................................................................................... 3 3.2 TABLE FILTER ................................................................................................. 3 3.3 TABLE MANGLE.............................................................................................. 3 CHAÎNES ................................................................................................................... 4 4.1 TARGET............................................................................................................. 4 LES COMMANDES DE IPTABLES ........................................................................ 4 5.1 LES PARAMÈTRES DE IPTABLES ................................................................ 5 ADMINISTRER iptables ..................................................................................... 5 EXEMPLES ................................................................................................................ 6
_____________________________________________________________________ 2
1
INSTALLATION Installer le paquetage iptables si nécessaire.
# yum install iptables 2
FILTRER LES PAQUETS Les paquets sont filtrés un utilisant des règles prédéfinies. Une chaîne correspond à un ensemble de règles. La gestion des règles se fait en utilisant la commande iptables Pour lister les règles qui se trouvent présentement dans la table des filtres :
iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Si aucune règle ne s’applique, alors la politique par défaut est appliquée. 3 3.1
TABLES Table NAT (Network Address Translation) : Table utilisée pour la translation d'adresse ou la translation de port.
3.2
TABLE FILTER C'est la table par défaut si aucune table n’est spécifiée. Cette table contient toutes les règles de filtrage, il existe 3 types de chaînes : •
FORWARD pour les paquets passant par le pare-feu.
•
INPUT pour les paquets entrants.
•
OUTPUT pour les paquets sortants.
Les cibles (target) disponibles sont : ACCEPT, DROP, REJECT 3.3
TABLE MANGLE C'est la table qui contient les règles pour la modification de paquets. Elle est peu utilisée et ne sera pas décrite.
_____________________________________________________________________ 3
4
CHAÎNES Une chaîne est une suite de règles, qui sont prises dans l'ordre ; dès qu'une règle matche un paquet, elle est déclenchée, et la suite de la chaîne est ignorée. Une chaîne est donc tout simplement un ensemble de règle à appliquer dans l’ordre. Ils existent cinq chaînes prédéfinies : Chaîne INPUT OUTPUT FORWARD PREROUTING POSTROUTING
4.1
Description règles pour les paquets entrants (table FILTER) règles pour les paquets sortants (table FILTER) règles pour les paquets qui transitent (table FILTER) règles pour modifier les paquets entrants (table NAT) règles pour modifier les paquets sortants (table NAT)
TARGET Le target est l’action à prendre. On doit spécifier un target (action) pour chaque règle d’une chaîne. Target ACCEPT DROP REJECT
5
Description accepter les paquets interdire l’accès interdire l’accès avec notification
LES COMMANDES DE iptables iptables n'est pas livré avec une interface graphique ; les commandes et les règles sont passées en ligne de commande. Le mieux est d'écrire des scripts qui permettent d'appliquer toutes les règles d'un seul coup, dès le démarrage du Linux. Commande -A chaîne -D chaîne -I chaîne [no_regle] -R chaîne no_regle -L [chaîne] -E [chaîne] -F [chaîne] -R chaîne -N chaîne -X chaîne -P chaîne target
Description ajouter des règles effacer des règles insérer une règle remplacer une règle lister les règles renommer la chaîne effacer (flush) les règles remplacer la règle créer une nouvelle chaîne (usager) effacer la chaîne définie par l’usager définir la politique par défaut
_____________________________________________________________________ 4
5.1
LES PARAMÈTRES DE iptables Option -p [!] proto -s [!] adresse [/mask] --sport [!] [!] [port[:port]] -d [!] adresse [/mask] --dport [!] [!] [port[:port]] -i [!] eth -o [!] eth -j target
6
Description protocole : TCP, UDP, ICMP, ALL adresse source port source adresse destination port destination interface d’entrée interface de sortie cible
ADMINISTRER iptables a) Supprimer les règles :
service iptables stop b) Afficher les règles :
service iptables status c) Ajouter une règle :
iptables -A INPUT -j ACCEPT -i lo d) Sauvegarder les règles dans le fichier /etc/sysconfig/iptables :
service iptables save e) Restaurer les règles a partir du fichier /etc/sysconfig/iptables :
service iptables start more /etc/sysconfig/iptables f) Sauvegarder les règles dans un fichier quelconque :
iptables-save > /etc/iptables.rules g) Restaurer les règles a partir d’un fichier :
iptables-restore < /etc/iptables.rules
_____________________________________________________________________ 5
7
EXEMPLES a) Ajouter une nouvelle règle dans la chaîne INPUT : iptables -A INPUT -p tcp --dport 80 -j DROP b) Supprimer une règle de la chaîne
INPUT :
iptables -D INPUT -p tcp --dport 80 -j DROP ou bien iptables -D INPUT 1 c) Remplacer une règle de la chaîne
INPUT :
iptables -R INPUT 1 -s 192.168.0.1 -j DROP d) Insérer une règle de la chaîne INPUT : iptables -I INPUT 1 –p tcp --dport 80 -j ACCEPT e) Afficher toutes les règles des chaînes de la table FILTER : iptables –L f) Afficher toutes les règles de la chaîne INPUT de la table FILTER : iptables -L INPUT g) Flusher les règles de la chaîne INPUT : iptables -F INPUT h) Créer une nouvelle chaîne LOG_DROP : iptables -N LOG_DROP i) Supprimer la chaîne LOG_DROP : iptables -X LOG_DROP j) Définir la politique par défaut de la chaîne INPUT : iptables -P INPUT DROP
_____________________________________________________________________ 6
k) Ajout de règles : iptables -A INPUT -p tcp --source ! 10.42.42.42 –j REJECT iptables -A INPUT -p icmp -j DROP iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT iptables -A INPUT -p icmp -i eth0 -j REJECT iptables -A OUTPUT -p icmp -o eth0 -j DROP iptables -A INPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p udp --sport 80 -j DROP iptables -A OUTPUT -p tcp -m multiport --sport 3128,21,1000 -j DROP iptables -A OUTPUT -p tcp --sport 1024:2042 -j ACCEPT iptables -A INPUT -p tcp --dport 110 -j DROP iptables -A INPUT -p udp --dport 110 -j DROP iptables -A INPUT -p tcp -m multiport --dport 110,4242,119 -j DROP iptables -A INPUT -p tcp --sport 4925:4633 -j ACCEPT iptables -A INPUT -p tcp --dport 42 --tcp-flags SYN, ACK -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -j DROP iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
l) Ajout de règles dans la chaîne PREROUTING de la table NAT : iptables -t nat -A PREROUTING -d 42.12.42.12 -p tcp --dport 110 -j DNAT --to-destination 192.168.1.2:6110 iptables -t nat -A PREROUTING -d ! 42.12.42.12 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
_____________________________________________________________________ 7