Activer un pare-feu IPTABLES sur Debian

Pour information: Un script est disponible pour les membres.

NOUVELLE VERSION ICI

La mise en place d’un pare-feu est essentielle pour la sécurité de votre serveur, au cours de ce tutoriel nous allons bloquer toutes les connexions entrantes et sortantes puis autoriser au cas par cas selon vos besoins les ports qui seront autorisés à communiquer avec l’extérieur.

On commence par vérifier les règles IPTABLES présentes:

sudo iptables -L

Si des règles existent on s’en débarrasse:

sudo iptables -F

On va maintenant créer notre firewall:

sudo nano /etc/init.d/firewall

Et on colle les informations suivantes:

### BEGIN INIT INFO
# Provides:          firewall
# Source :           http://webadonf.net
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Demarrage du script lors de la sequence de boot
# Description:       Ajout des regles de parefeu
### END INIT INFO

#!/bin/sh
case "$1" in
start)

echo - Initialisation du firewall :

# Vidage des tables et des regles personnelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage des regles et des tables : [OK]

# Interdire toutes connexions entrantes et sortantes
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo - Interdire toutes les connexions entrantes et sortantes : [OK]

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Ne pas casser les connexions établies : [OK]

########## Regles ##########

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# Autoriser le ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# Autoriser SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

# Autoriser DNS
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

# Autoriser NTP
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# Autoriser FTP
modprobe ip_conntrack_ftp
iptables -t filter -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autoriser HTTP et HTTPS
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

# Autoriser POP3
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT

# Autoriser SMTP
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

# Autoriser IMAP
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

# Autoriser POP3S
iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT

echo - Initialisation des regles : [OK]

;;
status)

echo - Liste des regles :
iptables -n -L

;;
stop)

# Vidage des tables et des regles personnelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage des regles et des tables : [OK]

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo - Autoriser toutes les connexions entrantes et sortantes : [OK]

;;
esac
exit 0
ATTENTION:
Avant de continuer si vous avez changé le port de connexion ssh/ , localisez la section:
# Autoriser SSH et adaptez avec le port que vous avez choisi précédemment sinon vous allez définitivement vous enfermer dehors de votre machine. locked-out

Ajoutez les ports qui vous sont nécessaires, en ajoutant pour chaque port les lignes suivantes en remplaçant la variable $PORT par le numéro de port désiré:


# Autoriser MON.SERVICE.A.AUTORISER
iptables -t filter -A INPUT -p tcp --dport $PORT -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport $PORT -j ACCEPT

On rend le pare-feu exécutable:

sudo chmod +x /etc/init.d/firewall

Et on le démarre:

sudo /etc/init.d/firewall start

Après avoir effectuer vos tests vous pourrez rendre le firewall persistant au redémarrage:

sudo crontab -e

Et ajoutez la ligne:

@reboot sudo /etc/init.d/firewall start