[Debian] Mise en place d’un pare-feu avec Iptables

iptables_2Mise en place d'un pare-feu sur un serveur Debian, résumé d'un très bon tutoriel trouvé sur le site tutoriels-video.fr. Quelques outils  intéressant, pour créer ses règles rapidement :  Iptables rule generator , Easy Firewall Generator for IPTables . Netfilter and Iptables Multilingual Documentation

 

voir les règles en cours :

iptables -L

réinitialiser les règles :

iptables -F
iptables -X

On crée le fichier :

touch firewall.sh

On le rend exécutable :

chmod +x /home/firewall.sh

Puis on colle les règles, à adapter selon ses besoins. J'ai commenté quelques lignes qui ne me servent pas mais qui sont des services fréquemment utilisés.

#!/bin/sh
 ### BEGIN INIT INFO
 # Provides: Firewall maison
 # Required-Start: $local_fs $remote_fs $network $syslog
 # Required-Stop: $local_fs $remote_fs $network $syslog
 # Default-Start:
 # Default-Stop:
 # X-Interactive: false
 # Short-Description: Firewall maison
 ### END INIT INFO
 # Mise à 0
 iptables -t filter -F
 iptables -t filter -X
 echo "Mise à 0"
 # On bloque tout
 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT DROP
 echo "Interdiction"
 # Ne pas casser les connexions établies
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Autorise le loopback (127.0.0.1)
 iptables -t filter -A INPUT -i lo -j ACCEPT
 iptables -t filter -A OUTPUT -o lo -j ACCEPT
 echo "Loopback"
 # ICMP (le ping)
 iptables -t filter -A INPUT -p icmp -j ACCEPT
 iptables -t filter -A OUTPUT -p icmp -j ACCEPT
 echo "Ping ok"
 # SSH IN/OUT
 iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
 iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
 echo "SSH ok"
 # DNS In/Out
 #iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
 #iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
 #iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
 #iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
 echo "dns ok"
 # Network Time Protocol Out
 iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
 echo "ntp ok"
 # HTTP + HTTPS Out
 iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 #iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
 # HTTP + HTTPS In
 iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
 #iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
 #iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
 echo "http ok"
 # FTP Out
 iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
 iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
 # FTP In
 # imodprobe ip_conntrack_ftp # ligne facultative avec les serveurs OVH
 iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
 iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
 iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 echo "ftp ok"
 # Mail SMTP:25
 #iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
 #iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
 # Mail POP3:110
 #iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
 #iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
 # Mail IMAP:143
 #iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
 #iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
 # Mail POP3S:995
 #iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
 #iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
 #echo "mail ok"
 # Glances
 iptables -t filter -A INPUT -p tcp --dport 61208 -j ACCEPT
 echo "monitoring ok"

Test du firewall :

./firewall.sh

 

Si tout est ok :

  • Pour serveur Debian
cp /home/firewall.sh /etc/init.d

Puis activer le firewall au démarrage du serveur :

update-rc.d firewall defaults
  • Pour serveur Ubuntu
    sudo apt-get install iptables-persistent

Une foir installé, on peut sauver/recharger les règles avec :

    sudo /etc/init.d/iptables-persistent save 
    sudo /etc/init.d/iptables-persistent reload

Les options iptables-persistent : {start|restart|reload|force-reload|save|flush}

FMR

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *