Installer un firewall sur Debian

firewall-linux

Mise en place de règles IPtables sur une distribution Debian

Niveau conseillé :   Niveau expert

Vous venez de mettre en place votre serveur Web sur une distribution Debian et vous souhaitez à présent sécuriser votre serveur ? Ce tutoriel informatique va vous expliquer comment faire.

installer un firewall sur debian

Pour ma part, j’ai choisi d’installer un firewall sur Debian (serveur VPS) car j’ai installé un site Web WordPress et pour le moment aucun filtrage ne se fait en entrée sur mon système. Afin d’améliorer la sécurité et de se prémunir de probables intrusions sur notre serveur, nous allons installer un firewall sur Debian. Sous Linux, l’outil permettant de faire ça se nomme « IPtables ».

Tout d’abord, voici quelques lignes de commande IPtables importantes :

Pour lister les règles déjà appliquées :

iptables -L

Pour effacer toutes les règles présentes :

iptables -F

A présent, nous allons créer un fichier nommé « firewall » dans le répertoire « /etc/init.d » (demande les droits root)

touch /etc/init.d/firewall

Dans ce nouveau fichier, renseignez les lignes 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

Le fichier est commenté pour mieux comprendre le rôle de chaque ligne. Vous pourrez facilement adaptez le fichier et les règles en fonction de votre besoin. Le blocage du ping peut par exemple être une sécurité supplémentaire. Si vous souhaitez bloquer le ping entrant et sortant, commentez les deux lignes dans la section « ping ».

Nous devons ensuite rendre le fichier exécutable grâce à la commande suivante :

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

Choisissez alors de démarrer le service créé afin de tester le bon fonctionnement des règles de filtrage :

/etc/init.d/firewall start

Si les règles créées ne conviennent pas et qu’elles bloquent l’accès au serveur, il vous suffira de redémarrer le serveur depuis l’interface de gestion de votre hébergeur et les règles seront effacées. Pourquoi les règles seront-elles effacées ? Car nous n’avons pas configuré le service en démarrage automatique. Si vous êtes certains que vos règles ne sont pas bloquantes pour l’accès à votre serveur, alors nous allons pouvoir passer à l’étape suivante.

Pour lancer le service de manière automatique au démarrage de Debian, entrez la ligne suivante (droits root requis) :

update-rc.d firewall defaults

Redémarrez votre distribution afin de tester le bon fonctionnement de votre firewall :

reboot

Lorsque le système a redémarré, affichez vos règles IPtables en entrant la commande suivante :

iptables -L

Vous devriez retrouver vos règles affichées dans le terminal. Si ce n’est pas le cas, je vous conseille de reprendre point par point les étapes de ce tutoriel.

Vous savez à présent installer un firewall sur Debian et votre serveur est protégé des menaces du Web grâce à un filtrage IPtables effectué sur mesure.

Retrouvez d’avantages de tutoriels informatique sur notre site.

Laisser une réponse

XHTML: Tags utilisables: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*