25 avril 2024

Tuto Virtualisation : Partie IV, Firewall

EDIT 2018 : Retrouvez cette série de tuto dans une grosse mise à jour ici : Xen et OpenVswitch sont dans une Debian 9 – V.2018

Quatrième partie du tutoriel sur la virtualisation « Xen et OpenVswitch sont dans une Debian« .
Dans la partie précédente, nous avons mis en place notre réseau de trois VMs et configuré le tout.
Nous allons maintenant nous occuper de mettre en place les firewalls sur les deux machines exposées au net : le Dom0 et le routeur.

I – DOM0

Dans un fichier /etc/init.d/firewall, mettez cela :

#!/bin/bash
# On purge
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
# Interdire toute connexion entrante, sortante ou forwardee
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
# Autoriser ping
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
# Autoriser les connexions deja effectuees et les retours.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Autoriser le port 23 (notre port ssh) en entrée
iptables -t filter -A INPUT -p tcp --dport 23 -j ACCEPT
# Autoriser le dom0 a faire des requetes DNS, HTTP, NTP
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
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 OUTPUT -p udp --dport 123 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 123 -j ACCEPT
# Autoriser les Domus a demander le ntp
iptables -t filter -A INPUT -p udp -s 10.99.1.0/24 --dport 123 -j ACCEPT
iptables -t filter -A INPUT -p tcp -s 10.99.1.0/24 --dport 123 -j ACCEPT
# Autoriser le ssh depuis le dom0 vers les domus
iptables -t filter -A OUTPUT -d 10.99.1.0/24 -p tcp --dport 22 -j ACCEPT
echo - OK

Puis :

dom0# chmod +x /etc/init.d/firewall
dom0# insserv firewall

On exécute pour l’appliquer de suite :

dom0# /etc/init.d/firewall

Voila qui configure un firewall simple mais efficace (on l’améliorera dans de futurs tutoriels)

II – VM Routeur

Un peu sur le même principe, avec les règles de forward déjà saisies avant.

dom0# ssh 10.99.1.2

Dans un fichier /etc/init.d/firewall, mettez cela :

#!/bin/bash
 # On purge
 iptables -t filter -F
 iptables -t filter -X
 iptables -t nat -F
 iptables -t nat -X
 # Interdire toute connexion entrante, sortante ou forwardee
 iptables -t filter -P INPUT DROP
 iptables -t filter -P FORWARD DROP
 iptables -t filter -P OUTPUT DROP
 # Autoriser les connexions deja effectuees et les retours.
 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
 # Autoriser loopback
 iptables -t filter -A INPUT -i lo -j ACCEPT
 iptables -t filter -A OUTPUT -o lo -j ACCEPT
 # Autoriser ping
 iptables -t filter -A INPUT -p icmp -j ACCEPT
 iptables -t filter -A OUTPUT -p icmp -j ACCEPT
 # Autoriser la connexion ssh depuis le dom0
 iptables -t filter -A INPUT -p tcp -s 10.99.1.1 --dport 22 -j ACCEPT
 # Autoriser le routeur a faire des requetes DNS, HTTP, NTP (uniquement vers le dom0)
 iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 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 OUTPUT -p udp -d 10.99.1.1 --dport 123 -j ACCEPT
 # Autoriser les pings VM->EXT
 iptables -t filter -A FORWARD -p icmp -s 10.2.1.0/24 -j ACCEPT
 iptables -t filter -A FORWARD -p icmp -s 10.10.1.0/24 -j ACCEPT
 # Autoriser les requetes DNS VM->EXT
 iptables -t filter -A FORWARD -p udp -s 10.2.1.0/24 --dport 53 -j ACCEPT
 iptables -t filter -A FORWARD -p udp -s 10.10.1.0/24 --dport 53 -j ACCEPT
 # Autoriser les requetes HTTP VM->EXT
 iptables -t filter -A FORWARD -p tcp -s 10.2.1.0/24 --dport 80 -j ACCEPT
 iptables -t filter -A FORWARD -p tcp -s 10.10.1.0/24 --dport 80 -j ACCEPT
 # Transfert du port 80 vers 10.10.1.10 et autorisation
 iptables -t nat -A PREROUTING -i eth0 -d IPFAILOVER -p tcp --dport 80 -j DNAT --to-destination 10.10.1.10
 iptables -t filter -A FORWARD -p tcp -d 10.10.1.10 --dport 80 -j ACCEPT
 # Tout ce qui vient des VMS et est autorise est POSTROUTE pour sortir
 iptables -t nat -A POSTROUTING -o eth0 -s 10.2.1.0/24 -j SNAT --to IPFAILOVER
 iptables -t nat -A POSTROUTING -o eth0 -s 10.10.1.0/24 -j SNAT --to IPFAILOVER
echo - OK

Puis :

routeur# chmod +x /etc/init.d/firewall
routeur# insserv firewall

On exécute pour l’appliquer de suite :

routeur# /etc/init.d/firewall

On pourrait s’attarder aussi sur les autres VMs, mais ce n’est pas une priorité. On va déjà mettre en place nos différents services.
De plus, ces deux Firewalls seront retouchés. On reviendra donc la dessus plus tard, mais on a déjà une protection basique en place.
Mais avant tout, on va se replonger dans notre architecture dans la Partie V : Un nouveau VLAN.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *