L’installation d’un bridge ethernet sous Linux Debian nécessite l’utilisation du package bridge-utils. Il peut être installé via la commande apt-get.
apt-get install bridge-utils
Configuration du bridge
La configuration du bridge s’effectue au moyen de l’utilitaire brctl.
Il est tout d’abord nécessaire de créer le bridge br0
/usr/sbin/brctl addbr br0
Il faut ensuite ajouter au bridge les interfaces ethernet qui doivent en faire partie.
/usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1
L’adresse 0.0.0.0 est assignée à chaque interface faisant partie du bridge.
/sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0
Puis le bridge lui-même peut être configuré. A ce moment, on peut lui attribuer une adresse IP et définir le masque réseau.
/sbin/ifconfig br0 10.203.16.2 netmask 255.0.0.0 broadcast 10.255.255.255
La passerelle par défaut doit ensuite être définie
/sbin/route add default gw 10.201.16.45
Firewall
Le firewall doit ensuite être mis en place pour assurer le relai et le filtrage des paquets entre les interfaces.
Un script de configuration du firewall (basique) à travers les iptables est fourni ci-dessous.
#!/bin/sh EXT_IF="eth0" INT_IF="eth1" ############################################# # F O R W A R D I N G echo 1 > /proc/sys/net/ipv4/ip_forward ############################################# # A N T I - S P O O F I N G # Je veux pas de spoofing if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] then  for filtre in /proc/sys/net/ipv4/conf/*/rp_filter  do   echo 1 > $filtre  done fi # pas de icmp #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ############################################# # M O D U L E S modprobe ip_tables modprobe ip_nat_ftp modprobe ip_nat_irc modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ipt_state ############################################# # D E F A U L T P O L I C I E S # vidage des règles iptables -F iptables -t nat -F iptables -X iptables -t nat -X # politique par défaut iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # log des paquets droppes iptables -N LOG_DROP iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' iptables -A LOG_DROP -j DROP # log des paquets acceptes iptables -N LOG_ACCEPT iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : ' iptables -A LOG_ACCEPT -j ACCEPT # log des paquets rejectes iptables -N LOG_REJECT iptables -A LOG_REJECT -j LOG --log-prefix '[IPTABLES REJECT] : ' iptables -A LOG_REJECT -j REJECT ############################################# # L O C A L H O S T # allow lo on the router iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ############################################# # N E T B I O S # NETBIOS désactivé iptables -A FORWARD -p udp --dport 137 -j DROP iptables -A FORWARD -p udp --sport 137 -j DROP iptables -A FORWARD -p udp --dport 138 -j DROP iptables -A FORWARD -p udp --sport 138 -j DROP iptables -A FORWARD -p tcp --dport 139 -j DROP iptables -A FORWARD -p tcp --sport 139 -j DROP iptables -A INPUT -p udp --dport 137 -j DROP iptables -A INPUT -p udp --sport 137 -j DROP iptables -A INPUT -p udp --dport 138 -j DROP iptables -A INPUT -p udp --sport 138 -j DROP iptables -A INPUT -p tcp --dport 139 -j DROP iptables -A INPUT -p tcp --sport 139 -j DROP ############################################# # O U T P U T # allow output on the router iptables -A OUTPUT -j ACCEPT ############################################# # I N P U T # allow ICMP replies to the router iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT # allow ssh on the router _itself_ (INPUT!) iptables -A INPUT -p tcp --dport 60022 -m physdev --physdev-in $INT_IF -j ACCEPT iptables -A INPUT -p tcp --dport 60022 -m physdev --physdev-in $EXT_IF -j ACCEPT # allow DNS requests iptables -A INPUT -p udp --sport 53 -m physdev --physdev-in $EXT_IF -j ACCEPT # allow dhcp on the router _itself_ (INPUT!) iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -m physdev --physdev-in $INT_IF -j ACCEPT iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -m physdev --physdev-in $EXT_IF -j ACCEPT # allow DNS Server on the router iptables -A INPUT -p udp --sport 1024: --dport 53 -m physdev --physdev-in $INT_IF -j ACCEPT iptables -A INPUT -p udp --sport 1024: --dport 53 -m physdev --physdev-in $EXT_IF -j ACCEPT # reject all other connections to the router iptables -A INPUT -p tcp -m physdev --physdev-in $EXT_IF -j LOG_DROP iptables -A INPUT -p tcp -m physdev --physdev-in $INT_IF -j LOG_DROP iptables -A INPUT -p udp -m physdev --physdev-in $EXT_IF -j LOG_DROP iptables -A INPUT -p udp -m physdev --physdev-in $INT_IF -j LOG_DROP ############################################# # F O R W A R D iptables -A FORWARD -p tcp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF   -j ACCEPT iptables -A FORWARD -p tcp -m state --state RELATED,ESTABLISHED -m physdev  --physdev-in $EXT_IF --physdev-out $INT_IF -j ACCEPT iptables -A FORWARD -p udp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF   -j ACCEPT iptables -A FORWARD -p udp -m physdev --physdev-in $EXT_IF --physdev-out $INT_IF   -j ACCEPT iptables -A FORWARD -p icmp -m physdev --physdev-in $INT_IF --physdev-out $EXT_IF   -j ACCEPT iptables -A FORWARD -p icmp -m state --state RELATED,ESTABLISHED -m physdev  --physdev-in $EXT_IF --physdev-out $INT_IF -j ACCEPT # reject all other connections iptables -A FORWARD -p tcp -m physdev --physdev-in $EXT_IF -j LOG_REJECT iptables -A FORWARD -p udp -m physdev --physdev-in $EXT_IF -j LOG_REJECT iptables -A FORWARD -p tcp -m physdev --physdev-in $INT_IF -j LOG_REJECT iptables -A FORWARD -p udp -m physdev --physdev-in $INT_IF -j LOG_REJECT
Bonjour,
Je viens de lire l’article et j’ai quelques questions
Dans un bridge, les deux interfaces sont à la fois IN et OUT. De plus, eth0 et eth1 n’ont plus d’adresses IP.
Comment peut on savoir quelle interface est le IN et laquelle le OUT?
Peut-on dire dans la règle IPTABLES ne laisser que tel port utilisé dans les deux sens? sans indiquer les interfaces d’entrée et de sortie
Comment rediriger le port 25 vers une adresse du réseau interne?
Merci pour votre réponse,