Outils personnels

Shorewall : Différence entre versions

De wikiGite

Ligne 44 : Ligne 44 :
 
  NET_OPTIONS=routefilter,routefilter
 
  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)
 
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.
 
Relancer shorewall à chaque modification.

Version du 2 mai 2011 à 14:34

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)

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

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