kleines iptables Problem

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
darkiop
Beiträge: 144
Registriert: 29.01.2004 20:12:23

kleines iptables Problem

Beitrag von darkiop » 31.03.2004 16:42:51

Hallo alle zusammen, ich habe mein iptables script soweit fertig. Problem ist allerdings wenn ich es lade das ich keine Internetverbindung von meinem Clients mehr bekomme. Vom Router aus, auf dem das Script auch ausgeführt wurde, funktioniert es teilweise. Manche Seiten kann ich mit einem Ping erreichen aber nicht mit lynx aufrufen.

Hier das Script:

Code: Alles auswählen

#
# ====================================================================================
#  PART I: Variablen
# ====================================================================================
#

#
# ====================================================================================
#  PART II: Grundkonfiguration absichern
# ====================================================================================
#


# Default Policy and flush
iptables -P INPUT DROP 
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -F             # flush off all chains (Table filter)
iptables -t nat -F      # flsuh off all chains (Table nat)
iptables -X             # delete all userdefined chains (Table filter)


# Masquerading
iptables -t nat -A POSTROUTING -o ippp2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ippp6 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Lokale Prozesse
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT


# SSH for remote maintenance
iptables -A INPUT -p udp -m udp -s 0/0 -d 0/0 --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 0/0 -d 0/0 --dport 22 --syn -j ACCEPT


#
# ====================================================================================
#  PART III: Benutzerdefinierte Regelketten 
# ====================================================================================
#


# Lokalen Netzwerkverkehr freigeben
iptables -A INPUT -i eth0 -j ACCEPT


# Reject M$ RPC + NETBIOS
iptables -A INPUT -i ippp2 -p tcp -m tcp -s 0/0 -d 0/0 --dport 135 --syn -j REJECT
iptables -A INPUT -i ippp2 -p udp -m udp -s 0/0 -d 0/0 --dport 135:137 -j REJECT
iptables -A INPUT -i ippp6 -p tcp -m tcp -s 0/0 -d 0/0 --dport 135 --syn -j REJECT
iptables -A INPUT -i ippp6 -p udp -m udp -s 0/0 -d 0/0 --dport 135:137 -j REJECT


# DROP and LOG Chain
iptables -N my_drop
iptables -A my_drop -p ICMP -j LOG --log-prefix "DROP-ICMP "
iptables -A my_drop -p UDP -j LOG --log-prefix "DROP-UDP "
iptables -A my_drop -p TCP -j LOG --log-prefix "DROP TCP "
iptables -A my_drop -j DROP


#
# ====================================================================================
#  PART IV: Generell bestende Verbindungen
# ====================================================================================
#


# Ausgehende Packete bei bereits aufgebauter Verbindung
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


#
# ====================================================================================
#  PART V: Filterregeln für lokale Dienste 
# ====================================================================================
#


# ICMP
iptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT


#
# ====================================================================================
#  PART VI: Filterregeln für Forwarding 
# ====================================================================================
#


# IRC (DCC)
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 5300:5399 -j DNAT --to 192.168.0.1:5300:5399
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 5300:5399 -j DNAT --to 192.168.0.1:5300:5399


# ssh (nur bei bedarf offen :) )
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3001 -j DNAT --to 192.168.0.1:22
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3002 -j DNAT --to 192.168.0.11:22
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3003 -j DNAT --to 192.168.0.252:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3001 -j DNAT --to 192.168.0.1:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3002 -j DNAT --to 192.168.0.11:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3003 -j DNAT --to 192.168.0.252:22


#
# ====================================================================================
#  PART VII: Rest sperren, loggen 
# ====================================================================================
#


iptables -A INPUT -j my_drop
iptables -A FORWARD -j my_drop
iptables -A OUTPUT -j my_drop
Intern funktioniert alles einwandfrei, nur die Verbindung nach drausen zickt rum. Hab ihr eine Ahnung woran das liegt?

gucki
Beiträge: 338
Registriert: 15.03.2004 09:15:49

Beitrag von gucki » 02.04.2004 10:04:09

Hi,

ich seh keine Regel die es erlaubt "neue" Pakete aus dem lokalem Netz zu "forwarden".

Besser wär es auch wenn du beim loggen der gedroppen Pakete noch unterscheidest in welchem Chain das passiert. Dazu musst du natürlich 3 mydrop chains anlegen und entsprechend verzweigen und den Präfixtext anpassen.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 02.04.2004 16:58:26

gucki hat geschrieben:Hi,

ich seh keine Regel die es erlaubt "neue" Pakete aus dem lokalem Netz zu "forwarden".

Besser wär es auch wenn du beim loggen der gedroppen Pakete noch unterscheidest in welchem Chain das passiert. Dazu musst du natürlich 3 mydrop chains anlegen und entsprechend verzweigen und den Präfixtext anpassen.
Genau, und am besten vor jedem Drop nochmal ein Log machen, damit Du auch weisst, was für eine Regel Deine Pakete weggeworfen hat :) !

darkiop
Beiträge: 144
Registriert: 29.01.2004 20:12:23

Beitrag von darkiop » 02.04.2004 18:07:43

Könnt ihr mir mal ein Beispiel geben wie ich vorgehen muss? Ich den obigen Teil mit Hilfe eines Buches zusammengebastelt, bin noch nicht ganz so fit in Sachen iptables.

gucki
Beiträge: 338
Registriert: 15.03.2004 09:15:49

Beitrag von gucki » 02.04.2004 18:45:52

les dir mal http://www.heise.de/security/result.xht ... s=iptables durch. Auch hier im Forum sollten Beispiele zu finden sein. Hab gerade keinen Link zur Hand.

darkiop
Beiträge: 144
Registriert: 29.01.2004 20:12:23

Beitrag von darkiop » 03.04.2004 21:35:46

Hab das Script um diese Zeile erweiter und jetzt scheint es zu funktionieren:

Code: Alles auswählen

iptables -A FORWARD -i eth0 -m state --state NEW -j ACCEPT
Jetzt versuch ich mich mal an die Log Geschichten die ihr noch gesagt habt.




Edit:

Ist das soweit richtig?:

Code: Alles auswählen

#!/bin/sh

#
# Letze Änderung: 03.04.2004 - 20:00Uhr 
#
# iptables für falcon (192.168.0.250)
#

#
# ====================================================================================
#  PART I: Variablen
# ====================================================================================
#

#
# ====================================================================================
#  PART II: Grundkonfiguration absichern
# ====================================================================================
#


# Default Policy and flush
iptables -P INPUT DROP 
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -F             # flush off all chains (Table filter)
iptables -t nat -F      # flsuh off all chains (Table nat)
iptables -X             # delete all userdefined chains (Table filter)


# Masquerading
iptables -t nat -A POSTROUTING -o ippp2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ippp6 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Lokale Prozesse
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT


# SSH for remote maintenance
iptables -A INPUT -p udp -m udp -s 0/0 -d 0/0 --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 0/0 -d 0/0 --dport 22 --syn -j ACCEPT


#
# ====================================================================================
#  PART III: Benutzerdefinierte Regelketten 
# ====================================================================================
#


# Lokalen Netzwerkverkehr freigeben
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state NEW -j ACCEPT


# Reject Port 83
iptables -A INPUT -i ippp2 -p tcp -m tcp -s 0/0 -d 0/0 --dport 83 --syn -j DROP
iptables -A INPUT -i ippp6 -p tcp -m tcp -s 0/0 -d 0/0 --dport 83 --syn -j DROP


# Reject M$ RPC + NETBIOS
iptables -A INPUT -i ippp2 -p tcp -m tcp -s 0/0 -d 0/0 --dport 135 --syn -j DROP
iptables -A INPUT -i ippp2 -p udp -m udp -s 0/0 -d 0/0 --dport 135:137 -j DROP
iptables -A INPUT -i ippp6 -p tcp -m tcp -s 0/0 -d 0/0 --dport 135 --syn -j DROP
iptables -A INPUT -i ippp6 -p udp -m udp -s 0/0 -d 0/0 --dport 135:137 -j DROP


# DROP and LOG Chain
iptables -A INPUT -p ICMP -j LOG --log-prefix "DROP-I-ICMP "
iptables -A INPUT -p UDP -j LOG --log-prefix "DROP-I-UDP "
iptables -A INPUT -p TCP -j LOG --log-prefix "DROP-I-TCP "
iptables -A OUTPUT -p ICMP -j LOG --log-prefix "DROP-O-ICMP "
iptables -A OUTPUT -p UDP -j LOG --log-prefix "DROP-O-UDP "
iptables -A OUTPUT -p TCP -j LOG --log-prefix "DROP-O-TCP "
iptables -A FORWARD -p ICMP -j LOG --log-prefix "DROP-F-ICMP "
iptables -A FORWARD -p UDP -j LOG --log-prefix "DROP-F-UDP "
iptables -A FORWARD -p TCP -j LOG --log-prefix "DROP-F-TCP "


#
# ====================================================================================
#  PART IV: Generell bestende Verbindungen
# ====================================================================================
#


# Ausgehende Packete bei bereits aufgebauter Verbindung
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


#
# ====================================================================================
#  PART V: Filterregeln für lokale Dienste 
# ====================================================================================
#


# ICMP
iptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT


#
# ====================================================================================
#  PART VI: Filterregeln für Forwarding 
# ====================================================================================
#


# IRC (DCC)
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 5300:5399 -j DNAT --to 192.168.0.1:5300:5399
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 5300:5399 -j DNAT --to 192.168.0.1:5300:5399


# ssh (nur bei bedarf offen :) )
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3001 -j DNAT --to 192.168.0.1:22
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3002 -j DNAT --to 192.168.0.11:22
#iptables -t nat -A PREROUTING -i ippp2 -p tcp --dport 3003 -j DNAT --to 192.168.0.252:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3001 -j DNAT --to 192.168.0.1:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3002 -j DNAT --to 192.168.0.11:22
#iptables -t nat -A PREROUTING -i ippp6 -p tcp --dport 3003 -j DNAT --to 192.168.0.252:22


#
# ====================================================================================
#  PART VII: Rest sperren, loggen 
# ====================================================================================
#


iptables -A INPUT -j DROP
iptables -A INPUT -j LOG --log-prefix "INPUT_DROP "

iptables -A FORWARD -j DROP
iptables -A FORWARD -j LOG --log-prefix "FORWARD_DROP "

iptables -A OUTPUT -j DROP
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT_DROP "



Antworten