k-pl hat geschrieben:Da immer wieder die Frage kommt, wo die iptables-Befehle eingetragen werden sollen, hier nochmal das Script von glatzor aus http://www.debianforum.de/forum/viewtopic.php?t=151 . Dieses Script lege man in /etc/init.d ab und erstelle Symlinks im Verzeichnis des benutzren Runlevels.
Achtung: Das Script ist ein Beispiel. Umbedingt die iptables-Eintrage anpassen.
Eine ausführlichere Anleitung befindet sich in der Tipp-Sektion.
Code: Alles auswählen
#!/bin/sh # Schnittstelle zum lokalen Netzwerk IFACE_INT=eth0 # Internetschnittstelle - "ippp+" für ISDN IFACE_EXT=ppp+ # Loopback device - bedraf keiner Anpassung IFACE_LO=lo # ************ # * POLICIES * # ************ # Zurücksetzen der Konfiguration iptables -F iptables -t nat -F iptables -X iptables -t nat -X # Default-Policies setzen - alles fliegt raus iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Einschalten von ip-Forwarding echo "1" > /proc/sys/net/ipv4/ip_forward # ********* # * INPUT * # ********* # Soll nicht sein iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP # Vom internen Netz alles erlauben iptables -A INPUT -i $IFACE_INT -j ACCEPT # Vom Loopback Alles erlauben iptables -A INPUT -i $IFACE_LO -j ACCEPT # Vom Internet: Darf nicht sein iptables -A INPUT -i $IFACE_EXT -s 10.0.0.0/8 -j DROP iptables -A INPUT -i $IFACE_EXT -s 172.16.0.0/12 -j DROP iptables -A INPUT -i $IFACE_EXT -s 192.168.0.0/24 -j DROP # Vom Internet Erlauben von bereits initialisierten Verbindungen iptables -A INPUT -i $IFACE_EXT -m state \ --state ESTABLISHED,RELATED -j ACCEPT # *********** # * FORWARD * # *********** # Wegen der Telekom iptables -I FORWARD -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # Lokal -> Internet: Alles erlauben iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT # Internet -> Lokales: Nur Verkehr über bereits bestehende Verbindungen erlauben iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state \ --state ESTABLISHED,RELATED -j ACCEPT # ********** # * OUTPUT * # ********** # Ins lokale Netzwerk: Alles erlauben iptables -A OUTPUT -o $IFACE_INT -j ACCEPT # Ans Loopback: Alles erlauben iptables -A OUTPUT -o $IFACE_LO -j ACCEPT # Ins Internet : Alles erlauben iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT # Masquerading iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE # Den Rest mitprotokollieren iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: " iptables -A FORWARD -j LOG --log-prefix "Nicht durch: " iptables -A INPUT -j LOG --log-prefix "Nicht rein: "
Changelog:
21.April 2003 - glatzor: Ich habe das Skript leicht modifiziert und einen Verweis auf eine HOWTO hinzugefügt
Firewallscripts
Re: Firewallscripts
Ich möchte einen Debian-PC als router verwenden, und habe dieses Script ausprobiert. Das einzige was auf meinem Clientrechner funktionierte war ICQ. Ansonsten ging nichts. Keine Webseite, und auch meine eMails konnte ich nicht aufrufen. Hatte zuvor noch auf mein internes Netzwerk angepasst, aber es funktionierte nicht! Was muss ich noch beachten?
ich hab mein server neuinstalliert und bei der gelegenheit gleich meine firewall überarbeitet. nun wollt ich noch ein feedback haben, danke
Code: Alles auswählen
# sicherheitsstufe4b firewall script by mohameth@gmx.net
############################################################
# reset settings
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
############################################################
# definitions
# inet
A=eth1
# lan
B=eth0
############################################################
# INPUT:
# input drop
iptables -P INPUT DROP
# allow pakets from lo
iptables -A INPUT -i lo -j ACCEPT
# allow icmp echo-request till 5 per second. load modul ipt_limit!
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# allow icmp 3, 4, 11 and 12
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT
# allow fragments
iptables -A INPUT -f -j ACCEPT
# allow reply pakets. modul ipt_state laden!
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# block ftp dos attack
iptables -A INPUT -m tcp -p tcp --dport ftp --syn -m limit --limit 5/s -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ftp --syn -j DROP
# allow ftp (ftp server)
#iptables -A INPUT -m tcp -p tcp --dport ftp -j ACCEPT
#iptables -A INPUT -m tcp -p tcp --dport ftp-data -j ACCEPT
# block ssh dos attack
iptables -A INPUT -m tcp -p tcp --dport ssh --syn -m limit --limit 5/s -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport ssh --syn -j DROP
# allow ssh incoming
iptables -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
# allow arp requests from lan (nameserver)
#iptables -A INPUT -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 53 -j ACCEPT
#iptables -A INPUT -m udp -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 53 -j ACCEPT
# allow samba from lan
#iptables -A INPUT -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 137 -j ACCEPT
#iptables -A INPUT -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 138 -j ACCEPT
#iptables -A INPUT -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 139 -j ACCEPT
#iptables -A INPUT -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 137 -j ACCEPT
#iptables -A INPUT -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 138 -j ACCEPT
#iptables -A INPUT -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 139 -j ACCEPT
# FORWARD:
# default drop
iptables -P FORWARD DROP
# allow icmp echo-request till 5 per second. load modul ipt_limit!
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
# allow icmp 3, 4, 11 and 12
iptables -A FORWARD -p icmp --icmp-type 3 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 4 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 11 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type 12 -j ACCEPT
# allow reply pakets. modul ipt_state laden!
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow fragments
iptables -A FORWARD -f -j ACCEPT
# allow dns requests from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 53 -j ACCEPT
iptables -A FORWARD -m udp -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 53 -j ACCEPT
# allow http from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 80 -j ACCEPT
iptables -A FORWARD -m udp -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport 80 -j ACCEPT
# allow jabber from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 5222 -j ACCEPT
# allow jabber over ssl from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport 5223 -j ACCEPT
# allow ftp from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport ftp -j ACCEPT
# allow pop3 from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport pop3 -j ACCEPT
# allow pop3 over ssl from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport pop3s -j ACCEPT
iptables -A FORWARD -m udp -p udp -s 192.168.0.0/255.255.255.0 -i $B --dport pop3s -j ACCEPT
# allow smtp from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport smtp -j ACCEPT
# allow irc from lan
iptables -A FORWARD -m tcp -p tcp -s 192.168.0.0/255.255.255.0 -i $B --dport ircd -j ACCEPT
# OUTPUT:
# default drop
iptables -P OUTPUT DROP
# allow pakets to lo
iptables -A OUTPUT -o lo -j ACCEPT
# allow reply pakets. modul ipt_state laden!
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow icmp till 5 per second. load modul ipt_limit!
iptables -A OUTPUT -p icmp -m limit --limit 5/s -j ACCEPT
iptables -A OUTPUT -p icmp -j DROP
# allow ssh to lan
iptables -A OUTPUT -m tcp -p tcp -d 192.168.0.0/255.255.255.0 -o $B --dport ssh -j ACCEPT
# allow ftp
iptables -A OUTPUT -m tcp -p tcp --dport ftp -j ACCEPT
# allow http
iptables -A OUTPUT -m tcp -p tcp --dport www -j ACCEPT
iptables -A OUTPUT -m udp -p udp --dport www -j ACCEPT
# allow dns requests
iptables -A OUTPUT -m tcp -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -m udp -p udp --dport 53 -j ACCEPT
# allow samba to lan
#iptables -A OUTPUT -p tcp -d 192.168.0.0/255.255.255.0 -o $B --sport 137 -j ACCEPT
#iptables -A OUTPUT -p tcp -d 192.168.0.0/255.255.255.0 -o $B --sport 138 -j ACCEPT
#iptables -A OUTPUT -p tcp -d 192.168.0.0/255.255.255.0 -o $B --sport 139 -j ACCEPT
#iptables -A OUTPUT -p udp -d 192.168.0.0/255.255.255.0 -o $B --sport 137 -j ACCEPT
#iptables -A OUTPUT -p udp -d 192.168.0.0/255.255.255.0 -o $B --sport 138 -j ACCEPT
#iptables -A OUTPUT -p udp -d 192.168.0.0/255.255.255.0 -o $B --sport 139 -j ACCEPT
# PREROUTING:
# forward emule
#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 4660 -j DNAT --to-destination 192.168.0.2:4660
#iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 4672 -j DNAT --to-destination 192.168.0.2:4672
# POSTROUTING:
# aktivate masquerade
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
############################################################
# aktivate forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?
-m tcp und -m udp sind ueberfluessig, wenn mit -p das Protokoll definiert wird.
siehe auch die manpage von iptables. Also wo '-m tcp -p tcp' steht reicht '-p tcp'
http und pop3s nutzen kein udp, die Erlaubnisse sind ueberfluessig.
Eine verwurmte Windose (zB Laptop eines Gastes) darf rausspammen, das ist schlecht.
Gibt die IP des erlaubten SMTP Servers als Destination an, damit duerfen Wuermer die mit einem eigenen SMTP direkt zustellen wollen nicht raus.
ist schlecht und ueberfluessig weil man damit Pakete reinlaesst die kein syn-flag haben und gleichzeitig zu keiner bekannten Verbindung gehoeren, denn die wurden ja schon weiter oben von --state ESTABLISHED,RELATED erlaubt.
# allow samba from lan geht kuerzer wenn man mit 137:139 die Portrange angibt
Und anstelle von /255.255.255.0 schreib ich persoenlich lieber /24
An manchen Stellen hast du den Port nummerisch angegeben und an andern Stellen den Dienst hingeschrieben. Das aendert nichts aber sieht aber inkonsistent aus.
Wenn man den Dienst hinschreibt ist's schoener zu lesen und man erkennt was 'gemeint ist'. Wenn man den Port hinschreibt sieht man was wirklich passiert. (Es kann jeder Dienst auf Port 80 laufen nicht nur http)
Wenn du die User wirklich auf Dienste festnageln willst, dann brauchst du ein Application-Gateway/Proxy.
Im Falle von http ist das sogar besser weil die User dann auch die Seiten von http Servern bekommen die nicht auf Port 80 laufen aber zB keinen SMTP auf Port 80 benutzen koennen.
https (443) fehlt voellig, das wuerde ich als LAN-User nicht akzeptieren wollen.
Wenn du hoeflich sein moechtest dann haenge doch als letzte Regeln in der Input Chain noch das hier ran.
Wenn jemand eine Verbindung zu einem Port aufbauen moechte auf dem du kein Dienst anbietest bekommt er dann von dir gesagt das es nichts gibt, und er hoert auf.
Wenn du (bei tcp) den Syn bis zur DROP Policy laufen laesst, wird er es noch oefter Probieren weil er davon ausgeht das sein syn nicht bei dir angekommen ist. 5 mal ist Default
Meiner Erfahrung nach sind das meistens Syn die fuer denjenigen gedacht waren von dem man die Dynamische IP geerbt hat und eben die ueblichen WinWuermer.
Bei einem echten Portscann spielt es kaum eine Rolle ob man nun sofort dropt oder die ersten 60 noch rejectet.
BTW: Ich habe gute Erfahrungen mit dnsmasq gemacht.
Das ist ein kleiner Caching-dns den die LAN Clients benutzen koennen. Man muss die Clients nicht mehr auf Port 53 raus lassen und Namen die schon einmal aufgeloest wurden verursachen keinen Internet-traffic mehr, geht also schneller. Es gibt auch keine Probleme wenn man die Addressen der DNS Server dynamisch bei der Einwahl bekommt bzw wenn diese sich mal aendern, denn man gibt bei den Clients einfach die LAN IP des Rechners an der die Internetverbindung macht als DNS-Server an.
arzie
siehe auch die manpage von iptables. Also wo '-m tcp -p tcp' steht reicht '-p tcp'
http und pop3s nutzen kein udp, die Erlaubnisse sind ueberfluessig.
Eine verwurmte Windose (zB Laptop eines Gastes) darf rausspammen, das ist schlecht.
Gibt die IP des erlaubten SMTP Servers als Destination an, damit duerfen Wuermer die mit einem eigenen SMTP direkt zustellen wollen nicht raus.
Code: Alles auswählen
# allow ssh incoming
iptables -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
# allow samba from lan geht kuerzer wenn man mit 137:139 die Portrange angibt
Und anstelle von /255.255.255.0 schreib ich persoenlich lieber /24
An manchen Stellen hast du den Port nummerisch angegeben und an andern Stellen den Dienst hingeschrieben. Das aendert nichts aber sieht aber inkonsistent aus.
Wenn man den Dienst hinschreibt ist's schoener zu lesen und man erkennt was 'gemeint ist'. Wenn man den Port hinschreibt sieht man was wirklich passiert. (Es kann jeder Dienst auf Port 80 laufen nicht nur http)
Wenn du die User wirklich auf Dienste festnageln willst, dann brauchst du ein Application-Gateway/Proxy.
Im Falle von http ist das sogar besser weil die User dann auch die Seiten von http Servern bekommen die nicht auf Port 80 laufen aber zB keinen SMTP auf Port 80 benutzen koennen.
https (443) fehlt voellig, das wuerde ich als LAN-User nicht akzeptieren wollen.
Wenn du hoeflich sein moechtest dann haenge doch als letzte Regeln in der Input Chain noch das hier ran.
Code: Alles auswählen
$IPTABLES -A INPUT -p tcp -m limit --limit 30/minute --limit-burst 60 -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p udp -m limit --limit 30/minute --limit-burst 60 -j REJECT --reject-with icmp-port-unreachable
Wenn du (bei tcp) den Syn bis zur DROP Policy laufen laesst, wird er es noch oefter Probieren weil er davon ausgeht das sein syn nicht bei dir angekommen ist. 5 mal ist Default
Meiner Erfahrung nach sind das meistens Syn die fuer denjenigen gedacht waren von dem man die Dynamische IP geerbt hat und eben die ueblichen WinWuermer.
Bei einem echten Portscann spielt es kaum eine Rolle ob man nun sofort dropt oder die ersten 60 noch rejectet.
BTW: Ich habe gute Erfahrungen mit dnsmasq gemacht.
Das ist ein kleiner Caching-dns den die LAN Clients benutzen koennen. Man muss die Clients nicht mehr auf Port 53 raus lassen und Namen die schon einmal aufgeloest wurden verursachen keinen Internet-traffic mehr, geht also schneller. Es gibt auch keine Probleme wenn man die Addressen der DNS Server dynamisch bei der Einwahl bekommt bzw wenn diese sich mal aendern, denn man gibt bei den Clients einfach die LAN IP des Rechners an der die Internetverbindung macht als DNS-Server an.
arzie
Jabber: arzie@amessage.de
das -m mach ich raus, aber bei den udp ports muss ich dir widersprechen.arzie hat geschrieben:-m tcp und -m udp sind ueberfluessig, wenn mit -p das Protokoll definiert wird.
siehe auch die manpage von iptables. Also wo '-m tcp -p tcp' steht reicht '-p tcp'
http und pop3s nutzen kein udp, die Erlaubnisse sind ueberfluessig.
1. steht in der /etc/services dass es für pop3 genau so wie für http udp gibt
2. hab ich früher kein udp für http gehabt, und dann konnte ich mich z.b. nicht per webinterface bei gmx anmelden.
aber ich will dass ich meinen server von außen erreichen kann!?arzie hat geschrieben:Eine verwurmte Windose (zB Laptop eines Gastes) darf rausspammen, das ist schlecht.
Gibt die IP des erlaubten SMTP Servers als Destination an, damit duerfen Wuermer die mit einem eigenen SMTP direkt zustellen wollen nicht raus.ist schlecht und ueberfluessig weil man damit Pakete reinlaesst die kein syn-flag haben und gleichzeitig zu keiner bekannten Verbindung gehoeren, denn die wurden ja schon weiter oben von --state ESTABLISHED,RELATED erlaubt.Code: Alles auswählen
# allow ssh incoming iptables -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
ich werd es in portnummern ändern. proxyserver is aber etwas übertrieben in meinem kleinen lan.arzie hat geschrieben:# allow samba from lan geht kuerzer wenn man mit 137:139 die Portrange angibt
Und anstelle von /255.255.255.0 schreib ich persoenlich lieber /24
An manchen Stellen hast du den Port nummerisch angegeben und an andern Stellen den Dienst hingeschrieben. Das aendert nichts aber sieht aber inkonsistent aus.
Wenn man den Dienst hinschreibt ist's schoener zu lesen und man erkennt was 'gemeint ist'. Wenn man den Port hinschreibt sieht man was wirklich passiert. (Es kann jeder Dienst auf Port 80 laufen nicht nur http)
Wenn du die User wirklich auf Dienste festnageln willst, dann brauchst du ein Application-Gateway/Proxy.
Im Falle von http ist das sogar besser weil die User dann auch die Seiten von http Servern bekommen die nicht auf Port 80 laufen aber zB keinen SMTP auf Port 80 benutzen koennen.
mach ich reinarzie hat geschrieben:https (443) fehlt voellig, das wuerde ich als LAN-User nicht akzeptieren wollen.
ich bin eigentlich ein höflicher mensch, aber es sollte nicht auf meine performance gehen.arzie hat geschrieben:Wenn du hoeflich sein moechtest dann haenge doch als letzte Regeln in der Input Chain noch das hier ran.
Wenn jemand eine Verbindung zu einem Port aufbauen moechte auf dem du kein Dienst anbietest bekommt er dann von dir gesagt das es nichts gibt, und er hoert auf.Code: Alles auswählen
$IPTABLES -A INPUT -p tcp -m limit --limit 30/minute --limit-burst 60 -j REJECT --reject-with tcp-reset $IPTABLES -A INPUT -p udp -m limit --limit 30/minute --limit-burst 60 -j REJECT --reject-with icmp-port-unreachable
Wenn du (bei tcp) den Syn bis zur DROP Policy laufen laesst, wird er es noch oefter Probieren weil er davon ausgeht das sein syn nicht bei dir angekommen ist. 5 mal ist Default
Meiner Erfahrung nach sind das meistens Syn die fuer denjenigen gedacht waren von dem man die Dynamische IP geerbt hat und eben die ueblichen WinWuermer.
Bei einem echten Portscann spielt es kaum eine Rolle ob man nun sofort dropt oder die ersten 60 noch rejectet.
ich hab die beiden regeln aber leider immer noch nicht ganz verstanden :/
danke, aber ein dns server kommt hier nimmer zum einsatz. bind für 4 rechner is schwachsinn. dnsmasq kenn ich, ist gut, aber eigentlich brauch ich keinen dns server.BTW: Ich habe gute Erfahrungen mit dnsmasq gemacht.
Das ist ein kleiner Caching-dns den die LAN Clients benutzen koennen. Man muss die Clients nicht mehr auf Port 53 raus lassen und Namen die schon einmal aufgeloest wurden verursachen keinen Internet-traffic mehr, geht also schneller. Es gibt auch keine Probleme wenn man die Addressen der DNS Server dynamisch bei der Einwahl bekommt bzw wenn diese sich mal aendern, denn man gibt bei den Clients einfach die LAN IP des Rechners an der die Internetverbindung macht als DNS-Server an.
arzie
btw: brauch ich bei ftp und ssh auch udp?
Bevor Du einen Beitrag postest:
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?
- Kennst Du unsere Verhaltensregeln?
- Hast Du die Suchfunktion benutzt? Deine Frage wurde vielleicht schon in einem anderen Beitrag beantwortet.
- Ist schon ein Artikel in unserem Wiki vorhanden, der Deine Frage beantwortet?
- LinuxMichi
- Beiträge: 6
- Registriert: 26.07.2004 21:08:16
- Wohnort: Strasbourg und Marrakech
-
Kontaktdaten:
[quote="Natas12"]argh! also: jetzt hab ich mich durch mehrere tutorials durchgeklickt, diverse programme ausprobiert. so richtig schlau werd ich da nicht draus...
hab auf http://www.iptables.de folgendes skript für "eilige" gefunden - taugt das was (einfach nur dialup, modem, mehr nicht):
Der Server sieht ein bischen eigenartige aus...
Auch http://www.netfilter.org ist verschwunden...
hab auf http://www.iptables.de folgendes skript für "eilige" gefunden - taugt das was (einfach nur dialup, modem, mehr nicht):
Der Server sieht ein bischen eigenartige aus...
Auch http://www.netfilter.org ist verschwunden...
--
Was soll ich als Signatur angeben ?
Was soll ich als Signatur angeben ?
- holger.lehn
- Beiträge: 81
- Registriert: 06.04.2004 22:11:38
- Wohnort: Waghäusel
Hi,
schaut euch mal die Seite http://www.fwbuilder.org an.
Eine grafiche Oberfläche um Paketfilterregeln für verschiedene Zielsysteme, auch IPTABLES mit Linux 2.6 zu erstellen. Über eine COMPILE Funktion erstellt dass Programm ein Shell-Script das man nur noch ausführen muss und dass die IPTABLES Befehle absetzt.
schaut euch mal die Seite http://www.fwbuilder.org an.
Eine grafiche Oberfläche um Paketfilterregeln für verschiedene Zielsysteme, auch IPTABLES mit Linux 2.6 zu erstellen. Über eine COMPILE Funktion erstellt dass Programm ein Shell-Script das man nur noch ausführen muss und dass die IPTABLES Befehle absetzt.
Gruss
Holger
Holger
Ich hab mal ne frage zu Log Files:
Ich hab das in meinem Firewallscript stehen, und damit gibt er ja seine Ausgabe an das Kernel Log weiter.
Wie ist es möglich das ich das in drei Dateien umleite ? mit &> gehts ja nicht . . .
Code: Alles auswählen
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT geblockt: "
iptables -A FORWARD -j LOG --log-prefix "FORWARD geblockt: "
iptables -A INPUT -j LOG --log-prefix "INPUT geblockt: "
Wie ist es möglich das ich das in drei Dateien umleite ? mit &> gehts ja nicht . . .
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
hab hier was gefunden
http://www.debianforum.de/forum/viewtop ... rewall+log
http://www.debianforum.de/forum/viewtop ... rewall+log
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
was ist das ?
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de
Manchmal ist richtig hilfreich [1].knecht hat geschrieben:was ist das ?
eagle
[1] http://packages.debian.org/unstable/net/guarddog
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams
Hi!
Ich will ne Firewall für n größeres Netzwerk aufsetzen und habe mir erstmal, bevor ich großartig mir wirklich zu Gemüte führe, wie iptables was macht, folgende Policy erstellt. Will jemand mal ein paar Kommentare geben bzw. Tipps, was ich am besten wie realisiere?
g-henna
Ich will ne Firewall für n größeres Netzwerk aufsetzen und habe mir erstmal, bevor ich großartig mir wirklich zu Gemüte führe, wie iptables was macht, folgende Policy erstellt. Will jemand mal ein paar Kommentare geben bzw. Tipps, was ich am besten wie realisiere?
Code: Alles auswählen
... <Internet> ...
| |
| (DSL) | (ISDN)
| |
+-----+-------+ |
| ppp0 | |
| | |
| [ ROUTER ] | |
| 192.168.0.1 | |
| | |
| eth0 lo | +-+ Nameserver
+---+-----+---+ +--+-+ 192.168.1.1
| |
| Switch |
+-+------------+--+
| |
| ...
| Subnetz 2
... 192.168.0.*
Subnetz 1 (DHCP)
192.168.1.*
(statisch)
Bye- von überall (eth0, ppp0, lo) alle eingehenden (INPUT) Pakete droppen
### INPUT, OUTPUT - lo ###
- Verkehr auf (INPUT) und von (OUTPUT) localhost (lo) komplett erlauben
### INPUT, OUTPUT - ppp0 ###
- aus dem Internet (ppp0) dürfen eingehende Verbindungen (INPUT) nur auf folgende Ports erfolgen:
- ssh (22)
- smtp (25)
- des weiteren dürfen eingehende Verbindungen (INPUT) aus dem Internet (ppp0) natürlich Antworten auf verschickte Pakete sein (ESTABLISHED, RELATED)
- ins Internet (ppp0) dürfen ausgehende Verbindungen (OUTPUT) immer und auf alle Ports getätigt werden
### INPUT, OUTPUT - eth0 ###
- vom lokalen Netzwerk (eth0) sollen eingehende Pakete (INPUT) nur für folgende Ports gestattet sein:
- http (80)
- apt-proxy (9999)
- ldap (389) bzw. ldap-ssl (636)
- afs (7000-7009)
- ausgehende Pakete (OUTPUT) ins Netzwerk (eth0) sollen immer und auf alle Ports erlaubt sein
### FORWARD - eth0 <-> ppp0 ###
- vom lokalen Netzwerk (eth0) sollen nur bestimmte Sachen ins Internet (ppp0) weitergeleitet (FORWARD) werden, und zwar:
- http (80)
- https (81)
- ftp (21)
- dns (53)
- ntp (123)
- aus dem Internet (ppp0) sollen nur die Pakete ins Netzwerk (eth0) weitergeleitet (FORWARD) werden, die Antworten auf Anfragen aus dem Netzwerk sind (ESTABLISHED, RELATED)
g-henna
follow the penguin...
Hallo zusammen,
wäre jemand mal so net und würde mein erstelltes Firewall-Skript anschaun ob ich da nicht was wichtiges übersehen hab?
Es funktioniert soweit, eine Frage dazu hätt ich jedoch noch, wäre es nicht sinnvoll die Highport-Verbindungen ebenfalls zu beschränken?
Gruß Polarwelt
/edit: verschoben nach http://nopaste.debianforum.de/740
bitte beachte die Verhaltensregeln
Gruß Savar
wäre jemand mal so net und würde mein erstelltes Firewall-Skript anschaun ob ich da nicht was wichtiges übersehen hab?
Es funktioniert soweit, eine Frage dazu hätt ich jedoch noch, wäre es nicht sinnvoll die Highport-Verbindungen ebenfalls zu beschränken?
Gruß Polarwelt
/edit: verschoben nach http://nopaste.debianforum.de/740
bitte beachte die Verhaltensregeln
Gruß Savar
Hi polarwelt,
Dein script sieht soweit gut aus, habs aber nicht probiert.
Das einzige was ich anzumäkeln hätte, ist dass die default policy von OUTPUT DROP ist. Du solltest im Kopf behalten, dass nur lokal generierte Pakete durch die OUTPUT chain laufen, nicht die geforwardeten Pakete !
iptables -A FORWARD -p ICMP -j ACCEPT
Wieso erlaubst Du Deinem DNS-Server Zugriff auf alle Ports (Zeile 88) ?? DNS Abfragen sind UDP und werden schon in der Regel davor (Zeile 83) erlaubt.
Die Limitierung von traffic im OUTPUT und FORWARD chain nach außen hin ist Geschmackssache ... ich persönlich traue meinem lokal erzeugten traffic und lasse ihn policy wise durch.
mfg, randall[/quote]
Dein script sieht soweit gut aus, habs aber nicht probiert.
Das einzige was ich anzumäkeln hätte, ist dass die default policy von OUTPUT DROP ist. Du solltest im Kopf behalten, dass nur lokal generierte Pakete durch die OUTPUT chain laufen, nicht die geforwardeten Pakete !
geht auch kürzer ...#
iptables -A FORWARD -i $ID_INT -o $ID_EXT -p ICMP -j ACCEPT
#
iptables -A FORWARD -i $ID_EXT -o $ID_INT -p ICMP -j ACCEPT
iptables -A FORWARD -p ICMP -j ACCEPT
Wieso erlaubst Du Deinem DNS-Server Zugriff auf alle Ports (Zeile 88) ?? DNS Abfragen sind UDP und werden schon in der Regel davor (Zeile 83) erlaubt.
Die Limitierung von traffic im OUTPUT und FORWARD chain nach außen hin ist Geschmackssache ... ich persönlich traue meinem lokal erzeugten traffic und lasse ihn policy wise durch.
mfg, randall[/quote]
-
- Beiträge: 2427
- Registriert: 06.12.2005 10:38:46
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Baustelle
Re: Firewallscripts
Hallo ein paar Fragen/ Anmerkungen zum Anfangspost:
?
Is wegk-pl hat geschrieben: Eine ausführlichere Anleitung befindet sich in der Tipp-Sektion.
ist das nicht schon mit der drop policy erschlagen?Code: Alles auswählen
# ************ # * POLICIES * # ************ iptables -P INPUT DROP # ********* # * INPUT * # ********* # Soll nicht sein iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
Macht das nicht auch die DROP police bei INPUT?Code: Alles auswählen
# Vom Internet: Darf nicht sein iptables -A INPUT -i $IFACE_EXT -s 10.0.0.0/8 -j DROP iptables -A INPUT -i $IFACE_EXT -s 172.16.0.0/12 -j DROP iptables -A INPUT -i $IFACE_EXT -s 192.168.0.0/24 -j DROP
Ist das nicht identisch mit:Code: Alles auswählen
# ********** # * OUTPUT * # ********** # Ins lokale Netzwerk: Alles erlauben iptables -A OUTPUT -o $IFACE_INT -j ACCEPT # Ans Loopback: Alles erlauben iptables -A OUTPUT -o $IFACE_LO -j ACCEPT # Ins Internet : Alles erlauben iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT
Code: Alles auswählen
iptables -P OUTPUT ACCEPT
Hallo, ich verwende zur Zeit das Firewall von http://harry.homelinux.org
Leider bekomme ich beim Start des Scriptes folgende Fehlermeldungen:
Hier findet ihr mein Firewall Script:
http://nopaste.debianforum.de/4102
danke schonmal für eure Hilfe.
gruß Alex
Leider bekomme ich beim Start des Scriptes folgende Fehlermeldungen:
Code: Alles auswählen
debian:~# . /etc/init.d/firewall start
Starte IP-Paketfilter
iptables v1.2.11: Unknown arg `--to-destination'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `80'
Try `iptables -h' or 'iptables --help' for more information.
Aktiviere IP-Routing
http://nopaste.debianforum.de/4102
danke schonmal für eure Hilfe.
gruß Alex
- DynaBlaster
- Beiträge: 958
- Registriert: 25.03.2004 18:18:57
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: DF0://dynablaster.adf
Code: Alles auswählen
#
# NAT fuer HTTP
#
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination
Code: Alles auswählen
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
Re:
Ich muss dir leider sagen: Mit diesem "Script" aus praktisch-nutzlosen Regeln bist du absolut verwundbar, und praktisch alles kann nach aussen kommunizieren.Natas12 hat geschrieben:es ging mir nur darum, nicht mit "offener tür" durch die gegend zu fahren... ;o))
Nichts mit state NEW darf rein, wohl aber nach draussen? Was denn das für ne Logik?? Naja ... jeder muss sich sein Grab selbst schaufeln, viel Spass
Re: Firewallscripts
Immer diese Totengräber
Beitrag von Natas12 am 09.11.2002, 19:04
Re: Firewallscripts
aha, und worin liegt nun die Begründung für deine von mir sinnübertragene und frei interpretierte Aussage
?
Sind nachträgliche Anmerkungen, Korrekturen etc. hier nicht erlaubt? Is der Autor mittlerweile tot?
Code: Alles auswählen
If Thread.age > 2*365 { flame((autor)this.getlast()); }
Sind nachträgliche Anmerkungen, Korrekturen etc. hier nicht erlaubt? Is der Autor mittlerweile tot?
Re: Firewallscripts
Ich wollte nur darauf hinweisen, dass das Zitat mehr als 5 Jahre alt ist. Sonst nichtsnap hat geschrieben:Sind nachträgliche Anmerkungen, Korrekturen etc. hier nicht erlaubt? Is der Autor mittlerweile tot?
Gut. Was ist daran schlecht?nap hat geschrieben:Ich muss dir leider sagen: Mit diesem "Script" aus praktisch-nutzlosen Regeln bist du absolut verwundbar, und praktisch alles kann nach aussen kommunizieren.
Nichts mit state NEW darf rein, wohl aber nach draussen? Was denn das für ne Logik?? Naja ... jeder muss sich sein Grab selbst schaufeln, viel Spass
mfg pluvo
Re: Firewallscripts
Naja, als Admin muss man _immer_ vom schlimmsten ausgehen, ergo ist nicht mit einer Viren/Malware-Freiheit der Clients zu rechnen, ergo darf nicht alles von drinnen nach draussen.
Zusätzlich dazu sollte man generell den paketstatus "INVALID" abfragen bzw. in alle Richtungen blocken, nicht zugeordnete und unbekannte Pakete haben in einem Netzwerk nix verloren und sind entweder Portscans, DoS oder Überbleibsel einer alten Verbindung des vorherigen IP-"Besitzers".
Also das Beispiel-"Script" würde ich niemandem empfehlen, es sei denn es bestehen Gelüste, den Rechner alsbald zu formatieren
Zusätzlich dazu sollte man generell den paketstatus "INVALID" abfragen bzw. in alle Richtungen blocken, nicht zugeordnete und unbekannte Pakete haben in einem Netzwerk nix verloren und sind entweder Portscans, DoS oder Überbleibsel einer alten Verbindung des vorherigen IP-"Besitzers".
Also das Beispiel-"Script" würde ich niemandem empfehlen, es sei denn es bestehen Gelüste, den Rechner alsbald zu formatieren
Re: Firewallscripts
Und wenn man einfach Port 80 benutzt? Das stößt man schnell an die Grenzen eines "einfachen" Paketfilters.nap hat geschrieben:Naja, als Admin muss man _immer_ vom schlimmsten ausgehen, ergo ist nicht mit einer Viren/Malware-Freiheit der Clients zu rechnen, ergo darf nicht alles von drinnen nach draussen
Re: Firewallscripts
Joar, für solche Sachen gibts dann ja aber HAVP, Squid oder gar die iptables-eigenen Funktionen wie zb. "--hex-string" etc.
Ein kleiner HAVP in Zusammenarbeit mit Squid ist nun wirklich nicht sooo schwer, mittels einer (massig im Internet auffindbaren) Anleitung geht das in maximal 2 Std, selbst für Anfänger
Ein kleiner HAVP in Zusammenarbeit mit Squid ist nun wirklich nicht sooo schwer, mittels einer (massig im Internet auffindbaren) Anleitung geht das in maximal 2 Std, selbst für Anfänger