Re: Meine Firewall
Hallo Hermann,
Am Tue, Jan 08, 2008 at 03:03:49PM +0100, schrieb Hermann Schuster:
> Hallo
[...]
>
> Ich hatte zwei Ziele:
> 1) Es sollen zum Server nur Packete durchgelassen werden, die ich
> auch veranlasst habe. (Sonst kein Zugriff vom Internet aus)
> Es sollen nur Packete in das Netzwerk eingelassen werden,
> die als Reaktion auf eine Datenanforderung gesendet wurden
>
> 2) Es sollen auch nur solche Pakete zum lokalen Netz gelassen werden,
> die ich auch veranlasst habe. s.o.
>
> Mein Netzwerk:
>
>
> INTERNET
> |
> ==================================================
> Server 192.168.22.1 (eth0) =
> NetwerkKarte zum Internet(ppp0) =
> 192.168.0.1 NetwerkKarte zum lokalen Netz =
> (gateway) saturn.local (eth1) =
> ==================================================
> |
> |
> =================================================
> Jupiter.local 192.168.0.2
> =================================================
Was verbindet den Server zum Internet eth0 oder ppp0? Wobei
192.168.xxx.xxx nur als lokale Adressen zugelassen sind. Aber das weißt
Du sicher.
>
> Ich habe dazu folgendes Script abgeschrieben. (Aus Linux-Buch von Kofler)
>
> #!/bin/bash
> # Dieses Script wird gebraucht, um internet fuer die Clients
> # zur Verfügung zu stellen.
> #
> # Script schaltet Masqierung ein
> modprobe ipt_MASQUERADE
> # modul laden
> /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
> # forwarding
> echo "1" > /proc/sys/net/ipv4/ip_forward
> # dynamische adressen verwalten
> echo "7" > /proc/sys/net/ipv4/ip_dynaddr
> #
> # Packetfilter:
> #####################################################
> # Schritt 1 Sichern von Server (ppp0)
> iptables -N wall
> iptables -A wall -m state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -A wall -m state --state NEW -i ! ppp0 -j ACCEPT
Wozu brauchst Du diese selbstdefinierte Kette? Das kannst Du alles der
INPUT- bzw. OUTPUT-chain übergeben.
> iptables -A INPUT -m limit -j LOG --log-prefix "FireWall1: "
> iptables -A wall -j DROP
> iptables -A INPUT -j wall
> iptables -A FORWARD -j wall
Ordne vorallem die erstellten Ketten - für Dich zum Überblick (s.u.)
Hier z.B. wird etwas an die INPUT-chain gehängt, dann wird alles in
der wall-chain gedroppt. Danach das Paket von der INPUT-chain an die
wall-chain gegeben. Nun ist die FORWARD-chain mit einer Regel dran.
Danach folgt hier unten erst die Policity für die FORWARD-chain.
> # Schritt 2 sichern des lokalen Netwerkes. (eth1)
> iptables -P FORWARD DROP
Setze die Policies für alle Ketten an den Anfang des Packetfilters. Die
Policies auf DROP zu setzen ist ein guter Ansatz.
Danach baust Du die Ketten, in denen Du die Ausnahmen erlaubst, wie z.B.
in der folgenden FORWARD-chain. Am Ende jeder Kette kannst Du zur
Vorsicht noch einmal alles das droppen, was nicht von Dir erlaubt wird.
Also z.B. iptables -A FORWARD -j DROP. Wie gesagt, ans Ende. Denn die
Kette wird von oben nach unten durchgearbeitet, ob eine Regel paßt. Und
eben genannte Regel paßt immer, also wird alles verworfen.
Günstig ist vielleicht zu überlegen, welche Ports Du auf dem Server für
wen freigeben willst. Also soll z.B. der ssh-Zugriff für die
Server-Wartung nur von einem bestimmten Rechner erfolgen? Dann den Port
auch nur für diesen Rechner freigeben. O.K du hast oben nur einen
Rechner als Client im lokalen Netzwerk angegeben.
> iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
> iptables -A FORWARD -i ppp0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -A FORWARD -m limit -j LOG --log-prefix "Forward:"
> #
> # ende von: Packetfilter.sh
> #
> exit 0
>
>
> Ist das so richtig.? Oder habe ich da was falsch verstanden.?
>
> Tschau
> Hermann
Gruß Thomas
Reply to: