Shorewall : Différence entre versions
De wikiGite
Ligne 62 : | Ligne 62 : | ||
END [ SHELL ] | END [ SHELL ] | ||
* Les exclusions se font avec le caractère "!" | * 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 | Voir les détails sur http://www.shorewall.net/configuration_file_basics.htm |
Version du 26 avril 2011 à 16:18
Gestion simplifiée de Netfilter (IPTables, filtre de paquets fourni avec le noyau linux).
Installation sur Debian :
apt-get install shorewall
Puis 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 dhcp,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)
Relancer shorewall à chaque modification.
/etc/init.d/shorewall restart
Voir l'application sur les iptables
iptables -L
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