Added firewall tutorial
This commit is contained in:
parent
c4719afb59
commit
8721c786ec
|
@ -0,0 +1,98 @@
|
|||
# Gestion du pare-feu
|
||||
Edit: on fera de même avec la commande ip6tables pour gérer les connexions IPv6
|
||||
|
||||
Le pare-feu permet de gérer les connexion au serveur, c'est à dire le réseau sur la machine. Pour cela j'utilise la commande `iptables` pour gérer les connexions IPv4 sur mon infrastructure.
|
||||
|
||||
On commencera par créer un fichier `firewall.sh` que l'on complètera au fur et à mesure.
|
||||
|
||||
On peut commencer par regarder les règles existantes grâce à la commande `iptables -L`. On remarquera que la chaîne `policy ACCEPT` revient souvent, cela veut dire que par défaut toutes les connexions sont acceptées sans restriction. C'est un comportement que nous voudrons changer.
|
||||
|
||||
On va commencer par ajouter dans notre fichier `firewall.sh` la commande `iptables -F` qui va effacer toutes les règles existentes pour partir sur des bases propres. Puis `iptables -X` pour effacer toutes les règles non prédéfinies.
|
||||
|
||||
Ensuite on renseigne les politiques par défaut, nous souhaitons rejeter pour l'entrée, la sortie, et la transmission :
|
||||
```
|
||||
iptables -P OUTPUT DROP
|
||||
iptables -P INPUT DROP
|
||||
iptables -P FORWARD DROP
|
||||
```
|
||||
|
||||
Si on veut continuer à autoriser les connexions déjà établies on peut ajouter :
|
||||
```
|
||||
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
```
|
||||
|
||||
On peut aussi vouloir autoriser toutes les connexions entre les programmes s'exécutant sur la même machine :
|
||||
```
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
iptables -A OUTPUT -o lo -j ACCEPT
|
||||
```
|
||||
|
||||
ensuite il faut autoriser les connexions pour chaque service en entrée : `iptables -A INPUT -p tcp --dport <PORT> -j ACCEPT`, et en sortie : `iptables -A OUTPUT -p tcp --dport <PORT> -j ACCEPT`.
|
||||
|
||||
## Exemple de configuration
|
||||
```
|
||||
#!/bin/sh
|
||||
|
||||
########
|
||||
# IPv4 #
|
||||
########
|
||||
|
||||
# Flush
|
||||
iptables -F
|
||||
iptables -X
|
||||
|
||||
# Politics
|
||||
iptables -P OUTPUT DROP
|
||||
iptables -P INPUT DROP
|
||||
iptables -P FORWARD DROP
|
||||
|
||||
# Established connexions
|
||||
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
|
||||
# Authorize loopback
|
||||
iptables -A INPUT -i lo -j ACCEPT
|
||||
iptables -A OUTPUT -o lo -j ACCEPT
|
||||
|
||||
# SSH
|
||||
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
|
||||
# HTTP(S)
|
||||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
|
||||
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
|
||||
|
||||
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
|
||||
########
|
||||
# IPv6 #
|
||||
########
|
||||
|
||||
# Flush
|
||||
ip6tables -F
|
||||
ip6tables -X
|
||||
|
||||
# Politics
|
||||
ip6tables -P OUTPUT DROP
|
||||
ip6tables -P INPUT DROP
|
||||
ip6tables -P FORWARD DROP
|
||||
|
||||
# Established connexions
|
||||
ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
ip6tables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
|
||||
|
||||
# Authorize loopback
|
||||
ip6tables -A INPUT -i lo -j ACCEPT
|
||||
ip6tables -A OUTPUT -o lo -j ACCEPT
|
||||
|
||||
# SSH
|
||||
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
|
||||
# HTTP(S)
|
||||
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
|
||||
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
|
||||
|
||||
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
```
|
Reference in New Issue