Mise 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