Firewallscripts

Gemeinsam ins Internet mit Firewall und Proxy.
fte213
Beiträge: 70
Registriert: 11.01.2004 12:31:28
Wohnort: 74889 Sinsheim

Beitrag von fte213 » 30.04.2004 12:39:47

Hört sich vielleicht en bissl doof an, aber gibt es auch ein Tool, dass unter Windows läuft, man ein Script erstellen kann und dann per SSH z.B. in mein Linux-Script kopieren kann?

Hab grad das Problem, dass ich ein Script fürn Ethernet-Router benötige, die ganzen Beispiele aber immer für einen WAN Router sind und ich denke, dass hier das Netz schon vom fli4l abgesichert ist (hoffe ich mal)!

Was erstelle ich den hier für Regeln? Bisher kann ich ausschliesslich pingen, mehr geht nicht durch :-(

Benutzeravatar
pierre
Beiträge: 363
Registriert: 03.12.2003 21:21:34
Wohnort: Berlin

Beitrag von pierre » 30.04.2004 19:01:20

Hi,
fte213 hat geschrieben:Hört sich vielleicht en bissl doof an, aber gibt es auch ein Tool, dass unter Windows läuft, man ein Script erstellen kann und dann per SSH z.B. in mein Linux-Script kopieren kann?
putty, ein Editor und dos2unix.

Mti Hilf von dos2unix kannst du dos formatierte Dateien in Unix formatierte umwandeln.
Das ganze gibt es auch umgekehrt.

MfG
pierre

Benutzeravatar
haga43
Beiträge: 31
Registriert: 29.08.2003 14:23:50
Wohnort: Oldenburg

Beitrag von haga43 » 01.05.2004 00:01:55

nabend zusammen,

die Geschichte mit den Grundlagen ist nicht unwichtig. Will es wirklich nicht runter machen.

Aber für die Praxis im home- oder im Small-Office Bereich gibt es für mich nur eines:

fwbilder

fwbilder vergisst keinen Rückweg zu öffnen.

fwbilder ist leicht per gtk zu konfigurieren

Für verschiedene spezielle FW habe ich mit awk und bash Scripte für Firewalling gebaut, bis ich
fwbilder entdeckte.

Es gibt bestimmt ähnliche gute Tools, die ich nicht kenne.

Gruß haga43

Azra3l-XES
Beiträge: 7
Registriert: 15.03.2004 10:33:41
Wohnort: rosenheim

Beitrag von Azra3l-XES » 01.05.2004 19:49:47

da gibts meiner meinung nach auch nen relativ guten iptables-generator unter http://www.harrry.homelinux.org

benutze den auch und bin damit soweit zufrieden. ok höheren anprüchen genügt es natürlich nicht aber ist mal ein anfang :)

pugnacity
Beiträge: 187
Registriert: 13.04.2004 15:02:45
Wohnort: Berlin
Kontaktdaten:

Beitrag von pugnacity » 03.05.2004 13:58:20

leider funktioniert der von dir angebene link nicht.... :( :(

fte213
Beiträge: 70
Registriert: 11.01.2004 12:31:28
Wohnort: 74889 Sinsheim

Beitrag von fte213 » 03.05.2004 14:45:35

Wollts noch posten, weil mir gleich aufgefallen ist als er nicht getan hat:

http://www.harry.homelinux.org

Er hat ein "r" zuviel reingeschmuckelt :-)

Azra3l-XES
Beiträge: 7
Registriert: 15.03.2004 10:33:41
Wohnort: rosenheim

Beitrag von Azra3l-XES » 03.05.2004 16:06:36

ups ja mist :D
verdammt

Laynon
Beiträge: 22
Registriert: 04.12.2003 08:01:24

Iptables für router

Beitrag von Laynon » 11.05.2004 21:12:56

Moin moin,

dieses Forum hat mir schon oft geholfen durch reines suchen, jedoch brauch ich bei den iptables nun doch noch bissel hilfe. Hab das Script für Router aus diesem Thread bissel für mich angepasst (thx k-pl). Läuft auch so wie gewünscht bis auf eine merkwürdige Sache:

Code: Alles auswählen


  # Lokal -> Internet: Alles erlauben
  iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT

  # Ins Internet : Alles erlauben
  iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT
Die erste Zeile erlaubt es mir vom Client ins Inetnet zu kommen.
Die zweite Zeiile erlaubt es generell inst internet zu kommen.

Wenn ich nun die zweite auf DROP setze, komme ich vom Router nicht mehr ins Internet vom Client aus kann ich aber immer noch ins Inernet, erst wenn ich die erste Zeile auch auf DROP setze wird der Client geblockt.

Die erste Zeile "FORWARD" soll nur weiterleiten wenn die zweite auf "ACCEPT" steht und nicht eigenstendig das Internet offen lassen..

bearbeite die Iptables grade mir dem Buch "Linux Wegweiser für Netzwerker" bin aber noch am Anfang mit den iptables.

Ich hoffe ich das die Infos reichen. Das Script ist so aufgebaut, wie das auf Seite 1 in diesem Thread.

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 12.05.2004 01:02:38

Das geht nicht, weil FORWARD alle Pakete betrifft, die *durch* den Router gehen, und OUTPUT nur die Pakete betrifft, die wirklich *vom* Router sind.

Ergo: Für die Clients ist FORWARD zuständig, und für den Router selbst ist OUTPUT zuständig. Die beiden Regeln haben keinen gegenseitigen Einfluss.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

michaschmieder
Beiträge: 1
Registriert: 12.05.2004 11:45:50

Beitrag von michaschmieder » 12.05.2004 12:32:18

Nochmal zum Thema: Wie konfiguriere ich den Kernel zum Firewalling per IPTABLES ...
Da hätte ich hier einen Auszug aus "Das Firewall Buch" von Wolgang Barth, bezieht sich auf Kernel 2.4 ...

...Um von den Filterfähigkeiten des Kernel Gebrauch machen zu können, müssen die zum Firewalling gehörenden Teile einkompiliert sein. Mit

# make menuconfig

kann die Kernelkonfiguration verändert werden. Neben der generellen Netzwerkunterstützung unter General setup werden folgende Einstellungen aus dem Menü Networking options benötigt:

<*> Packet socket
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging
....
[*] TCP/IP networking
....
[*] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration --->[/i]

Das Submenü Nefilter Configuration faßt alle für die Netfilter-Architektur möglichen Parameter zusammen.

<*> Connection tracking (required for masq/NAT)
<M> FTP protocol support
<*> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> MAC adress match support
<M> netfilter MARK match support
<M> Multiple port match support
<M> TOS match support
<M> Connection state match support
<*> Packet filtering
<M> REJECT target support
<*> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
<*> Packet mangling
<M> TOS target support
<M> MARK target support
<*> LOG target support
<M> TCPMSS target support
<M> ARP tables support
<M> ARP packet filtering


Die einzelnen Einstellungen werden in

/usr/src/linux/Documentation/Configure.help

näher beschrieben. Diese zu jedem Eintrag entsprechende Hilfe erhält man auch im Konfigurationsmenü über die Auswahl Help

Die wesentlichen Einstellungen daraus sind:

Network packet filtering
Schaltet grundsätzlich das Netfilter Framework ein. Ist nötig, sobald der Rechner als Paketfilter arbeiten soll oder NAT durchgeführt werden muss.

IP: TCP syncookie support
ist eine Abwehrmaßnahme gegen SYN flooding, eine Denial-of-Service-Attacke. Auf dem äußeren Router/Filter unbedingt anwenden. Allerdings muß der SYN-Cookie Support nach dem Booten aktiviert werden:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

IP tables support (required for filtering/masq/NAT)
Der eigentliche Kern der Paket-Manipulation im Kernel 2.4. Darunter finden sich eine Reihe von Funktionalitäten als einzelne Module implementiert. Im Gegensatz zu früheren Kernels sind auch schon nichttriviale Targets wie REJECT, MASQUERADE und REDIRECT sowie Logging in eigene Module ausgelagert worden. Das hält den eigentlichen Kernelcode klein und übersichtlich und erleichtert die Erweiterung.
....

Connection tracking (required for masq/NAT)
In einer eigenen Tabelle werden ausgehende Pakete und Verbindungen gelistet, um eingehende Pakete besser einer bestehenden Verbindung zuordnen zu können. Das ermöglicht erst NAT, erlaubt aber auch eine dynamische Paketfilterung (Modul Connection state match support ).

cu Micha

PS: I like SuSE ...

Benutzeravatar
DiWoWo
Beiträge: 51
Registriert: 05.06.2004 21:51:19

Re: Firewallscripts

Beitrag von DiWoWo » 06.06.2004 18:05:42

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?
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

Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

Beitrag von fabske » 12.06.2004 12:34:38

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?

arzie
Beiträge: 134
Registriert: 17.02.2002 15:51:03

Beitrag von arzie » 15.06.2004 22:13:03

-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.

Code: Alles auswählen

# allow ssh incoming 
iptables -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
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.

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 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

Benutzeravatar
fabske
Beiträge: 2023
Registriert: 14.06.2003 15:07:51

Beitrag von fabske » 16.06.2004 21:08:59

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.
das -m mach ich raus, aber bei den udp ports muss ich dir widersprechen.
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.
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.

Code: Alles auswählen

# allow ssh incoming 
iptables -A INPUT -m tcp -p tcp --dport ssh -j ACCEPT
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.
aber ich will dass ich meinen server von außen erreichen kann!?
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.
ich werd es in portnummern ändern. proxyserver is aber etwas übertrieben in meinem kleinen lan.
arzie hat geschrieben:https (443) fehlt voellig, das wuerde ich als LAN-User nicht akzeptieren wollen.
mach ich rein
arzie hat geschrieben: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 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.
ich bin eigentlich ein höflicher mensch, aber es sollte nicht auf meine performance gehen.
ich hab die beiden regeln aber leider immer noch nicht ganz verstanden :/
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
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: 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?

Benutzeravatar
LinuxMichi
Beiträge: 6
Registriert: 26.07.2004 21:08:16
Wohnort: Strasbourg und Marrakech
Kontaktdaten:

Beitrag von LinuxMichi » 26.07.2004 21:23:42

[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... :(
--
Was soll ich als Signatur angeben ?

Benutzeravatar
holger.lehn
Beiträge: 81
Registriert: 06.04.2004 22:11:38
Wohnort: Waghäusel

Beitrag von holger.lehn » 14.10.2004 21:24:22

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.
Gruss
Holger

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 19.10.2004 15:46:33

Ich hab mal ne frage zu Log Files:

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: " 
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 . . . :oops:
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 22.10.2004 11:33:16

_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
jm
Beiträge: 3
Registriert: 01.12.2004 06:02:18

Beitrag von jm » 02.12.2004 17:34:29

was haltet ihr so von 'guarddog' ?

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 03.12.2004 19:17:35

was ist das ?
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 05.12.2004 12:03:40

knecht hat geschrieben:was ist das ?
Manchmal ist :google: richtig hilfreich [1].

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

fzr
Beiträge: 66
Registriert: 12.07.2004 22:33:25

iptables ipv6

Beitrag von fzr » 09.01.2005 14:44:30


Benutzeravatar
g-henna
Beiträge: 733
Registriert: 03.11.2003 14:59:56
Wohnort: Berlin

Beitrag von g-henna » 12.01.2005 22:37:26

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?

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)

- 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)
Bye
g-henna
follow the penguin...

Polarwelt
Beiträge: 16
Registriert: 18.05.2005 15:36:27
Wohnort: Bärenstadt
Kontaktdaten:

Beitrag von Polarwelt » 08.06.2005 08:25:52

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

randall
Beiträge: 82
Registriert: 24.11.2005 21:36:28

Beitrag von randall » 17.04.2006 01:40:56

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 -i $ID_INT -o $ID_EXT -p ICMP -j ACCEPT
#
iptables -A FORWARD -i $ID_EXT -o $ID_INT -p ICMP -j ACCEPT
geht auch kürzer ...
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]

Antworten