[Olug-list] iptables forslag

John L. Fjellstad john-olug@fjellstad.org
Tue, 7 Oct 2003 19:09:34 +0200


=2D----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Heisann Torbj=F8rn,

Her er mitt forslag hvordan du kan skrive om iptables:

red: 10.0.0.0, eth0
orange: 192.168.10.0  eth1
green: 192.168.2.0  eth2

red kan bare starte forbindelse til orange nettverk.
orange kan starte forbindelse til red nettverk.
green kan starte forbindelse til red og orange nettverk.

iptables har tre kjeder, INPUT, FORWARD og OUTPUT
En pakke g=E5r fra INPUT til FORWARD til OUTPUT. I INPUT vet man hvilke
nettverkskort pakken kom fra, men ikke hvilke netverkskort den skal g=E5 ut=
=2E I
OUTPUT vet man hvilke nettverkskort den skal g=E5 ut, men ikke hvor pakken
kommer fra.

Lag 6 nye kjeder, red-in, red-out, orange-in, orange-out, green-in, green-o=
ut.
#/sbin/iptables -N [kjedenavn]

Bind hvert nettverkskort til en kjede slik at det blir lettere =E5 jobbe med
kjedene senere:

/sbin/iptables -A INPUT -i eth0 -j red-in
## dette betyr, legg til kjeden INPUT en regel som gjelder for alle pakker =
som
## kommer fra nettverkskortet eth0 og send dem til red-in kjeden
/sbin/iptables -A INPUT -i eth1 -j orange-in
/sbin/iptables -A INPUT -i eth2 -j green-in
/sbin/iptables -A INPUT -i lo -j green-in
##(lo er den lokale nettverket)

/sbin/iptables -A OUTPUT -o eth0 -j red-out
/sbin/iptables -A OUTPUT -o eth1 -j orange-out
/sbin/iptables -A OUTPUT -o eth2 -j green-out

# la oss ta for oss green f=F8rst, vi stoler p=E5 alt som kommer fra green
# nettverket (du kan forandre p=E5 dette senere)
/sbin/iptables -A green-in -j ACCEPT

#
# la oss si at du senere vil stoppe all ssh trafikk fra green
/sbin/iptables -I green-in 1 --dport ssh -j DROP
# veldig viktig =E5 bruke -I istedenfor -A fordi med -I kan du
# sette inn regler hvor du vil i kjeden. -A vil legge til
# (append) en regel i slutten av kjeden.

# fra orange f=E5r vi bare web og ftp trafikk, s=E5 vi stopper resten
/sbin/iptables -A orange-in -p tcp --sport http -j ACCEPT
/sbin/iptables -A orange-in -p tcp --sport https -j ACCEPT
/sbin/iptables -A orange-in -p tcp --sport ftp -j ACCEPT
/sbin/iptables -A orange-in -p tcp --sport ftp-data -j ACCEPT
# trafikk startet fra green lar vi g=E5 igjennom
/sbin/iptables -A orange-in -d 192.168.2.0/255.255.255.0 -m state --state
ESTABLISHED,RELATED -j ACCEPT
# we lar icmp trafikk gjennom
/sbin/iptables -A orange-in -p icmp -j ACCEPT
/sbin/iptables -A orange-in -j DROP

# fra r=F8d, vi stoler ikke s=E6rlig p=E5 denne
# bare trafikk startet innenfra nettverket lar vi g=E5 igjennom
# vi trenger =E5 forandre litt senere n=E5r vi lar http og ftp trafikk gjen=
nom
/sbin/iptables -A red-in -m state --state ESTABLISHED,RELATED -j ACCEPT
# vi m=E5 la ping svar komme igjennom
/sbin/iptables -A red-in -p icmp --icmp-types echo-reply
/sbin/iptables -A red-in -p icmp --icmp-types destination-unreachable

# n=E5 kikker vi p=E5 trafikk som skal ut gjennom et nettverkskort.
# windows pleier sende denne type trafikk, vi vil ikke sende den ut til
# internett generelt
/sbin/iptables -A red-out -p tcp -m multiport --sports 137,138,139 -j REJECT
/sbin/iptables -A red-out -p udp -m multiport --sports 137,138,139 -j REJECT
/sbin/iptables -A red-out -p tcp -m multiport --dports 137,138,139 -j REJECT
/sbin/iptables -A red-out -p udp -m multiport --dports 137,138,138 -j REJECT
# hvis du vil begrense hva man kan gj=F8re p=E5 internett, s=E5 kan du allt=
id
# legge flere regler her.

# fra orange, vi lar http og ftp trafikk g=E5 igjennom
/sbin/iptables -A orange-out -p tcp --dport http -j ACCEPT
/sbin/iptables -A orange-out -p tcp --dport https -j ACCEPT
/sbin/iptables -A orange-out -p tcp --dport ftp -j ACCEPT
/sbin/iptables -A orange-out -p tcp --dport ftp-data -j ACCEPT
# vi lar ssh sessioner fra green g=E5 gjennom
/sbin/iptables -A orange-out -p tcp -s 192.168.2.0/255.255.255.0 --dport ssh
=2D -j ACCEPT
# vi lar icmp g=E5 igjennom
/sbin/iptables -A orange-out -p icmp -j ACCEPT
# dropper resten
/sbin/iptables -A orange-out -j DROP

# sist, men ikke minst, sett POLICY for INPUT kjeden
# viktig at du gj=F8r dette sist, ellers kan du stenge deg selv ute
/sbin/iptables -P INPUT DROP


La oss n=E5 si at du ikke kan pinge fra green til orange. Du kan legge til =
logg
i kjedene for =E5 se:
/sbin/iptables -I green-in 1 -p icmp -m limit --limit 10/hour --limit-burst=
 5
=2D -m --log-prefix "green-in ping test: " -j LOG
/sbin/iptables -I orange-out 1 -p icmp -m limit --limit 10/hour --limit-bur=
st
5 -m --log-prefix "orange-out ping test: " -j LOG

sjekk /var/log/messages hvordan pakken ser ut. Hvis du bare ser "green-in p=
ing
test", da betyr at en eller annen regel stoppet pakken i green-in. Hvis du
ser begge,da ble pakken stoppet i orange.out

=46or =E5 slette regelen etter at du har brukt den, kan du gj=F8re noe som =
dette:
/sbin/iptables -D orange-out 1

=46or =E5 se hvilken nummer de forskjellige reglene har, kan du skrive dett=
e:
/sbin/iptables -L orange-out --line-numbers

John
=2D----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iEYEARECAAYFAj+C804ACgkQkz0vhQtHHRg3nwCcDK7IfNSk3IctKHvprVCtUwc8
8kgAoOpi0DteYXLHmi53JQ+/6x1aHxwV
=3DO6OL
=2D----END PGP SIGNATURE-----