Shorewall : Différence entre versions
De wikiGite
Ligne 1 : | Ligne 1 : | ||
Gestion simplifiée de Netfilter (IPTables, filtre de paquets fourni avec le noyau linux). | Gestion simplifiée de Netfilter (IPTables, filtre de paquets fourni avec le noyau linux). | ||
− | Installation sur Debian | + | = Installation sur Debian = |
apt-get install shorewall | apt-get install shorewall | ||
− | + | ||
+ | = Configuration = | ||
+ | Dans /etc/shorewall créer les fichiers : | ||
* zones | * zones | ||
#ZONE TYPE OPTIONS IN OUT | #ZONE TYPE OPTIONS IN OUT | ||
Ligne 15 : | Ligne 17 : | ||
* interfaces | * interfaces | ||
#ZONE INTERFACE BROADCAST OPTIONS | #ZONE INTERFACE BROADCAST OPTIONS | ||
− | net eth1 detect | + | net eth1 detect routefilter |
loc eth0 detect | loc eth0 detect | ||
drbd eth3 detect | drbd eth3 detect | ||
Ligne 53 : | Ligne 55 : | ||
iptables -L | iptables -L | ||
− | ''' | + | = TIPS = |
+ | == FORWARD:REJECT == | ||
+ | Si des messages de la forme | ||
+ | kernel: Shorewall:FORWARD:REJECT:IN=vmbr0 OUT=vmbr0 PHYSIN=bond0 PHYSOUT=vmtab103i0d0 SRC=10.0.0.248 DST=10.0.0.254 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=29232 SEQ=15 | ||
+ | apparaissent, c'est qu'on essaie de faire discuter une zone avec elle-même (typiquement : shorewall installé sur un host KVM, les paquets arrivent sur son interface bridge vmbr0 à destination d'un machine virtuelle, via cette même interface vmbr0). | ||
+ | |||
+ | Dans ce cas, dans le fixhier interfaces remplacer '''routefilter''' par | ||
+ | loc vmbr0 detect '''routeback''' | ||
+ | = NOTES = | ||
* Les scripts sont interprétés, on peut donc y insérer du code. Par exemple dans rules : | * Les scripts sont interprétés, on peut donc y insérer du code. Par exemple dans rules : | ||
SHELL for z in net loc dmz; do echo "ACCEPT $z fw tcp 22"; done | SHELL for z in net loc dmz; do echo "ACCEPT $z fw tcp 22"; done |
Version du 2 mai 2011 à 17:31
Gestion simplifiée de Netfilter (IPTables, filtre de paquets fourni avec le noyau linux).
Installation sur Debian
apt-get install shorewall
Configuration
Dans /etc/shorewall créer les fichiers :
- zones
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 drbd ipv4 #dmz ipv4
"fw" désigne la machine elle-même. Relier ces zones à des cartes réseau :
- interfaces
#ZONE INTERFACE BROADCAST OPTIONS net eth1 detect routefilter loc eth0 detect drbd eth3 detect #dmz eth2 detect
Ici la carte eth3 est reliée en direct à un autre serveur pour un cluster DRBD. Il n'y a pas de zone DMZ. Indiquer ensuite la politique par défaut de chaque zone :
- policy
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net ACCEPT fw loc ACCEPT fw net ACCEPT drbd fw ACCEPT net all DROP info all all REJECT info
Il faut se souvenir que les paquets en sortie (de "fw" vers internet ou le réseau local) sont aussi bloqués par défaut. Soit on déclare une politique "ACCEPT" du serveur vers l'extérieur, soit il faudra penser à créer des règles dans les 2 sens si nécessaire.
- rules
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE # PORT(S) PORTS(S) DEST LIMIT ACCEPT net fw tcp 22 - - 1/min:3 ACCEPT net fw tcp 80,443 ACCEPT net fw udp 53 Ping/ACCEPT net fw #Ping/ACCEPT fw net
La première règle limite à une connexion ssh par minute (avec un burst de 3/minute) venant de la même IP (évite les attaques SSH). L'avant-dernière utilise une macro ("Ping") pour éviter d'avoir à gérer les types de paquets de protocoles (icmp 8, 13, etc...). La dernière ligne n'est pas nécessaire puisqu'on a une politique "ACCEPT" du firewall vers l'extérieur.
- Optionnel : params
NET_IF=eth0 NET_BCAST=130.252.100.255 NET_OPTIONS=routefilter,routefilter
Permet de définir des variables shell utilisées dans les autres scripts (ici on utilisera $NET_IF, ou $NET_OPTIONS)
Enfin, éditer /etc/default/shorewall, et modifier la ligne startup
startup=1
Relancer shorewall à chaque modification.
/etc/init.d/shorewall restart
Voir l'application sur les iptables
iptables -L
TIPS
FORWARD:REJECT
Si des messages de la forme
kernel: Shorewall:FORWARD:REJECT:IN=vmbr0 OUT=vmbr0 PHYSIN=bond0 PHYSOUT=vmtab103i0d0 SRC=10.0.0.248 DST=10.0.0.254 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=29232 SEQ=15
apparaissent, c'est qu'on essaie de faire discuter une zone avec elle-même (typiquement : shorewall installé sur un host KVM, les paquets arrivent sur son interface bridge vmbr0 à destination d'un machine virtuelle, via cette même interface vmbr0).
Dans ce cas, dans le fixhier interfaces remplacer routefilter par loc vmbr0 detect routeback
NOTES
- Les scripts sont interprétés, on peut donc y insérer du code. Par exemple dans rules :
SHELL for z in net loc dmz; do echo "ACCEPT $z fw tcp 22"; done
est équivalent à
ACCEPT net fw tcp 22 ACCEPT loc fw tcp 22 ACCEPT dmz fw tcp 22
Si le script prend plusieurs lignes, on peut utiliser :
BEGIN SHELL <shell script> END [ SHELL ]
- Les exclusions se font avec le caractère "!"
- On peut créer des macros. Par exemple macro.WEB :
#ACTION SOURCE DEST PROTO DEST SOURCE RATE USER/ # PORT(S) PORT(S) LIMIT GROUP PARAM - - tcp 80 # HTTP (plaintext) PARAM - - tcp 443 # HTTPS (over SSL)
Pourra ensuite être utilisée dans "rules" :
WEB(ACCEPT) net fw
Voir les détails sur http://www.shorewall.net/configuration_file_basics.htm