Firewall
Firewall
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!
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!
- 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
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
"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.
Re: Firewall
Hi und danke Dir, chroiss!!!
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?
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!
- 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
Wenn das alle Regeln sollen sein, dann so .
Datei unter /etc/init.d/
anlegen (Beispiel fuer den Namen der Datei "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.
gruss chroiss
Datei unter /etc/init.d/
anlegen (Beispiel fuer den Namen der Datei "firewall") .
Code: Alles auswählen
chmod 755 /etc/init.d/firewall
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
"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.
Re: Firewall
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?
Hast du denn schon eine Firewall laufen?
Re: Firewall
Danke@chroiss
danielx: Nein, sie ist noch nicht eingerichtet. Ich nehme an, dass ich da jetzt noch die ganzen anderen Regeln reinklatschen muss.
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!
- 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
@dalienx
gruss chroiss
->Damit ist der Zugriff auf den Port 1234 zwar auf die drei IPs begrenzt, aber alle anderen Ports sind von außen offen.
@za0Wenn das alle Regeln sollen sein, dann so .
Richtig.Ich nehme an, dass ich da jetzt noch die ganzen anderen Regeln reinklatschen muss.
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.
Re: Firewall
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?
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!
Re: Firewall
Port-Range: 1234 bis 5678
Ports: 4567 und 8910
IP-Range: 123.123.123.121 bis 123.123.123.123
Alles in einer Zeile:
Gruß,
Daniel
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
Gruß,
Daniel
Re: Firewall
Hi Daniel,
C00L!
Danke.
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
C00L!
Danke.
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!
Re: Firewall
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!
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!
Re: Firewall
Hi Pingu!,
ich meinte das eher so:
DAS OBEN ist äquivalent zu dem hier:
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) .
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;
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
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) .
Viele Grüße
za0
Nieder mit der Pauschal-Abzocke der GEZ!
Re: Firewall
Hi za0,
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.
... das ist sicher nicht gerade die beste Lösung, denn jeder Anwender hat seine eigenen configs.vielleicht kann sich das ja einer von Euch aus dem Ärmel schütteln, weil er SH kann)
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.