elradko
Goto Top

Firewall (iptables) blockiert trotz Freigabe von HTTP den Port 80 sporadisch

Server: ubuntu 10.04 LTS
Firewall: iptables
GUI: fwbuilder

Hallo Zusammen,

seltsames Phänomen:

Ich habe mehrere Server, die Identisch konfiguriert sind. Auf allen kann ich beobachten, dass trotz Freigabe des Dienstes HTTP(port 80, TCP) für alle IP's, sporadisch IPs geblockt werden und mit DENY in der Log landen.

Ein trace mit wireshark brachte bisher kein Ergebnis.

An welcher Stelle macht es Sinn anzufangen zu suchen ?

Grüße

Content-ID: 193335

Url: https://administrator.de/contentid/193335

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

Luie86
Luie86 26.10.2012 um 11:42:37 Uhr
Goto Top
Hallo,

hast du vielleicht fail2ban o.a. laufen?
Ansonsten wäre es sinnvoll mal deine tables hier zu posten.

Gruß Daniel
Lochkartenstanzer
Lochkartenstanzer 26.10.2012 um 12:15:37 Uhr
Goto Top
Zitat von @Luie86:
Hallo,

hast du vielleicht fail2ban o.a. laufen?
Ansonsten wäre es sinnvoll mal deine tables hier zu posten.


ggf noch logs schreiben, wenn Port 80 geblockt wird.

lks
Hitman4021
Hitman4021 26.10.2012 um 12:26:53 Uhr
Goto Top
Hallo,

Sporadisch? Eine Firewall Regel wird immer gleich abgearbeitet, egal wann.
Gibt es Gemeinsamkeiten bei den geblockten Anfragen?

Sonst wie meine Vorredner schon sagtem poste doch mal dein IPTables Script.

Gruß
elradko
elradko 26.10.2012 um 13:13:49 Uhr
Goto Top
Danke für Eure Antworten.

IPtables Script, das wird von fwbuilder erstellt.
Würde auch die Ausgabe von iptables -L reichen ?

Grüße
Hitman4021
Hitman4021 26.10.2012 um 13:21:14 Uhr
Goto Top
Hallo,

Zitat von @elradko:
IPtables Script, das wird von fwbuilder erstellt.
Ich halte von den Frontends für diese ganzen Dingen nicht wirklich was, also empfehle ich dir dieses Buch für Iptables.
http://www.addison-wesley.de/main/main.asp?page=deutsch/bookdetails& ...
Vl. erstellst du ja irgendwann deine Firewall selbst.

Würde auch die Ausgabe von iptables -L reichen ?
Ja besser wie hier herumraten.

Und Fail2Ban nutzt du definitiv nicht?

Gruß
elradko
elradko 26.10.2012 aktualisiert um 15:08:46 Uhr
Goto Top
Hallo Hitman4021,

nein wir benutzen kein fail2ban, habe es gerade gecheckt.

Hier die Ausgabe von iptables -L -> habe die IPs geändert
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
Cid20641X25196.0  all  --  server1  anywhere            
Cid20641X25196.0  all  --  localhost.localdomain  anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  IPs intern        anywhere            state NEW 
Cid21045X25196.0  tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp multiport dports 54321,www,https state NEW 
ACCEPT     icmp --  PROVIDER      anywhere            icmp type 8 code 0 state NEW 
In_RULE_7  all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
In_RULE_7  all  --  anywhere             anywhere            

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            state NEW 

Chain Cid20641X25196.0 (2 references)
target     prot opt source               destination         
DROP       all  --  anywhere             server1 
DROP       all  --  anywhere             localhost.localdomain 

Chain Cid21045X25196.0 (1 references)
target     prot opt source               destination         
In_RULE_3  all  --  IP 2         anywhere            
In_RULE_3  all  --  IP 3  anywhere            

Chain In_RULE_3 (2 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere            LOG level info prefix `RULE 3 -- ACCEPT '   
ACCEPT     all  --  anywhere             anywhere            

Chain In_RULE_7 (2 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere            LOG level info prefix `RULE 7 -- DENY '   
DROP       all  --  anywhere             anywhere    


Es schlägt also ab und zu "RULE 7" an.

Auzug aus syslog:
Oct 26 14:32:17 server kernel: [6329164.066004] RULE 7 -- DENY IN=eth0 OUT= MAC=00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00 SRC=ZZZ.ZZZ.ZZZ.zzz DST=XXX.XXX.xxx.XXX LEN=40 TOS=0x00 PREC=0x00 TTL=121 ID=13373 DF PROTO=TCP SPT=51826 DPT=80 WINDOW=16329 RES=0x00 ACK FIN URGP=0
Hitman4021
Hitman4021 26.10.2012 aktualisiert um 15:05:39 Uhr
Goto Top
Hi,

bitte benutz die < code> < /code> Tags, ohne Leerzeichen.

Erstell mal eine Regel:
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW -j ACCEPT
und das vor deiner Regel
ACCEPT tcp -- anywhere anywhere tcp multiport dports 54321,www,https state NEW

und für Output würde eigentlich
iptables -A OUTPUT -j ACCEPT
reichen.

Und für was braucht du die Forward Chains?
iptables -P FORWARD DROP
und gut ist.

Gruß
Hitman4021
Hitman4021 26.10.2012 aktualisiert um 15:22:39 Uhr
Goto Top
Hallo,

oder du packst das in ein Shell Script und vergisst die GUI. Einfach ausführen und Firewall ist aktiv.
#!/bin/bash
#Beginn der Definitionen

IPTABLES=´which iptables´	#Pfad zu den Iptables
DEV="eth0"					#Netzwerkkarte  
ADMIN_IP=""					#Admin IP eintragen!!  

###################################
##
##	Ports
##
###################################

HTTP="80"			#HTTP Port  
HTTPS="443"			#HTTPS Port  
SSH="22"                        #SSH PORT  

####################################
##
## Leere die Ketten 
##
####################################

$IPTABLES -F

####################################
##
##	Sperre Alles bis auf Output
##
####################################

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

#####################################
##
## Beginn der Regeln
##
#####################################

#Erlaube Bereits aufgebaute Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Erlaube HTTP von überall
$IPTABLES -A INPUT -i $DEV -p tcp --dport $HTTP -m state --state NEW -j ACCEPT

#Erlaube HTTPS von überall
$IPTABLES -A INPUT -i $DEV -p tcp --dport $HTTPS -m state --state NEW -j ACCEPT

#Erlaube SSH von Admin_IP
$IPTABLES -A INPUT -i $DEV -s $ADMIN_IP -p tcp --dport $SSH -m state --state NEW -j ACCEPT

#Erlaube Ping von überall
$IPTABLES -A INPUT -p icmp --icmp-type ping -j ACCEPT

zum deaktivieren der Firewall führst du das aus.
#!/bin/bash
#Beginn der Definitionen

IPTABLES=´which iptables´	#Pfad zu den Iptables
####################################
##
## Leere die Ketten 
##
####################################

$IPTABLES -F

####################################
##
##	Erlaube alles
##
####################################

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

Gruß
elradko
elradko 26.10.2012 um 15:32:09 Uhr
Goto Top
Hallo,

danke, bin aber auf fwbuilder angewiesen, da auch andere einen Blick darauf werfen.

Einen Tipp, wie ich es anpassen könnte ?

Ich habe die Regel als einzelne Regel mit fwbuilder eingefügt und das gleiche Ergebnis:

ca 20 % der Zugriffe auf Port 80 werden verboten.

Ich bin nicht so frei im probieren, da der Server live ist.

Grüße
Hitman4021
Hitman4021 26.10.2012 um 15:35:42 Uhr
Goto Top
Hallo,

dann füg die Regel mal ganz oben ein.
Dann muss er sie annehmen.

Gruß
Lochkartenstanzer
Lochkartenstanzer 26.10.2012 um 16:28:21 Uhr
Goto Top
moin

Zum Thema fwbuilder:

Wenn man eine Umgebung hat, in der auch Leute, die sich ncith mit iptables auskenne Regel ein- oder auscschalten können sollen, ist fwbuilde rgar nciht so scheclt. Ist relativ einfach zu bedienen und macht normalerweise auch ordentliche Skripten, wenn auch nciht so schön wie "handgeschnitztes".

@to:

Du kannst in fwbuidler logs einschalten udn siehts dann im syslog, welche Regeln für den drop verantwortlich sind. dann kanst Du näher nachforschen.

lks

PS: Es pfuscht aber außer fwbuilder kein weiterer in den iptables rum, oder?
elradko
elradko 26.10.2012 aktualisiert um 16:36:01 Uhr
Goto Top
Hallo,

nun fwbuilder stellt mit diesem Aufruf die Regel zusammen:
 $IPTABLES -A INPUT -i eth0  -p tcp -m tcp  -m multiport  --dports XXXX,80,443  -m state --state NEW  -j ACCEPT
Grüße
Hitman4021
Hitman4021 26.10.2012 um 16:38:19 Uhr
Goto Top
Hallo,

wenn die noch an der richtigen Position steht sollte es funtioniern.
Ist diese nun bei iptables -L ganz oben?

Gruß
elradko
elradko 30.10.2012 um 14:36:08 Uhr
Goto Top
Nun es wird nur über fwbuilder die iptables gesetzt. Die Regel weiß ich schon welche blockiert, das ist die letzte Regel. Die alles verbieten soll was nicht frei gegeben wurde.
Hitman4021
Hitman4021 30.10.2012 um 14:48:24 Uhr
Goto Top
Hallo,

du brauchst keine Regel die alles blockt. Für das hast du ja die Default Policy.
Iptables werden von oben nach unten abgearbeitet, das heist wenn eine Regel matcht werden die danach ignoriert.
Also wenn deine Allow Regel an erster Stelle ist, kommt er nie zur zweiten Stelle.

Immer Reihenfolge beachten.

Gruß