Ceci est une ancienne révision du document !
Table des matières
EBTABLES
Lien:
EBTABLES est le filtre des trames Ethernet passant par un Bridge:
→EB = Ethernet Bridge ?
EBTABLES fonctionne globalement de la même façon qu'IPTABLES, mais avec la difference que EBTABLES traite des trames Ethernet. Pour traiter de l'IP, il n'y a pas mieux que IPTABLES.
Les exemples qui suivent montrent comment filtrer les trames comme une sorte de firewall.
Configuration du bridge:
3 cartes réseaux:
eth0LAN administration (d'ou j'administre le bridge) eth1WAN filtré (où sont les serveurs) eth2WAN internet (où est le danger)
/etc/network/interfaces:
auto eth0 iface eth0 inet static address 192.168.0.62 netmask 255.255.255.0 broadcast 192.16.0.255 gateway 192.168.0.50
auto br0 iface br0 inet manual bridge_ports eth1 eth2 bridge_stp off # bridge_hello 1 # bridge_maxage 4 bridge_fd 2 bridge_maxwait 0
Initialiser les tables
#!/bin/sh
EBT=/sbin/ebtables
$EBT -F $EBT -X
# this is the default: #$EBT -P INPUT ACCEPT #$EBT -P OUTPUT ACCEPT #$EBT -P FORWARD ACCEPT
# but we want this: $EBT -P INPUT DROP $EBT -P OUTPUT DROP $EBT -P FORWARD DROP
$EBT -t nat -F $EBT -t nat -X $EBT -t nat -P PREROUTING ACCEPT $EBT -t nat -P POSTROUTING ACCEPT $EBT -t nat -P OUTPUT ACCEPT
$EBT -t broute -F $EBT -t broute -X $EBT -t broute -P BROUTING ACCEPT
Les regles DROP ne sont pas les regles par defaut: mais on souhaite filtrer le bridge
Tips
–logical-in ou –logical-out désigne le bridge, par exemple: br0
-i ou -o désigne l'interface matériel, par exemple: eth0
INPUT et OUTPUT...
: je ne vois pas quand elles sont utilisé !
Pour moi, il n'y a que FORWARD …
FORWARD
#BAN = Bridged Area Network BAN_IF=eth1 WAN_IF=eth2 BR_IF=br0
# Accepter toutes les requetes ARP du "BAN" $EBT -A FORWARD -i $BAN_IF -p ARP -j ACCEPT
Exemple:
# Test par IPv4 + MAC $EBT -A FORWARD -i $BAN_IF -p IPv4 -s "00:51:04:65:EF:7C" -j ACCEPT
ou
# Test par IPv4 + MAC + IP $EBT -A FORWARD -i $BAN_IF -p IPv4 -s "00:51:04:65:EF:7C" --ip-src 192.168.0.161 -j ACCEPT
ou
# Test par IPv4 + IP $EBT -A FORWARD -i $BAN_IF -p IPv4 --ip-src 192.168.0.161 -j ACCEPT
Il parait que pour les vieux serveurs (mais que je n'ai jamais connu), il faut faire:
$EBT -A FORWARD -p LENGTH -j ACCEPT
Sans oublier le WAN:
# Accepter toutes les requetes ARP du "WAN"... $EBT -A FORWARD -i $WAN_IF -p ARP -j ACCEPT
# et autoriser tout le reseau WAN $EBT -A FORWARD -i $WAN_IF -p IPv4 -j ACCEPT
Bridge et squid
Non testé mais ici:
http://freshmeat.net/articles/view/1433/
On explique comment intercepter les requetes vers le port 80 et les faire traiter par squid.