Catalogue des services
Je veux pouvoir proposer les services suivants :
- passerelle VPN,
- service DNS,
- serveur Apache avec une base de données MySQL,
- une PKI (Public Key Infrastructure pour créer et gérer les clés privées / publiques de mon domaine),
- un service SSH par machine,
- un serveur Proxy (qui utilisera Squid).
- un serveur SAMBA pour partager des données avec mon réseau local
Voilà pour commencer.
Services DNS et Proxy
Définition des flux
Un accès aux DNS | un accès à l'internet via un proxy |
On doit avoir une matrice des flux comme suit :
|
LAN |
Internet |
DMZ_PUB |
DMZ_PRIV |
LAN |
|
|
HTTP 80 HTTPS 443 |
DNS |
Internet |
|
|
|
|
DMZ_PUB |
|
HTTP 80 HTTPS 443 |
|
DNS |
DMZ_PRIV |
|
|
|
|
Avec ça, on devrait pouvoir surfer sur Internet !
Mais comment mettre en oeuvre...
Règles à mettre en oeuvre
Comme j'ai déjà présenté dans mes précédentes pages, pour la passerelle simple, on fait exactement la même chose sauf qu'on se retrouve avec plus d'interfaces ! Mais fondamentalement, rien ne change, c'est toujours une histoire de flux qui passe d'un endroit à un autre...
On commence par se connecter sur le pare-feu depuis Dom0 !
# xm console dom_fw |
Ensuite, on pourrait créer un script comme suit :
#! /bin/sh # Activation du forwarding echo 1 > /proc/sys/net/ipv4/ip_forward IPTABLES="/sbin/iptables" # On initialise netfilter, on nettoie, on prépare... $IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle # La police par défaut est, comme toujours, de ne rien laisser passer ! $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT $IPTABLES -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT $IPTABLES -X $IPTABLES -X -t nat $IPTABLES -X -t mangle $IPTABLES -Z # Ensuite on fait du masquerading vers l'interface Internet, toutes les DMZ # et le LAN $IPTABLES -A POSTROUTING -t nat -o eth0 -j MASQUERADE # Et on va autoriser nos divers flux # Tout d'abord le SSH vers notre pare-feu $IPTABLES -A INPUT -s 192.168.100.0/24 -d 192.168.100.254 -p TCP -m state \ --state NEW --dport 22 -j ACCEPT $IPTABLES -A OUTPUT -d 192.168.100.0/24 -s 192.168.100.254 -p TCP -m state \ --state ESTABLISHED,RELATED --dport 22 -j ACCEPT # Ensuite le DNS # depuis le LAN vers la DMZ_Privée $IPTABLES -A FORWARD -s 192.168.100.0/24 -d 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT $IPTABLES -A FORWARD -d 192.168.100.0/24 -s 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT # depuis le LAN DMZ_Privée vers l'Internet $IPTABLES -A FORWARD -s 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT $IPTABLES -A FORWARD -d 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT # depuis la DMZ Publique vers la DMZ Privée $IPTABLES -A FORWARD -s 172.16.50.1 -d 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT $IPTABLES -A FORWARD -d 172.16.50.1 -s 172.16.100.1 -p UDP \ --dport 53 -j ACCEPT # Enfin les flux de type HTTP et HTTPS # depuis le LAN vers la DMZ_Publique $IPTABLES -A FORWARD -s 192.168.100.0/24 -d 172.16.50.1 -p TCP -m state \ --state NEW -m multiport --dport 80,443 -j ACCEPT $IPTABLES -A FORWARD -d 192.168.100.0/24 -s 172.16.50.1 -p TCP -m state \ --state ESTABLISHED,RELATED -m multiport --dport 80,443 -j ACCEPT # depuis la DMZ_Publique vers l'Internet $IPTABLES -A FORWARD -s 172.16.50.1 -p TCP -m state \ --state NEW -m multiport --dport 80,443 -j ACCEPT $IPTABLES -A FORWARD -d 172.16.50.1 -p TCP -m state \ --state ESTABLISHED,RELATED -m multiport --dport 80,443 -j ACCEPT |
Normalement, avec toutes ces règles, on devrait pouvoir surfer !
Pour cela, il faut configurer les postes clients dans le LAN 192.168.100.0/24, comme passerelle 192.168.100.254. Le DNS doit être 172.16.100.1.