[linux-l] IP tables
Peter Ross
peter.ross at alumni.tu-berlin.de
Di Dez 17 00:40:47 CET 2002
Hi,
entschuldigt die Verzoegerung. Dieses Wochenende habe ich das Thema etwas
ruhen lassen, zumal ein Anruf vom Chef um Mitternacht, der mich zwei
Stunden gekostet hat, nur um festzustellen, dass alles in Ordnung ist und
er die Floehe hat husten hoeren, mich etwas allergisch gegen weitere
Tastenbetaetigung gemacht hat. Auch kann ich im Alltagsbetrieb meine
Nutzer nicht endlos aergern;-)
Ausserdem bekomme ich den Digest, weil ich der Frage "Moechtest Du Digest
oder lieber Einzelmails? - Ja/Nein?" (oder aehnlich) nicht gewachsen war
und daneben getippt habe.
On Fri, 13 Dec 2002, Kendy Kutzner wrote:
> On 2002-12-13T00:12:57+0000, Peter Ross wrote:
> > seid gegruesst von einem, der Euch schon zehn Stunden voraus ist, da er
> > sich derzeit downunder rumtreibt.
>
> g'day mate, :)
> hoffentlich ist Dir nicht zu warm, wir haben hier zur Zeit eine
> mittlere Kaeltewelle. Wo treibst Du Dich denn rum?
>
Na, halt in Melbourne, Victoria, im "kalten" Sueden. Manchmal weht es
recht kraeftig aus der Antarktis. Nichtsdestotrotz ist das Wetter etwas
waermer als in Berlin, aber nicht warm genug fuer Buschbraende wie weiter
noerdlich:-) Aber heute waren wohl etwas ueber 25 Grad.
> > Die Regeln sind in Shellprozeduren verpackt, aber sinngemaess so zu sehen:
>
> egal, wie sieht denn
> 'iptables -t xxx -L'
> aus fuer xxx={nat, filter, mangle}?
Schicke ich weiter unten.
>
> > iptables -A FORWARD -J LOG
>
> sollte das nicht ein kleines -j sein?
Ja, ich habe das aus dem Gedaechtnis geschrieben, ohne gerade Zugriff auf
den Rechner zu haben.
> es gibt keine policy deny, entweder reject oder drop.
Hier gilt das Gleiche. Bin auch noch FreeBSD-geschaedigt..(grummel: Mit
dem System waere mir auch der Mitternachtsanruf erspart geblieben)
> Ich glaube filter und nat sind Deine Tabellen.
Okay, mehr habe ich auch nicht benutzt. Hier ist filter/FORWARD (INPUT und
OUTPUT sollten fuer den Durchgangsverkehr belanglos sein) und die
nat-Table. Wo sich die Regeln fuer sieben Dienste oder Adressen
wiederholen, habe ich nur ein oder zwei Beispielregeln hier gelassen.
Chain FORWARD (policy ACCEPT 4700 packets, 232K bytes)
pkts bytes target prot opt in out source destination
# Stop spoofing
0 0 LOG all -- eth1 * 192.168.0.0/16 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- eth1 * 192.168.0.0/16 0.0.0.0/0
# Stop private RFC 1918 networks
# (192.168.0.0/16,172.16.0.0/12, 10.0.0.0/8)
0 0 LOG all -- * eth1 0.0.0.0/0 192.168.0.0/16 LOG flags 0 level 4
0 0 LOG all -- eth1 * 192.168.0.0/16 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * eth1 0.0.0.0/0 192.168.0.0/16
0 0 DROP all -- eth1 * 192.168.0.0/16 0.0.0.0/0
# Filter ICMP, drop types 4 5 15 16 17 18, erlaube die anderen
# (im Zweifelsfalle siehe /usr/include/netinet/ip_icmp.h )
3896 1488K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 0
3942 1495K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
0 0 LOG icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 4 LOG flags 0 level 4
0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 4
# Traue einer IPSec-Verbindung
374K 101M ACCEPT all -- ipsec0 eth0 0.0.0.0/0 0.0.0.0/0
431K 310M ACCEPT all -- eth0 ipsec0 0.0.0.0/0 0.0.0.0/0
# Proxies duerfen Port 80 und 443 ohne Proxy.
# Fuer den Rest sind http und https geblockt
# Beispiel Port 80, Port 443 ist genauso.
74075 3492K ACCEPT tcp -- * eth1 192.168.0.219 0.0.0.0/0 tcp dpt:80 state NEW
12 720 ACCEPT tcp -- * eth1 192.168.0.241 0.0.0.0/0 tcp dpt:80 state NEW
11824 568K LOG tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW LOG flags 0 level 4
11824 568K DROP tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW
# Wirf NetBIOS weg, ausser MS weiss eh keiner, warum die Kisten das
# immerzu wollen
0 0 LOG tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpts:137:139 state NEW LOG flags 0 level 4
0 0 DROP tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpts:137:139 state NEW
774 60372 LOG udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp dpts:137:139 state NEW LOG flags 0 level 4
774 60372 DROP udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp dpts:137:139 state NEW
# Wirf MS Messenger weg
111 5328 LOG tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:1863 state NEW LOG flags 0 level 4
111 5328 DROP tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:1863 state NEW
# Das folgende ist ausgehend erlaubt - FTP, shh, telnet etc. pp. ich habe
# mal nach als Beispiel FTP und DNS, das sieht eh immer gleich aus
34 1654 ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
27975 1747K ACCEPT udp -- * eth1 0.0.0.0/0 0.0.0.0/0 udp dpt:53 state NEW
# Die Kiste darf alle TCP/Dienste
162 7722 ACCEPT tcp -- * eth1 192.168.0.219 0.0.0.0/0 tcp dpts:1:65535 state NEW
0 0 ACCEPT tcp -- * eth2 192.168.0.219 0.0.0.0/0 tcp dpts:1:65535 state NEW
# Einige Umleitungen, Beispiel SMTP zum Mailserver
11651 699K ACCEPT tcp -- eth1 * 0.0.0.0/0 192.168.254.2 tcp dpt:25 state NEW
# Was die Firewall schon kennt und akzeptier, soll sie reinlassen
5809K 2442M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
# Der Rest soll geloggt werden
4642 224K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
Dies ist in der NAT-Table
Chain PREROUTING (policy ACCEPT 178K packets, 14M bytes)
pkts bytes target prot opt in out source destination
# Ein paar Umleitungen, als Beispiel der SMTP-Port
11653 699K DNAT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:192.168.254.2
0 0 DNAT tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:192.168.254.2
# Hier das Masquerading fuer ausgehende Verbindungen
Chain POSTROUTING (policy ACCEPT 34387 packets, 6509K bytes)
pkts bytes target prot opt in out source destination
134K 7053K MASQUERADE all -- * eth1 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE all -- * eth2 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 3006 packets, 242K bytes)
pkts bytes target prot opt in out source destination
Die letzte LOG-Regel in der FORWARD-Rule, gedacht als Auffanglager fuer
mir nicht Bekanntes, bekam nur Schrott und Portscans, was ich
bedenkenlos wegwerfen kann, dachte ich.
Also: Default-Policy auf DROP gesetzt und..
Z.B. kein ping mehr nach aussen, obwohl ich ICMP-Type 0 und 8 explizit
erlaube (siehe ICMP-Filter oben..)
Ich habe danach den Verdacht gehabt, dass ich irgendwo einen prinzipiellen
Denkfehler mache.
Ich habe vorher FreeBSD verwendet (darf das aus "politischen" Gruenden
gerade nicht:-( und habe die dortige Logik abgewandelt verwendet.
Was blockt hier das Ping?
Es gruesst Peter
Mehr Informationen über die Mailingliste linux-l