RMI Probleme mit iptables

carlcgn

Grünschnabel
Hallo,
meine RMI-Anwendung läuft nur, wenn ich auf dem Server iptables deaktiviere, obwohl ich den Port 1099 freigegeben habe. Weiss jemand, ob ich noch andere Ports freigeben muss oder ob an meiner iptables Regel irgendetwas falsch ist?

iptables -A INPUT -p tcp --dport 1099 -j ACCEPT -m state --state NEW

Vielen Dank für jede Anregung!
 
Ich glaub normal gehoert die State-Bedingung vor das Accept, also so:
Code:
iptables -A INPUT -p tcp --dport 1099 -m state --state NEW -j ACCEPT
Hier werden jedoch nur Pakete akzeptiert wenn eine neue Verbindung aufgebaut werden soll. Pakete einer bestehenden Verbindung sind da nicht mit drin.
Also ist es auch meiner Meinung nach auch sinnvoll folgendes hinzuzufuegen:
Code:
iptables -A INPUT -p tcp --dport 1099 -m state --state ESTABLISHED -j ACCEPT

Kannst Du auch zusammenfassen indem Du --state NEW, ESTABLISHED schreibst.
 
Hallo,
vielen Dank für die Antwort.
Die RELATED und ESTABLISHED Verbindungen habe ich vorher schon generell erlaubt und die Ketten funktionieren ja auch z.B. für ssh oder ftp. Ich denke auch, dass es egal ist, wo die Bedingungen stehen, habe es aber trotzdem (leider ohne Erfolg) nochmal probiert.
Hier nochmal ein Ausschnitt aus der iptables-Konfiguration (policy ist DROP):
Code:
# alle etablierten
$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED  
# neue SSH  
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT -m state --state NEW  
# neue FTP  
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT -m state --state NEW  
# neue HTTP  
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT -m state --state NEW  
# neue SMTP  
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT -m state --state NEW  
# neue POP  
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT -m state --state NEW  
# java rmi  
$IPT -A INPUT -p tcp --dport 1099 -j ACCEPT -m state --state NEW    
# Rest loggen (wird dann abgelehnt)  
$IPT -A INPUT -j LOG --log-prefix "abgelehnt: "

Wie gesagt, wenn ich iptables abschalte funktioniert meine RMI-Anwendung. Der Paketfilter soll aber auf jeden Fall drin bleiben. Welche Möglichkeiten habe ich noch? Ich sehe keinen Sinn darin, einen anderen Port zu versuchen, oder doch? Ich habe keinen Port explizit im Java-Code angegeben, da ich davon ausgehe, dass dann 1099 verwendet wird.
Ich hoffe, es hat jemand irgendwelche Ideen, was ich sinnvoller Weise noch versuchen kann.
 
Mir kommt grad so spontan in den Sinn, dass diese ganze Geschichte von wegen NEW, ESTABLISHED und RELATED was mit Connection-Tracking zu tun hat.
Das funktioniert glaub ich nicht unbedingt fuer alles, obwohl es eigentlich im Falle von TCP-Verbindungen immer laufen sollte, da ueber TCP ja eine Verbindung eindeutig festzustellen ist, im Gegensatz zu UDP, bei dem Einfach nur wie doof Pakete in's Land gejagt werden.
Dabei kommt mir jetzt spontan die Frage in den Sinn ob Deine RMI-Application nicht vielleicht UDP nutzt.
Ein Versuch waere es meiner Meinung nach fuer die Protokolle die Du benoetigst grundsaetzlich alle Pakete zu akzeptieren.
Probier doch mal diese von mir leicht abgewandelte Form Deines Scripts:
Code:
# alle ungueltigen droppen
$IPT -A INPUT -m state --state INVALID -j DROP
#SSH  
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
#FTP  
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
#HTTP  
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
#SMTP  
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
#POP  
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
# java rmi  
$IPT -A INPUT -p tcp --dport 1099 -j ACCEPT
# Rest loggen (wird dann abgelehnt)  
$IPT -A INPUT -j LOG --log-prefix "abgelehnt: "
 
Bist Du sicher, dass das ueber TCP und nicht ueber UDP laeuft?
Mach doch mal, bei offener Firewall, einen Portscan und guck was Du findest.
Wenn es so nicht geht, dann muss es anders gehen. ;) Im Klartext, vielleicht brauchst Du doch noch einen zusaetzlichen Port.
 
Nein, ich bin mir gar nicht sicher :) Ich habe mal in der Log-Datei geschaut und da tauchen auch einige abgelehnte UDP Pakete auf. Der anderen Angaben da sind für mich böhmische Dörfer. Angenommen, es wäre UDP, was müsste ich dann für Regeln bei iptables eintragen?
Ich habe mir Superscan 4.0 runtergeladen und versuche jetzt mal einen Scan, aber ich blick das noch nicht so richtig.
 
Wenn es UDP ist, dann aenderst Du diese Zeile
Code:
$IPT -A INPUT -p tcp --dport 1099 -j ACCEPT
in diese Zeile
Code:
$IPT -A INPUT -p udp --dport 1099 -j ACCEPT
um.
 
Es läuft, ächz
Also nachdem ich mir mal mehr in die Log-Datei geschrieben habe, habe ich festgestellt, dass noch irgendwelche Ports im 32000-Bereich benutzt werden. Alles TCP. Nachdem ich die jetzt auch freigegeben habe funktioniert es endlich.
Danke für deine Hilfe, reptiler :)
 
Zurück