Firewall

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Firewall

Beitrag von za0 » 26.09.2008 18:42:23

Hi,

ich habe davon leider weniger Ahnung.

Wie kann man die Firewall so konfigurieren, dass ich an einen bestimmten lokalen Port 1234 nur von drei externen IP-Adressen 123.123.123.121,
123.123.123.122,
123.123.123.123 dran komme?

Danke!

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Re: Firewall

Beitrag von chroiss » 26.09.2008 20:12:09

Code: Alles auswählen

$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.121/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.122/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.123/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234  -j DROP
gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Re: Firewall

Beitrag von za0 » 26.09.2008 20:18:14

Hi und danke Dir, chroiss!!! :mrgreen:

Wie kann ich das jetzt abspeichern (falls das System mal rebootet werden muss)? Ich muss das doch nicht etwa in die rc.local packen, oder?

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Re: Firewall

Beitrag von chroiss » 26.09.2008 20:29:29

Wenn das alle Regeln sollen sein, dann so .

Datei unter /etc/init.d/

anlegen (Beispiel fuer den Namen der Datei "firewall") ;-) .

Code: Alles auswählen

chmod 755 /etc/init.d/firewall
Und dann z.b. mit dem praktischen Tool rcconf die runlevels so setzen (also einfach nur anhaken), dass es beim start automatisch ausgeführt wird.

Code: Alles auswählen

#!/bin/bash

EXTDEV=ppp0 # Externes device zum internet
IPTABLES=`which iptables`
test -f $IPTABLES || exit 0

case "$1" in

start)
        echo "-.-.-.Starte Firewall-.-.-."
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.121/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.122/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234 -s 123.123.123.123/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 1234  -j DROP
;;

stop)
        echo "-.-.-.Stoppe Firewall-.-.-."
        $IPTABLES -t nat -F
        $IPTABLES -t filter -F
        $IPTABLES -X
        $IPTABLES -P INPUT ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        $IPTABLES -P FORWARD ACCEPT
;;
*)
        echo "Usage: /etc/init.d/firewall (start|stop)"
        exit 1
        ;;

esac

exit 0
gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Firewall

Beitrag von Danielx » 26.09.2008 20:34:50

Damit ist der Zugriff auf den Port 1234 zwar auf die drei IPs begrenzt, aber alle anderen Ports sind von außen offen.

Hast du denn schon eine Firewall laufen?

Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Re: Firewall

Beitrag von za0 » 26.09.2008 21:22:47

Danke@chroiss
danielx: Nein, sie ist noch nicht eingerichtet. Ich nehme an, dass ich da jetzt noch die ganzen anderen Regeln reinklatschen muss.
Zuletzt geändert von za0 am 26.09.2008 22:23:35, insgesamt 1-mal geändert.

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

Benutzeravatar
chroiss
Beiträge: 332
Registriert: 29.10.2004 09:29:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: BREMEN (in Wellington,NZ a.D) (in OLDENBURG a.D.) (in BREMEN a.D.) (in COLOGNE a.D.)

Re: Firewall

Beitrag von chroiss » 26.09.2008 21:36:57

@dalienx
Damit ist der Zugriff auf den Port 1234 zwar auf die drei IPs begrenzt, aber alle anderen Ports sind von außen offen.
->
Wenn das alle Regeln sollen sein, dann so .
@za0
Ich nehme an, dass ich da jetzt noch die ganzen anderen Regeln reinklatschen muss.
Richtig.

gruss chroiss
"The only secure computer is one that's unplugged, locked in a safe, and buried 20 feet under the ground in a secret location... and I'm not even too sure about that one"--Dennis Huges, FBI.

Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Re: Firewall

Beitrag von za0 » 26.09.2008 22:35:26

Hi Leute,

ist es vielleicht möglich eine elegantere Lösung für mehrere Ports zu finden (ohne tonnenweises copy+paste), so in der Art wie

ein Port_Array und eine Schleife, die für jeden Port, der im Arrayfeld i liegt, einmal die paar Regeln für die drei IPs durchläuft?

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Firewall

Beitrag von Danielx » 26.09.2008 23:36:29

Port-Range: 1234 bis 5678
Ports: 4567 und 8910
IP-Range: 123.123.123.121 bis 123.123.123.123

Alles in einer Zeile:

Code: Alles auswählen

$IPTABLES -A INPUT -i $EXTDEV -p TCP -m multiport --dports 4567,8910,1234:5678 -m iprange --src-range 123.123.123.121-123.123.123.123 -m state --state NEW -j ACCEPT
:D

Gruß,
Daniel

Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Re: Firewall

Beitrag von za0 » 27.09.2008 16:19:24

Hi Daniel,

:hail: C00L!

Danke. :mrgreen:

Ich dachte aber an ein komfortabel einstellbares Script, wo man die IPs und die Ports in zwei Arrays packt und eine Schleife (bzw. 2 Schleifen) einmal IPTABLES mit den entsprechenden Parametern für alle in den Arrays angegebenen Werte durchgehen.

BTW: Kennt jemand ein wirklich gutes Tutorial zum Scripting mit SH und IPTABLES :?:

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

pingu!
Beiträge: 111
Registriert: 12.09.2005 21:43:45

Re: Firewall

Beitrag von pingu! » 27.09.2008 16:48:52

Hi,
Iptables und scripts sind 2 grundlegend verschiedene dinge...
Itables ist für packetfiltering / nat etc und ist im kernel implementiert. Dort funktionieren keine arrays, schleifen und andere sachen die du vielleicht von der programmierung her kennst.
Der Kernel schaut dann jedes packet an, dass über die tcp/udp verbinung reinkommt und vergleicht diese mit den regeln, die du mit iptables festlegst. Wenn das packet angenommen wird (-j ACCEPT) wird es weiter geschickt. Mit -j DROP werden diese gelöscht und mit - REJECT werden sie zurück geschikt.
Du kann mit shell scripts iptables bedingungen festlgegen und diese dann während dem boot prozess starten (oder auch manuell, wenn gewünscht)
Vielleicht hilft dir die Dokumentation von Netfilter weiter: http://www.netfilter.org/documentation/ ... tion-howto
Gruss pingu!

Benutzeravatar
za0
Beiträge: 816
Registriert: 09.07.2005 00:14:18
Wohnort: das 4. Reich der GEZ

Re: Firewall

Beitrag von za0 » 27.09.2008 18:53:22

Hi Pingu!,

ich meinte das eher so:

Code: Alles auswählen

#!/bin/sh

###PSEUDO CODE!!!

IPS[]={"1.1.0.1","1.2.22.9","192.168.0.11"}
PORTS[]={21,22,443}

## für jeden port mit index x=0, ... im array soll .....
for PORTS[x] do {
     for IPS[y] do { # .... jede y-te IP aus dem array einmal eingestellt werden
          $IPTABLES -A INPUT -i $EXTDEV -p TCP --dport PORTS[x] -s IPS[y]/32 -m state --state  NEW -j ACCEPT
     }
# es wird ausgeschlossen, dass sonst eine ip auf den x-ten port aus dem array zugreifen kann
$IPTABLES -A INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport PORTS[x]  -j DROP
}
exit 0;
DAS OBEN ist äquivalent zu dem hier:

Code: Alles auswählen

$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 21 -s 1.1.0.1/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 21 -s 1.2.22.9/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 21 -s 192.168.0.11/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 21  -j DROP

$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 22 -s 1.1.0.1/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 22 -s 1.2.22.9/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 22 -s 192.168.0.11/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 22  -j DROP

$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 443 -s 1.1.0.1/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 443 -s 1.2.22.9/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 443 -s 192.168.0.11/32 -m state --state  NEW -j ACCEPT
$IPTABLES -A INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTDEV -p TCP --dport 443  -j DROP
Das ist wesentlich weniger CODE und es sollte dasselbe tun wie wenn ich den ganzen Krämpel Zeile für Zeile von Hand tippsle.
Versteht Ihr jetzt, was ich meine?

Mein Problem ist, dass ich kein Shellscripting kann, daher meine Frage über ein gutes Tutorial (bzw. vielleicht kann sich das ja einer von Euch aus dem Ärmel schütteln, weil er SH kann) :mrgreen: . 8)

Viele Grüße
za0


Nieder mit der Pauschal-Abzocke der GEZ! :twisted:

pingu!
Beiträge: 111
Registriert: 12.09.2005 21:43:45

Re: Firewall

Beitrag von pingu! » 28.09.2008 19:24:36

Hi za0,
vielleicht kann sich das ja einer von Euch aus dem Ärmel schütteln, weil er SH kann)
... das ist sicher nicht gerade die beste Lösung, denn jeder Anwender hat seine eigenen configs.
Das erstellen von iptables- rules kannst du sicher mit einem solchen script erstellen lassen. Jedoch:
Die rules sollten nicht während dem starten von iptables erstellt werden. Es wäre sicher besser, wenn die rules zuerst erstellt werden und dann in einem separaten iptables-start-script geladen werden.
Denn das Erstellen von rules mit Abzeigungen und Sprüngen sowie Vergleichungen benötigt Zeit und Rechenleistung, die wärhrend dem booten nicht so ideal sind. Es dauert dann länger bis die rules im Kernel space geladen sind
Falls du wirklich etwas über das erstellen scripts erfahren möchtest, empfehle ich http://www.pditchen.de/Skript-Buch/skript-buch.html. Dieses Buch ist nicht unbedingt an iptables angepasst, vermittelt aber sehr gute und tiefe Grundlagen zum erstellen von scripts.
Es gibt im Internet jedoch viele Seiten, wo iptable-rules nach bestimmten Bedürfnisssen herutergeladen werden können. z.B: http://iptables-tutorial.frozentux.net/ ... IREWALLTXT oder http://www.linux-fuer-alle.de/doc_show. ... 7&catid=11.
Diese kannst du ja nach deinen Bedürfnissen anpassen. :wink:

Antworten