Iptable est l'outil d'administration pour le filtrage de paquets IPv4 et NAT. Iptables est utilisé pour configurer, maintenir et inspecter les tables de règles de filtrage de paquets IPv4 dans le noyau Linux. Plusieurs tables différentes peuvent être définies. Chaque table contient un certain nombre de chaînes intégrées et peut également contenir des chaînes définies par l'utilisateur. Chaque chaîne est une liste de règles qui peuvent correspondre à un ensemble de paquets. Chaque règle spécifie ce qu'il faut faire avec un paquet qui correspond. C'est ce qu'on appelle une "cible", qui peut être un saut vers une chaîne définie par l'utilisateur dans la même table.
Une règle de pare-feu spécifie des critères pour un paquet et une cible. Si le paquet ne correspond pas, la règle suivante dans la chaîne est examinée ; si elle correspond, la règle suivante est spécifiée par la valeur de la cible, qui peut être le nom d'une chaîne définie par l'utilisateur ou l'une des valeurs spéciales ACCEPT, DROP, QUEUE ou RETURN.
- ACCEPTER signifie laisser passer le paquet.
- DROP signifie déposer le paquet sur le sol
- FILE D'ATTENTE signifie transmettre le paquet à l'espace utilisateur
- RETOUR signifie arrêter de parcourir cette chaîne et reprendre à la règle suivante de la chaîne précédente.
Il y a au total 4 chaînes :
- ENTRÉE - La chaîne par défaut est utilisée pour les paquets adressés au système. Utilisez ceci pour ouvrir ou fermer les ports entrants et les adresses IP/sous-réseau
- SORTIE - La chaîne par défaut est utilisée lorsque des paquets sont générés à partir du système. Utilisez ceci pour ouvrir ou fermer les ports sortants et les adresses IP/sous-réseaux
- AVANCER - Les chaînes par défaut sont utilisées lorsque les paquets sont envoyés via une autre interface. Généralement utilisé lorsque vous configurez Linux en tant que routeur
- RH-Firewall-1-INPUT - Il s'agit d'une chaîne personnalisée définie par l'utilisateur. Il est utilisé par les chaînes INPUT, OUTPUT et FORWARD.
Installation d'Iptables
Nous pouvons installer iptables via la commande suivante.
[root@vpn ~]# yum install iptables -y
Vérifier la version d'iptable :
[root@vpn ~]# iptables --version
iptables v1.3.5
Vérifier l'état d'iptables :
[root@vpn ~]# service iptables status
Démarrer iptables :
[root@vpn ~]# service iptables start
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Pour définir le démarrage d'iptables au démarrage :
[root@vpn ~]# chkconfig iptables on
Le fichier de configuration par défaut de CentOS est /etc/sysconfig/iptables. Ce sont les scripts système qui activent le pare-feu en lisant ce fichier
Règles iptables
1) Réinitialiser toutes les règles (F) et les chaînes (X), nécessaire si vous avez déjà défini des règles iptables
#iptables -t filter -F
#iptables -t filter -X
2) Afficher l'état du pare-feu
#iptables -L -n -v
3) Bloquer les paquets nuls
#iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
4) Rejeter l'attaque SYN -FLOOD
#iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
5) Rejeter un paquet de reconnaissance
#iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
6) Ajout de l'interface localhost au filtre de pare-feu
#iptables -A INPUT -i lo -j ACCEPT
7) Autoriser le trafic du serveur Web
#iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
8) Autoriser les utilisateurs à utiliser les serveurs SMTP
#iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
9) Autoriser les utilisateurs à lire les e-mails sur leur serveur
autoriser le trafic POP3
#iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
autoriser le trafic POP3
#iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
10) Autoriser le trafic SSH
#iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
autoriser le trafic vers le port SSH s'il provient d'une seule source
#iptables -A INPUT -p tcp -s YOUR_IP_ADDRESS -m tcp --dport 22 -j ACCEPT
11) Autoriser toutes les connexions sortantes établies à recevoir des réponses du serveur
#iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
12) Bloquer une adresse IP
#iptables -A INPUT -s IP_ADDRESS -j DROP
13) Bloquer un port pour une adresse IP spécifique
#iptables -A INPUT -p tcp -s IP_ADDRESS --dport PORT -j DROP
14) Ouvrir un port pour une adresse IP spécifique
#iptables -A INPUT -p tcp -s IP_ADDRESS --dport PORT -j ACCEPT
15) Autoriser l'imprimante pour une adresse IP spécifique
#iptables -A INPUT -s IP_ADDRESS -p udp -m udp --dport 631 -j ACCEPT
16) Ouvrez le DNS
#iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
17) Ouvrir le port MYSQL
#iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
18) Ouvrir une plage de ports (par exemple :7000-7100)
#iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7100 -j ACCEPT
Après avoir défini toutes les règles, vous devez enregistrer les règles et redémarrer iptables
#service iptables save
#service iptables restart