[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: