iptables verständniss frage, xrdp nicht erreichbar.

DOS

16-Bit 4 Ever
Beiträge
158
Nabend, ich spiele gerade etwas mit iptables rum, im wahrsten sinne des Wortes und versuche folgendes zu verstehen.

Erstmal meine Config:
Code:
#!/bin/sh
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT

Mit dieser Config kann ich keine Verbindung zu xrdp aufbauen, setzte ich jedoch iptables -P OUTPUT ACCEPT ist dies ohne Probleme möglich.

Meine Frage nun, wieso :D Ich meine klar, Output muss natürlich nicht unbedingt auf DROP stehen aber mich würde jetzt stark interessieren, obwohl ich den Port für OUTPUT freigebe, kommt keine Verbindung zustande.

Welche Möglichkeiten habe ich mit befehlen, Informationen raus zu bekommen welche Ports nun alle für die Kommunikation nötig wären. Ich vermute jetzt einfach mal das wohl mehr als der Port 3389 für die Ausgehende Verbindung von nöten sein werden.

Meine HW ist nen RPI 2 mit 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
Achja, Internet ist direkt über den LAN-Port angeschlossen.

Besten Dank schonmal für die Hilfe :)
 

bitmuncher

Foren Gott
Beiträge
3.180
Wenn du OUTPUT auf DROP setzt, solltest du zumindest ESTABLISHED und RELATED auf ACCEPT haben, sonst kann er ja den Output für aufgebaute Verbindungen nicht senden.
 

hellfire

Doppel-As
Beiträge
129
Wenn du OUTPUT auf DROP setzt, solltest du zumindest ESTABLISHED und RELATED auf ACCEPT haben, sonst kann er ja den Output für aufgebaute Verbindungen nicht senden.

RELATED ist hier afaik nicht notwendig, lasse mich aber gerne eines Besseren belehren. Er hat ESTABLISHED. Das reicht aus. RELATED ist für solche Fälle, wenn zu manchen primären Verbindungen noch zusätzliche sekundäre Verbindungen auf weiteren Ports geöffnet werden, die damit in Verbindung stehen. Z. B. beim FTP-Protokoll.

Der Fehler ist die OUTPUT-Regel. Die ist falsch.

iptables -A OUTPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT

Richtig ist:

iptables -A OUTPUT -p tcp --sport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT

Grund:

Die Rückgabepakete haben als Quellport 3389 angegeben, nicht als Zielport. Weil: Is halt so!

Alternative:

Der Einfachheit halber könnte man aber diese zwei Regeln einführen. Dann würde ein komplettes Regelwerk mit weniger Regeln auskommen:
Code:
# Alle etablierten und mit etablierten Verbindungen verknüpften TCP-Verbindungen erlauben
iptables -I INPUT  1 -p tcp -m state --state=ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT 1 -p tcp -m state --state=ESTABLISHED,RELATED -j ACCEPT

Die obige Regel sollte auch an erster Stelle stehen. Damit müssen etablierte TCP-Verbindungen nur noch eine einzige iptables-Regel durchlaufen, was für eine Beschleunigung sorgt. Das wäre jetzt aber nur für viel Traffic bzw. viele Regeln mit einem tatsächlich bemerkbaren Unterschied verbunden.

Damit wäre Deine spezielle RDP-OUTPUT-Regel überflüssig und die beiden genannten würden für alle noch kommenden gelten.
 
Zuletzt bearbeitet:

Ähnliche Themen

Port Forwarding mit iptables

ip6tables Problem

[SOLVED][CentOS 7] Samba server nicht erreichbar trotz firewall regeln.

Wired-Lan komisches Verhalten

iptables blocke nur von bestimmter ip

Oben