PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables -> Forward Table blockt alle Windows-Geräte, Linux hingegen funktioniert



dreamer_dani
12.08.14, 20:01
Hi Leute,

ich habe ein merkwürdiges Problem. Ich über mich gerade daran eine Linux-Kiste als Firewall aufzubauen.
Habe jetzt versucht die Forward-Tabelle einzurichten.
Mit einem Linux-Betriebssystem (PC, Android am Handy) klappt auch alles, nur Rechner mit Windows 7/8 Betriebssystem bekommen einfach keine Verbindung zum Internet.

Weder http(s) noch EMail über IMAP / SMPT / POP3..

Ich kann mir das einfach nicht erklären. Die Policy ist auf DROP gesetzt:

Startskript:



#--------------------------------------------------------------------------------------
#SYSTEM INITALISIEREN
#--------------------------------------------------------------------------------------

#Die Regeln aller Ketten loeschen
iptables -F
iptables -t nat -F

#Policity setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#--------------------------------------------------------------------------------------
#LOOPBACKUP-DEVICE FREIGEBEN (local device lo)
#--------------------------------------------------------------------------------------
#eingehende Kommunikation für lo (Localhost) zulassen
iptables -A INPUT -i lo -j ACCEPT
#ausgehende Kommunikation für lo (Localhost zulassen
iptables -A OUTPUT -o lo -j ACCEPT
#--------------------------------------------------------------------------------------

#--------------------------------------------------------------------------------------
#LOCAL.TABLE EINBINDEN
sh /root/.iptables/tables/local.table
#--------------------------------------------------------------------------------------

#--------------------------------------------------------------------------------------
#FORWARD.TABLE EINBINDEN
sh /root/.iptables/tables/forward.table
#--------------------------------------------------------------------------------------

#--------------------------------------------------------------------------------------
#NAT.TABLE EINBINDEN
#sh /root/.iptables/tables/nat.table
#--------------------------------------------------------------------------------------



Dann noch die die FORWARD REGELN:








#Variablen

CLIENTS=192.168.1.0/24
LAN="eth0"
IPTABLES="/sbin/iptables"


#------------Antworten zulassen fuer ESTABLISHED/RELATED-------------------#
$IPTABLES -A FORWARD -m state --state ESTABLISHED -j ACCEPT
#------------Antworten zulassen fuer REALATED Meldungen ICMP-------------------#
$IPTABLES -A FORWARD -p icmp -m state --state RELATED -j ACCEPT


#____________________________________________
#HTTP(S) und DNS

$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 80 -j LOG
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 443 -j LOG
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 443 -m state --state NEW -j ACCEPT
#DNS
$IPTABLES -A FORWARD -s $CLIENTS -d any/0 -p udp --dport 53 -m state --state NEW -j ACCEPT

#____________________________________________

#SSH IN/OUT
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 22 -m state --state NEW -j ACCEPT

#___________________________________________
#EMAIL

#O2
$IPTABLES -A FORWARD -s $CLIENTS -d imap4.o2online.de -i $LAN -o $LAN -p tcp --dport 143 -m state --state NEW -j ACCEPT
#STRATO
$IPTABLES -A FORWARD -s $CLIENTS -d imap.strato.de -i $LAN -o $LAN -p tcp --dport 993 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -s $CLIENTS -d smtp.strato.de -i $LAN -o $LAN -p tcp --dport 465 -m state --state NEW -j ACCEPT
#TH NBG
$IPTABLES -A FORWARD -s $CLIENTS -d my.ohmportal.de -i $LAN -o $LAN -p tcp --dport 993 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -s $CLIENTS -d my.ohmportal.de -i $LAN -o $LAN -p tcp --dport 465 -m state --state NEW -j ACCEPT

#O2 POP3
$IPTABLES -A FORWARD -d pop3.o2online.de -p tcp --dport 995 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -d smtp.o2online.de -p tcp --dport 465 -m state --state NEW -j ACCEPT

#___________________________________________
#FTP OUT
modprobe ip_conntrack-ftp


#__________________________________________
#SAMBA OUT

#__________________________________________
#HTTP(S) und APACHE


#__________________________________________
#NTP OUT




Wäre super wenn Ihr mir das erklären könntet. Wie gesagt bin noch Anfänger mit Netfilter / iptables.


Danke schon mal.

Gruß dreamer_dani

fork
12.08.14, 20:52
Hi Dani,

ohne mir das im Detail anzuschauen:

* Bekommen die Windows Clients eine DHCP-IP?
* welche Regeln greifen, wenn Du mit einem Windows PC eine Seite aufrufst?



iptables -Z FORWARD # Zaehler zuruecksetzen
watch -n1 iptables -L FORWARD -v -n # jede Sekunde die Regeln und Zaehler anzeigen

dreamer_dani
12.08.14, 22:49
Hi fork,

ja die Adressen werden vom isc-dhcpd verteilt, der ebenfalls auf der gleichen Kiste läuft wie die IP-Tables. Meine Geräte haben hier alle fest zugeordnete Adressen anhand der MAC-Adressen.
Bei dem einen Rechner mit Dual-Boot erhält der Client wenn Linux gebootet und wenn Windows gebootet genau die gleiche Konfiguration. Deshalb kann ich es auch gerade nicht so richtig verstehen.

Also die Regeln für Port 80 und Port 443



#____________________________________________
#HTTP(S) und DNS

$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 80 -j LOG
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 443 -j LOG
$IPTABLES -A FORWARD -s $CLIENTS -i $LAN -o $LAN -p tcp --dport 443 -m state --state NEW -j ACCEPT
#DNS
$IPTABLES -A FORWARD -s $CLIENTS -d any/0 -p udp --dport 53 -m state --state NEW -j ACCEP



PS:
Könntest du mir kurz erläutern was die Regeln die du mir unten angehangen hast bewirken? Soweit bin ich bisher noch nicht mit meinem Wissen fortgeschritten.

Danke Gruß dani

fork
12.08.14, 23:50
Hi Dani,

die zwei Befehle helfen Dir nur beim Debuggen. Der erste Befehl setzt die Byte/Paket-Zaehler von IP-Tables zurueck. Der zweite ist ein Mini-Monitor, bei dem Du in Echtzeit siehst wie die Pakete/Bytes hochgezählt werden. D. h. wenn Du auf der einen Seite ein Terminal offen hast mit dem watch.... von oben und auf der anderen Seite auf Deiner Windows Kiste eine Webseite aufrust, dann siehst Du, bei welchen Regeln die Pakete mehr werden. Ggf. kannst Du so herausfinden, ob Pakete von der falschen Regel erfasst werden - oder eben gar nicht und deswegen auf Policy DROP.

Du hast nur 1 Netzwerkkarte in Deinem Server? Kann Sein dass Dir da ICMP-Redirect in die Quere kommt. (Der Server schickt an Deine Clients evtl. die Info raus, dass sie selbst zum Router Verbindung haben.) Das könnte von Win+Lin unterschiedlich gehandhabt werden.

Ansonsten für weiteres Debugging: Wie ist Dein Setup(IP-Adressen, Verkabelung)?

dreamer_dani
13.08.14, 20:57
Hi,

habe die beiden Befehle ausgeführt und habe folgende Ausgaben bekommen:

Mit Linux + Firefox ein paar verschiedene Internetseiten aufgemacht


Chain FORWARD (policy DROP 27 packets, 7156 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
4 240 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:80 state NEW
5 300 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:443 state NEW
0 0 ACCEPT udp -- * * 192.168.1.0/24 0.0.0.0/0 udp dpt:53 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:22 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 91.136.8.190 tcp dpt:143 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 81.169.145.103 tcp dpt:993 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 81.169.145.133 tcp dpt:465 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 141.75.201.31 tcp dpt:993 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 141.75.201.31 tcp dpt:465 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 91.136.8.190 tcp dpt:995 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 91.136.8.190 tcp dpt:465 state NEW




Das gleiche mit Windows + Firefox , nur das ich hier nicht mal erfolgreich eine Website angezeigt bekomme. Nach etwa 10s kommt "Diese Seite kann nicht angezeigt werden..."


Chain FORWARD (policy DROP 222 packets, 38555 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state ESTABLISHED
11 652 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:80 state NEW
5 292 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:443 state NEW
0 0 ACCEPT udp -- * * 192.168.1.0/24 0.0.0.0/0 udp dpt:53 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 0.0.0.0/0 tcp dpt:22 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 91.136.8.190 tcp dpt:143 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 81.169.145.103 tcp dpt:993 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 81.169.145.133 tcp dpt:465 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 141.75.201.31 tcp dpt:993 state NEW
0 0 ACCEPT tcp -- eth0 eth0 192.168.1.0/24 141.75.201.31 tcp dpt:465 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 91.136.8.190 tcp dpt:995 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 91.136.8.190 tcp dpt:465 state NEW



Das mit ICMP-Redirect habe ich mal nachgelesen, habe in der Datei /etc/sysctl.conf folgende Zeil aktiviert (war auskommentiert)



net.ipv4.conf.all.send_redirects = 0





Zu meiner Verkabelung. Alle Rechner hängen an einem 8er Switch, der eine Verbindung zur Fritzbox hat. Auch die besagte Linux Firewall ist an diesem Switch angeschlossen.
Da ich aktuell nur versuche mich in IP-Tables einzuarbeiten, habe ich keine 2. Netzwerkkarte, das heißt der Netzwerkverkehr geht über eth0 in den Linux-Rechner
mit den iptables und verlässt auch alles wieder über eth0.

Auf dem Linux-Rechner läuft ein isc-dhcpd der die Adressen nach MAC verteilt 192.168.1.50-250. Der Standardgateway ist 192.168.1.3 (Linux-Rechner mit Firewall), der DNS Server ist 192.168.1.2 (FritzBox)

Ist hier vielleicht ein Problem mit dem DNS auf 192.168.1.2??

Danke schon mal für die guten Tipps hier!!

dreamer_dani
15.08.14, 20:54
Hi, ich bin es nochmal,

habe nun mal ein bisschen weiter versucht die Ursache meines Problems zu finden und habe mal meinen Netzwerkverkehr mit WireShark aufgezeichnet.
Und dabei bin ich fündig geworden, meine Firewall sendet ICMP-Redirect Pakete an die Clients


117 4.386320 192.168.1.3 192.168.1.111 ICMP 276 Redirect (Redirect for host)




Type: 5 (Redirect)
Code: 1 (Redirect for host)
Checksum: 0x1a82 [correct]
Gateway address: 192.168.1.2 (192.168.1.2)




Wie oben bereits beschrieben habe ich in der /etc/sysctl.conf bereits die Zeilen eingefügt die die Redirects eigentlich abschalten sollen?
Könnt Ihr mir vielleicht sagen ob es noch eine andere Möglichkeit gibt die Redirects zu unterbinden.

Auf dem Firewall-Rechner läuft Debian 6

Danke hoffe ihr könnt mir weiterhelfen

fork
16.08.14, 20:54
* ICMP-Redirect: Hast Du danach Deinen Rechner neu gestartet oder die Änderung auch nochmal manuell aktiviert(sysctl -w net.ipv4.conf.all.send_redirects=0)?

* Ansonsten empfehle ich Dir einfach mal eine zusätzlich IP auf deinem FW-Interface(ifconfig eth0:1 192.168.2.1/24 ...) und den DHCP darauf umzustellen, so dass Du logisch getrennte Netze bei FBF<->FW und FW<->CLIENTS hast. Im Moment hast Du dadurch auch asynchrones Routing, da die FBF auf dem Rückweg direkt an die Clients sendet, ist auch im Netz der FBF, kein Grund das an deine FW zurückrouten zu müssen. Vielleicht schmeckt das den Windows-Clients nicht.

dreamer_dani
18.08.14, 23:00
Hi fork,

also ich sehe schon das es die Sache so nicht ordentlich funktioniert wie es bisher konfiguriert ist.
Ich habe jetzt deinen Ansatz weiter verfolgt mit dem virtuellen Interface, das funktioniert soweit auch, auf der Firewall habe ich zu den beiden Subnetzen Verbindung sowohl au eth0 als auch auf eth0:1

Nur habe ich jetzt das Problem das ich im Subnetz auf eth0 (192.168.1.0/24) kein DHCP mehr bekomme? Leider weis ich jetzt gerade auch nicht weiter, die Suche bei Google hat leider auch nicht geholfen. Weist du wie ich den Service jetzt auf eth0:1 umstellen kann? Muss ich nun als Gateway den DSL-Router 192.168.0.2 angeben für die DHCP-Clients oder die Adresse der Firewall ( 192.168.1.3 bzw 192.168.0.3)??

Danke schon mal für die Antwort, hoffe das Projekt hier führt doch noch irgendwan zum Erfolg...

Gruß dani