firewall

Usage simple d'un firewall sous linux

iptables est l'outil linux pour gérer les règles de filtrage des paquets. Voici comment implémenter un firewall avec une activation au boot. Pour Debian Stretch (systemd).

Règles du firewall /etc/firewall/start.sh

 1#!/bin/sh
 2#
 3# Activation du firewall
 4#
 5
 6ipt="/sbin/iptables"
 7[ ! -x "$ipt" ] && { echo "$0: \"${ipt}\" introuvable"; exit 1; }
 8
 9# Vider les tables actuelles
10$ipt -F
11# Vider les règles personnelles
12$ipt -X
13
14# Interdire toute connexion entrante et sortante
15$ipt -P INPUT DROP
16$ipt -P FORWARD DROP
17$ipt -P OUTPUT DROP
18
19# ---
20
21# Ne pas casser les connexions établies
22$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
23$ipt -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
24
25# Autoriser loopback
26$ipt -A INPUT -i lo -j ACCEPT
27$ipt -A OUTPUT -o lo -j ACCEPT
28
29# Autoriser ICMP (ping)
30$ipt -A INPUT -p icmp -j ACCEPT
31$ipt -A OUTPUT -p icmp -j ACCEPT
32
33# ---
34
35# HTTP+HTTPS In (Ex: Icecast)
36$ipt -A INPUT -p --dport 80 -j ACCEPT
37$ipt -A INPUT -p --dport 443 -j ACCEPT
38
39# SSH entrant de l'ip x.x.x.x
40$ipt -A INPUT -p tcp -s x.x.x.x --dport 22 -j ACCEPT
41
42# SSH out (bitbucket ...)
43$ipt -A OUTPUT -p tcp --dport 22 -j ACCEPT
44
45# NTP In
46$ipt -A INPUT -p udp --dport 123 -s 192.168.10.0/24  -j ACCEPT
47
48# DNS OUT
49$ipt -A OUTPUT -p udp --dport 53 -j ACCEPT
50$ipt -A OUTPUT -p tcp --dport 53 -j ACCEPT
51
52# HTTP + HTTPS Out
53$ipt -A OUTPUT -p tcp --dport 80 -j ACCEPT
54$ipt -A OUTPUT -p tcp --dport 443 -j ACCEPT
55
56# HTTP In que pour l'ip x.x.x.x
57$ipt -A INPUT -p tcp -s x.x.x.x --dport 80 -j ACCEPT
58
59# Samba à partir du réseau local
60$ipt -A INPUT -p tcp -s 192.168.10.0/24 --dport 135:139 -j ACCEPT
61$ipt -A INPUT -p udp -s 192.168.10.0/24 --dport 135:139 -j ACCEPT
62$ipt -A INPUT -p tcp -s 192.168.10.0/24 --dport 445 -j ACCEPT
63$ipt -A INPUT -p udp -s 192.168.10.0/24 --dport 445 -j ACCEPT
64
65$ipt -A OUTPUT -p tcp -s 192.168.10.0/24 --dport 135:139 -j ACCEPT
66$ipt -A OUTPUT -p udp -s 192.168.10.0/24 --dport 135:139 -j ACCEPT
67$ipt -A OUTPUT -p tcp -s 192.168.10.0/24 --dport 445 -j ACCEPT
68$ipt -A OUTPUT -p udp -s 192.168.10.0/24 --dport 445 -j ACCEPT
69
70#LOG
71$ipt -A INPUT -j LOG --log-prefix "IPTables : "

Pour activer ces règles, exécutez en root /etc/firewall/start.sh Attention de ne pas couper la branche sur laquelle vous êtes !

Stopper le firewall /etc/firewall/stop.sh

 1#!/bin/sh
 2#
 3# Désactivation du firewall
 4#
 5
 6ipt="/sbin/iptables"
 7[ ! -x "$ipt" ] && { echo "$0: \"${ipt}\" introuvable"; exit 1; }
 8
 9$ipt -P INPUT ACCEPT
10$ipt -P FORWARD ACCEPT
11$ipt -P OUTPUT ACCEPT
12$ipt -F
13$ipt -X
14$ipt -t nat -F
15$ipt -t nat -X
16$ipt -t mangle -F
17$ipt -t mangle -X
18$ipt iptables -t raw -F
19$ipt -t raw -X

Pour stopper le firewall et libérer toutes les règles, exécutez en root /etc/firewall/stop.sh

Utilisation de systemd pour la persistance au démarrage : /etc/systemd/system/firewall.service

1[Unit]
2Description=Add Firewall Rules to iptables
3
4[Service]
5Type=oneshot
6ExecStart=/etc/firewall/start.sh
7
8[Install]
9WantedBy=multi-user.target

Activer le service au boot :

1systemctl enable firewall.service

lister les règles de filtrages actives :

1iptables -L
comments powered by Disqus