Queste informazioni sono il contributo di Francois Bayart per aiutare gli
utenti ad impostare un bridge/firewall Linux con il kernel 2.4.x ed
iptables
. L'unico requisito necessario è la patch per il bridge
firewall disponibile presso la pagine web di
Sourceforge
.
Ad esempio, se state usando il kernel 2.4.18, per prima cosa installate il
pacchetto sorgente del kernel, quindi scaricate la patch
e applicatela, come mostrato nell'esempio:
Zipowz:/usr/src# apt-get install kernel-source-2.4.18 Zipowz:/usr/src# cd kernel-source-2.4.18 Zipowz:/usr/src/kernel-source-2.4.18# patch -p1 < ../bridge-nf-0.0.6-against-2.4.18.diff patching file include/linux/netfilter.h patching file include/linux/netfilter_ipv4.h patching file include/linux/skbuff.h patching file net/bridge/br.c patching file net/bridge/br_forward.c patching file net/bridge/br_input.c patching file net/bridge/br_netfilter.c patching file net/bridge/br_private.h patching file net/bridge/Makefile patching file net/Config.in patching file net/core/netfilter.c patching file net/core/skbuff.c patching file net/ipv4/ip_output.c patching file net/ipv4/netfilter/ip_tables.c patching file net/ipv4/netfilter/ipt_LOG.c
Ora configurate il kernel (cioè: make menuconfig, make xconfig). Nella sezione Networking options, abilitate le seguenti opzioni:
[*] Network packet filtering (replaces ipchains) [ ] Network packet filtering debugging (NEW) <*> 802.1d Ethernet Bridging [*] netfilter (firewalling) support (NEW)
Attenzione: dovete disabilitare questa opzione se volete applicare delle regole
di firewall altrimenti iptables
non funzionerà.
[ ] Network packet filtering debugging (NEW)
Dopodiché, aggiungete le opzioni corrette nella sezione IP: Netfilter
Configuration. Quindi, compilate ed installate il kernel. Se volete
farlo alla maniera Debian, installate kernel-package
e
lanciate make-kpkg
per creare un pacchetto del kernel Debian
personalizzato installabile sul server utilizzando dpkg. Una volta che il
nuovo kernel è compilato ed installato, installate il pacchetto
bridge-utils
.
Una volta completati questi passaggi, potete completare la configurazione del vostro bridge. La sezione successiva mostra due diverse possibili configurazioni per il bridge, ognuna con un ipotetica mappa di rete e i comandi necessari.
La prima configurazione utilizza il bridge come un firewall con traduzione degli indirizzi di rete (NAT) che protegge un server ed i clients della LAN interna. Un diagramma della configurazione di rete è mostrato qui sotto:
Internet ---- router ( 62.3.3.25 ) ---- bridge (62.3.3.26 gw 62.3.3.25 / 192.168.0.1) | | |---- WWW Server (62.3.3.27 gw 62.3.3.25) | | LAN --- Zipowz (192.168.0.2 gw 192.168.0.1)
I seguenti comandi mostrano come il bridge può essere configurato:
# Crea l'interfaccia br0 /usr/sbin/brctl addbr br0 # Aggiunge l'interfaccia Ethernet da utilizzare con il bridge /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Lancia l'interfaccia Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # Configurare il bridge ethernet. # Il bridge sarà corretto ed invisibile (firewall trasparente). # Non figura in un traceroute e conserva il vero gateway sugli altri # computer. Ora se volete potete configurare un gateway sul bridge e # sceglierlo come nuovo gateway per altri computer. /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32 # Ho aggiunto questo IP interno per creare il nostro NAT ip addr add 192.168.0.1/24 dev br0 /sbin/route add default gw 62.3.3.25
Una seconda configurazione possibile è un sistema configurato come un firewall trasparente per una LAN con spazio di indirizzi IP pubblici.
Internet ---- router (62.3.3.25) ---- bridge (62.3.3.26) | | |---- WWW Server (62.3.3.28 gw 62.3.3.25) | | |---- Mail Server (62.3.3.27 gw 62.3.3.25)
Le seguenti istruzioni mostrano come sia possibile configurare questo bridge.
# Crea l'interfaccia br0 /usr/sbin/brctl addbr br0 # Aggiunge l'interfaccia Ethernet da utilizzare con il bridge /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 eth1 # Inizializza l'interfaccia Ethernet /sbin/ifconfig eth0 0.0.0.0 /sbin/ifconfig eth1 0.0.0.0 # Configurazione del bridge Ethernet. # Il bridge sarà invisibile e impostato correttamente (firewall trasparente). # Non figura in un traceroute e mantiene il vostro vero gateway sugli altri # computer. Ora, se vorrete, potrete configurare un gateway sul vostro bridge # a sceglierlo come il nuovo gateway per gli altri computer. /sbin/ifconfig br0 62.3.3.26 netmask 255.255.255.248 broadcast 62.3.3.32
Se eseguite un traceroute verso il Linux Mail Server, non vedrete il bridge.
Se volete accedere al bridge con ssh
, dovete avere un gateway,
altrimenti dovreste prima connettervi a un altro server, come il "Mail
Server" e in seguito connettervi al bridge tramite la scheda di rete
interna.
Questo è un esempio delle regole base che si potrebbero usare per queste due configurazioni indistintamente.
iptables -F FORWARD iptables -P FORWARD DROP iptables -A FORWARD -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -m state --state INVALID -j DROP iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Alcune regole interessanti ma non presenti in una configurazione # classica di Iptables... # Limit ICMP # iptables -A FORWARD -p icmp -m limit --limit 4/s -j ACCEPT # Confronta la stringa, un buon metodo, semplice, per bloccare molto # velocemente alcuni VIRUS # iptables -I FORWARD -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe" # Blocca tutte le connessioni di MySQL tanto per essere sicuri iptables -A FORWARD -p tcp -s 0/0 -d 62.3.3.0/24 --dport 3306 -j DROP # Regole per Linux Mail Server # Autorizza FTP-DATA ( 20 ) , FTP ( 21 ) , SSH ( 22 ) iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.27/32 --dport 20:22 -j ACCEPT # Autorizza il Mail Server a connettersi con l'esterno # Da notare: ciò *non* è necessario per le connessioni precedenti # (ricorda: stateful filtering) e quindi può essere rimosso. iptables -A FORWARD -p tcp -s 62.3.3.27/32 -d 0/0 -j ACCEPT # WWW Server Rules # Autorizza connessioni HTTP ( 80 ) con il server WWW iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 80 -j ACCEPT # Autorizza connessioni HTTPS ( 443 ) con il server WWW iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 62.3.3.28/32 --dport 443 -j ACCEPT # Autorizza il server WWW a connettersi con l'esterno # Da notare: ciò *non* è necessario per le connessioni precedenti # (ricorda: stateful filtering) e quindi può essere rimosso. iptables -A FORWARD -p tcp -s 62.3.3.28/32 -d 0/0 -j ACCEPT
Securing Debian Manual
2.96 20 septiembre 2003Sabato, 30 Agosto 2003 18:27:45 +0200jfs@computer.org