PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Iptables [Kein weg nach draußen]



Taschentuch
27.08.07, 23:39
Hi, ich habe mir letztens nach einer Anleitung eine config für iptables gebastelt. Natürlich hab ich die Config meinen Bedürfnissen angepasst (wär ja langweilig wenn hier mal was Funktionieren würde ^^)
Naja, aufjedenfall kann nach draußen pingen. Nur leide habe aber keinen DNS und wenn ich versuche, z.B. meinen Router per IP im Webbrowser aufzurufen geht es auch nicht.
Das einzige was bei mir geht ist ICMP. Dies ist aber auch das einzige was bei mir von aussen ungefragt rein darf.

Jetzt dachte ich mir aber, da ich auf alles ein "-m state --state RELATED,ESTABLISHED" gesetzt habe müssten doch, wenn ich eine Verbindung beginnen will, die Antworten auch durch kommen. Nur klappt das irgendwie wohl nicht.

Im lokalen Netz brauche meine Freigaben per SMB und nach "draußen" einen SSH Zugang.

Irgendwie klappt das bei mir nicht...
Kann mir da jemand helfen?


#!/bin/bash
# iptables-up script 1.3.6 für Debian 3.1
# /etc/network/if-pre-up.d/iptables-up

IPTABLES=/sbin/iptables

#Netzwerke
LAN=192.168.2.0/24

#Auf im Internet
INETPORTS="22"
#Auf im LAN
LANPORTS="22 111 139 445"

# Pruefen ob dev-spezif. chains noch vorhanden (Ueberbleibsel von Fehlern),
# ggf. aufraeumen wie beim Runterfahren der Schnittstelle
if $IPTABLES -L IN-$IFACE >/dev/null; then
/etc/network/if-post-down.d/iptables-down;
fi

# Setzen der Default-Policies
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#Extra Chains erstellen
$IPTABLES -N IN-$IFACE
$IPTABLES -A INPUT -i $IFACE -j IN-$IFACE
$IPTABLES -N OUT-$IFACE
$IPTABLES -A OUTPUT -o $IFACE -j OUT-$IFACE

case "$IFACE" in
lo)
#Loopback frei
$IPTABLES -A IN-$IFACE -j ACCEPT
$IPTABLES -A OUT-$IFACE -j ACCEPT
;;
eth0)
#############
### INPUT ###
#############

#Bestehendes zulassen
$IPTABLES -A IN-$IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT

#Internetports Aufmachen
for PORT in $INTETPORTS; do
$IPTABLES -A IN-$IFACE -p tcp --dport $PORT -j ACCEPT
$IPTABLES -A IN-$IFACE -p udp --dport $PORT -j ACCEPT
done

#Lanports Aufmachen
for PORT in $LANPORTS; do
$IPTABLES -A IN-$IFACE -s $LAN -p tcp --dport $PORT -j ACCEPT
$IPTABLES -A IN-$IFACE -s $LAN -p udp --dport $PORT -j ACCEPT
done

#ICMP Zulassen im LAN
$IPTABLES -A IN-$IFACE -s $LAN -p icmp -j ACCEPT


#Alles andere Fallenlassen
#$IPTABLES -A IN-$IFACE -p tcp -j DROP
#$IPTABLES -A IN-$IFACE -p udp -j DROP
#$IPTABLES -A IN-$IFACE -p icmp -j DROP


##############
### OUTPUT ###
##############

$IPTABLES -A OUT-$IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT

#Alles rauslassen
$IPTABLES -A OUT-$IFACE -p tcp -j ACCEPT
$IPTABLES -A OUT-$IFACE -p udp -j ACCEPT
$IPTABLES -A OUT-$IFACE -p icmp -j ACCEPT
;;
*)
$IPTABLES -A IN-$IFACE -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A IN-$IFACE -j REJECT

$IPTABLES -A OUT-$IFACE -j ACCEPT
;;

framp
27.08.07, 23:59
So wie es für mich scheint hast Du keine zentrale FW für Dein LAN so dass jeder Rechner eine FW hat (hoffentlich ...). Denn Du hast ja alle Deine lokalen Rechner sowie das Internet über eth0 erreichbar.

Ich habe mir mal das Script grob angesehen. Da sind Syntaxfehler drin -d.h. das kann so nie gelaufen sein...

Poste doch mal 'iptables -L -vn'. Dann kann man sehen welche Rules aktuell aktiv sind.

Taschentuch
28.08.07, 00:04
Für mich sieht es so aus als wären alle rules angenommen worden.

Ich habe eine zentrale Firewall in meinem NAT Router, aber ich möchte meinen eigenen PC gerne doch noch mit iptables absichern.


Chain INPUT (policy DROP 28 packets, 3987 bytes)
pkts bytes target prot opt in out source destination
3462 175K IN-lo 0 -- lo * 0.0.0.0/0 0.0.0.0/0
28 3987 IN-eth0 0 -- eth0 * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 2 packets, 80 bytes)
pkts bytes target prot opt in out source destination
3462 175K OUT-lo 0 -- * lo 0.0.0.0/0 0.0.0.0/0
23 2736 OUT-eth0 0 -- * eth0 0.0.0.0/0 0.0.0.0/0

Chain IN-eth0 (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 192.168.2.0/24 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT udp -- * * 192.168.2.0/24 0.0.0.0/0 udp dpt:22
0 0 ACCEPT tcp -- * * 192.168.2.0/24 0.0.0.0/0 tcp dpt:111
0 0 ACCEPT udp -- * * 192.168.2.0/24 0.0.0.0/0 udp dpt:111
0 0 ACCEPT tcp -- * * 192.168.2.0/24 0.0.0.0/0 tcp dpt:139
0 0 ACCEPT udp -- * * 192.168.2.0/24 0.0.0.0/0 udp dpt:139
0 0 ACCEPT tcp -- * * 192.168.2.0/24 0.0.0.0/0 tcp dpt:445
0 0 ACCEPT udp -- * * 192.168.2.0/24 0.0.0.0/0 udp dpt:445
0 0 ACCEPT icmp -- * * 192.168.2.0/24 0.0.0.0/0

Chain IN-lo (1 references)
pkts bytes target prot opt in out source destination
3462 175K ACCEPT 0 -- * * 0.0.0.0/0 0.0.0.0/0

Chain OUT-eth0 (1 references)
pkts bytes target prot opt in out source destination
11 561 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0
10 2095 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0

Chain OUT-lo (1 references)
pkts bytes target prot opt in out source destination
3462 175K ACCEPT 0 -- * * 0.0.0.0/0 0.0.0.0/0

Taschentuch
28.08.07, 20:48
Kann mir niemand Helfen?

cane
29.08.07, 00:07
Ich empfehle dir dir hier ein richtig nettes Script automatisiert erstellen zu lassen:

http://harry.homelinux.org/modules.php?name=iptables_Generator

mfg
cane

Taschentuch
29.08.07, 11:11
Hm, danke. Also hat keiner eine idee was ich falsch gemacht habe? Denn mir ging es ja darum zu lernen und nich was automatisch machen zu lassen...

framp
31.08.07, 18:11
Ich habe eine zentrale Firewall in meinem NAT Router, aber ich möchte meinen eigenen PC gerne doch noch mit iptables absichern.

Das bedeutet aber auch, dass Du an zwei Stellen die Rules richtig setzen musst. Wenn einer der beiden FWs etwas nicht durchlässt kommt eben summa summarum nichts auf dem Port durch.

Ich würde nur eine FW nehmen. FWs haben die Angewohnheit zu wachsen - und irgendwann laufen beide FWs auseinander - ganz zu Schweigen davon, sie überhaupt erst einmal in sync zu bringen. Und ich glaube da liegt bei Dir momentan das Problem.

PS:
$IPTABLES -A IN-$IFACE -p icpm --icmp-type 8 -j ACCEPT Ein Protokoll icpm gibt es nicht. Du meinst wohl icmp ;)

Taschentuch
31.08.07, 21:04
Naja, die idee nir eine Firewall zu benutzen ist gut. Aber meine kleine andere Firewall ist in der Routerfirmware integriert und hat mir noch nie Probleme bereitet. Denn so funktioniert ja erstmal alles.

Wenn also ein Paket nich zu mir durch kommt liegst an der konfiguration meiner PFW und nicht am Router.

framp
31.08.07, 22:07
Ok. Wenn Du Deine kleine FW ausschaltest geht also alles.

Ich würde das Problem dann wie folgt einkreisen:

1) Vor den DROP Lines noch ein iptables LOG statement einbauen (ein/ausschaltbar). Dann siehst Du im Log welcher Request geblocked wurde. Wird in der SuSEFW auch gemacht. Ist sehr hilfreich.

2) tcpdump benutzen um zu sehen was geblocked wird falls Du nicht weiterkommst

3) wireshark benutzen um zu sehen was geblocked wird wird falls Du nicht weiterkommst

Taschentuch
31.08.07, 23:43
Ok danke das mit dem Log und wireshark werde ich mal probieren. Hatte ganz vergessen das iptables ja auch die möglichkeit gibt eigene Logrules zu definieren.

Ich habe bis jetzt nur "iptraf" benutzt und gesehen das die Pakete wohl anscheinend nach draußen kommen aber ich keine Verbindung aufbauen kann. Ich tippe also darauf das die ACK-Pakete nicht reinkommen.
Ich dachte immer das, das hier dafür sorgen würde das er ACK Pakete reinlässt welche auf ein SYN-Request meinerseits kommen.

$IPTABLES -A IN-$IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT

Naja, danke für den Tipp, denke das hilft mir weiter :)