Mise en place d'un shorewall simple WAN LAN DMZ
Dans notre cas nous allons prendre une livebox pour le WAN:
|---------------------------------------------------------------| | | | | | INTERNET --> LIVEBOX --> FWALL --> LAN | | | | | | | | v | | DMZ | | | | | |---------------------------------------------------------------|
Sur la livebox le fwall doit est déclarée en DMZ
A noter que la partie WAN on peut être en dhcp. En effet cela est intéressant lors de remplacement de box orange (la conf est rarement rétablie ...)
Configurer votre fichier interface:
# WAN auto eth0 iface eth0 inet dhcp # LAN LOC auto eth1 iface eth1 inet static address 172.20.0.254 netmask 255.255.0.0 #DMZ auto eth2 iface eth2 inet static address 172.31.0.254 netmask 255.255.0.0
Installer donc shorewall :
apt-get update apt-get install shorwall
On va avant toute chose renseigner quelques variables dans le fichiers /etc/shorewall/params:
WAN_IF="eth0" LOC_IF="eth1" DMZ_IF="eth2" LOC="172.20.0.0/16" DMZ="172.31.0.0/16"
Ensuite nous allons déclarer nos zones dans le fichiers /etc/shorewall/zones
fw firewall net ipv4 loc ipv4 dmz ipv4
Nous allons ensuite déclarer nos différentes interface et leur zone associée dans /etc/shorewall/interfaces :
net $WAN_IF detect dhcp,tcpflags,nosmurfs,logmartians dmz $DMZ_IF detect routeback loc $LOC_IF detect routeback
On va maintenant activer forward de paquet:
On bascule dans le fichier /etc/shorewall/shorewall.conf
IP_FORWARDING=Yes
Puis on va définir le masq: (on indique que si loc essaie de sortir par l'interface wan, son adresse ip source sera remplacée )
$WAN_IF $LOC
Puis on définis dans le fichier /etc/shorewall/policy les règles par défaut entre les différente zones (on est très restrictif par défaut):
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST fw all ACCEPT loc fw ACCEPT all all REJECT debug
Puis dans le fichier /etc/shorewall/rules on peu définir des choses plus précise.
Le fichiers rules prend le dessus sur le fichier policy
ACCEPT all fw icmp
Pour le fichier rules la bonne méthode a appliquer c'est le stocker en variable les différente chose dont on a besoin dans le fichiers params
Sommaire
Exemple d'utilisation
SRVPROXY="172.30.1.8" SRVADS="172.30.1.1" SRVWEB="172.31.0.10" NET_PEDAGO="172.28.0.0/16" NET_SRV="172.30.0.0/16" NET_DMZ="172.31.0.10" SRVMICROSOFT="3.6.53.5"
Fichiers rules:
ACCEPT loc all icmp ACCEPT loc net icmp ACCEPT loc:$SRVPROXY net tcp 80,443 ACCEPT dmz loc udp 53 ACCEPT loc:$SRVADS net udp 53 DNAT net loc:$SRVWEB:443 tcp 443 DNAT net loc:$SRVWEB:80 tcp 80 ACCEPT loc net:$SRVMICROSOFT tcp
Pour vérifier la conf
shorewall check
Pour appliquer la conf
shorewall restart
Pour appliquer la conf mais où shorewall demande une vérif a la fin
Comme un restart sauf qu'a la fin shorewall demande d'appuyer sur yes pour vérifier si vous êtes toujours là
En cas de non réponse shorewall rappliquera la conf précédente
shorewall safe-restart
Coeur de réseau
Dans l'exemple ci-dessus je fonctionne avec un coeur de réseau
|---------------------------------------------------------------| | OTHER_NET | | ^ | | | | | INTERNET --> LIVEBOX --> FWALL --> COEUR --> NET_SRV | | | | | | | | | | v | | | DMZ v | | NET_PEDAGO | | | |---------------------------------------------------------------|
Pour ajouter les route retour sur mon fwall rdv dans /etc/network/interface:
up route add -net 172.28.0.0/16 gw 172.20.0.253 dev eth1 up route add -net 172.30.0.0/16 gw 172.20.0.253 dev eth1
Et également n'oubliez pas d'ajouter le masquerading dans /etc/shorewall/masq
$WAN_IF $NET_PEDAGO $WAN_IF $NET_SRV
Et bien évidement ajouter les routes dans le cœur de réseau, si c'est le seul coeur de réseau ce sera donc la route 0.0.0.0/0 vers le fwall
Et donc pour utiliser des vlan
On a fait un vlan wifi sur le coeur de réseau:
Donc un vlan sur l'id 100:
auto eth1.100 iface eth1.100 inet static address 172.23.0.254 netmask 255.255.0.0
Puis on reprend la procédure précédente:
On déclare l'interface et le sous réseau dans le fichiers params
WIFI_IF="eth0" WIFI="172.31.0.0/16"
Puis on défini la nouvelle zone wifi (fichiers zones) :
wifi ipv4
Puis on défini dans quelle zone va être l'interface (fichiers interfaces) :
wifi $WIFI_IF detect routeback
Si on définis le masq :
$WAN_IF $WIFI