PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu iptable Regeln(--sport,--dport)



Ian Salvo
03.07.09, 21:39
Setze ich folgende Regel:

iptables -A OUTPUT -p tcp --dport 80 -j MYACCEPT

erlaubt die Firewall nur Verbindungen zu anderen Hosts auf Port 80.

Setze ich nun das:

iptables -A OUTPUT -p tcp --sport 80 -j MYACCEPT

dann erlaubt sie nur Verbindungen die von meinem Host über Port 80, also von dem Apache aus, gestarted werden?

Ist das so richtig?

cane
04.07.09, 10:58
dann erlaubt sie nur Verbindungen die von meinem Host über Port 80, also von dem Apache aus, gestarted werden?

Was für Verbindungen startet Apache genau. Ich bin fast sicher Du machst da einen Denkfehler.

mfg
cane

Ian Salvo
04.07.09, 11:03
Danke, für deine Antwort.

Ich meine, dass iptables nur ausgehende Pakete zulässt, die über Port 80 rauswollen.

cane
04.07.09, 11:16
Der Apache startet aber keine Verbindungern vom Quellport 80.

--> Wozu soll das ganze dienen?

mfg
cane

Ian Salvo
04.07.09, 11:28
mein problem ist eigentlich nur das verständnis zu dem source und destination port.

Derjenige der eine Anfrage macht, sendet im Header "seinen" sourceport und destintation port mit. Die Anfrage richtet sich immer an den Dienst der auf dem remote Host an dem destination port horcht!?
Dienste die auf meinem Server laufen belegen Ports < 1023. "Horchen" sie dort nur, oder können Sie über diese Ports auch Requests starten? Machen die üblichen Dienste (MySQL, Apache, SSH) überhaupt Requests. Und wenn ja über welche Ports.

Dann habe ich noch Programme auf meinem Server, die Requests über Source Ports > 1023 starten. Wenn diese Requests beantwortet werden, kriegen die Programme dann Antwort auf dem Source Port? Oder? (Der Remote Host dreht bei der Antwort sport und dport um)

Sorry für die blöden Fragen. aber ich möchte das verstehen.
Danke

rudelgurke
07.07.09, 16:40
Kurz gesagt - ein Client der via Browser auf deinen Apache zugreifen will:

Client - Port >1024 -->> Apache Port 80

Dann antwortet Apache:

Apache Port 80 -->> Client - Port >1024

Auf Iptables bezogen:



iptables -A INPUT --sport 1024:65535 --dport 80 -j ACCEPT
iptables -A OUTPUT --sport 80 --dport 1024:65535 -j ACCEPT


Dass kann noch verfeinert werden mit "states" da Apache nicht selbst eine Verbindung zu Client aufbaut - normalerweise:



iptables -A INPUT --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED,RELEATED -j ACCEPT
iptalbes -A OUTPUT --sport 80 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT


Für andere Dienste kann man dann alles kompakt:



HIGH="1024:65535"
PORTS="25 80 443"

for PRT in $PORTS do
iptables -A INPUT --sport $HIGH --dport $PRT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptabales -A OUTPUT --sport $PRT --dport $HIGH -m state --state ESTABLISHED,RELATED -j ACCEPT
done


Selbiges nur als Denkanstoß - NICHT einfach blind übernehmen. Empfehlenswert dazu die Netfilter Docu und TCP/IP :)

Ian Salvo
08.07.09, 15:46
sehr edel ;D
gut zu verstehen, danke