PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables zu große portbreite bei ftp ?



Callisto
17.04.05, 11:42
Nach diesem Threat http://www.linuxforen.de/forums/showthread.php?t=164313&highlight=iptables+ftp
sind die Konfigurationen für iptables und ftp so:


-A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED --sport 21 -j ACCEPT

-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED --dport 21 -j ACCEPT

-A INPUT -p tcp -m state --state ESTABLISHED --source-port 1024:65535 -j ACCEPT

-A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED --destination-port 1024:65535 -j ACCEPT

Die Konfig funktioniert auch, mein problem sind die Source/Destinationports von 1024-65535. Die Portbreite ist mir zu groß. Kann mir jemand sagen ob ich ne kleinere Portbreite nehmen kann ?

Danke Callisto

geronet
17.04.05, 11:55
Solang es nur ESTABLISHED-Pakete sind ist das doch egal..

canis_lupus
17.04.05, 13:56
Der Client bestimmt den Portbereich, den er nutzt. Das kannst Du leider nicht vorhersagen. Du könntest zwar alle gängigen Betriebsysteme untersuchen, aber ist der Aufwand und das Restrisiko jemanden auszusperren es wert?

Harry
17.04.05, 19:48
Hi,

genau genommen kannst Du die Portbereiche aus den beiden Regeln sogar komplett entfernen und damit den erlaubten Portbereich damit indirekt noch weiter vergrößern. Genauso kannst Du bei den beiden Regeln auch auf die Definition des Transportprotokolls verzichten.

Denn wir Geronet schon sagte: Es handelt sich lediglich um ESTABLISHED- und RELATED-Pakete, also um Pakete, die zu einer eh schon erlaubt aufgebauten Verbindung gehören aber keinesfalls eine neue Verbindung zulassen.

Harry

Svenny
18.04.05, 10:24
schau dir mal conntrack_ftp oder ftp_conntrack

ash51
18.04.05, 12:55
Der Client bestimmt den Portbereich, den er nutzt. Das kannst Du leider nicht vorhersagen. Du könntest zwar alle gängigen Betriebsysteme untersuchen, aber ist der Aufwand und das Restrisiko jemanden auszusperren es wert?

Stimmt so nicht ganz. Bei aktivem FTP ist diese Aussage korrekt, bei passivem FTP läuft die Geschichte allerdings anders ab. Dort kann ein Portbereich definiert werden in dessen Range sich Clients verbinden.

Harry
18.04.05, 13:17
Hi ash51,

die Aussage von canis_lupus ist schon korrekt, wenn man sie richtig liest:

Der Client bestimmt den Portbereich, den er nutzt.
Natürlich bestimmt der Client seinen eigenen Portbereich sowohl für den Kommando- als auch den Datenkanal und zwar unabhängig von aktiven oder passiven FTP.
Genauso bestimmt ja auch der Server den Portbereich, auf dem er seinen Datenkanal anbietet (oder bei aktivem FTP: von dem er seine Datenverbindung auf den Client aufbaut). Und das einzige was sich da serverseitig - in Abhängigkeit vom eingesetzten FTP-Server - konfigurieren lässt, ist idR. der Portbereich für den Datenkanal _auf dem Server_.

Harry

Wordooo
18.04.05, 13:18
Stimmt so nicht ganz. Bei aktivem FTP ist diese Aussage korrekt, bei passivem FTP läuft die Geschichte allerdings anders ab. Dort kann ein Portbereich definiert werden in dessen Range sich Clients verbinden.

ja, das bestimmt eigentlich der server, muss aber natuerlich auch unterstuetzt werden (die aenderung), MS FTP kanns soweit ich weiss nicht, aber das gehoert dann auch in ein anderes forum :D

ash51
18.04.05, 14:03
Hi ash51,

die Aussage von canis_lupus ist schon korrekt, wenn man sie richtig liest:

Natürlich bestimmt der Client seinen eigenen Portbereich sowohl für den Kommando- als auch den Datenkanal und zwar unabhängig von aktiven oder passiven FTP.............................Und das einzige was sich da serverseitig - in Abhängigkeit vom eingesetzten FTP-Server - konfigurieren lässt, ist idR. der Portbereich für den Datenkanal _auf dem Server_.

Harry

Da widerspricht du dir nun aber selbst ;)


Natürlich bestimmt der Client seinen eigenen Portbereich sowohl für den Kommando- als auch den Datenkanal und zwar unabhängig von aktiven oder passiven FTP

Nein. Ich kann z.B. beim pureftpd Einstellen das der Client seinen Datenkanal (passives FTP) zum Server nur im Portbereich 30000-30100 aufbauen darf. Der Client kann/darf dann nicht andere Ports benutzen. Der Client bestimmt somit _nicht_ seinen eigenen Portbereich bei passivem FTP für den Datenkanal, dieser wird vom Server vorgegeben.

Harry
18.04.05, 14:28
Hi ash51,

Dir ist schon klar, dass ein Datagramm auf Transportebene bei den Protokollen TCP und UDP jeweils zwei Portnummern mit sich rumschleppt?
Die eine ist halt der eigene selbst genutze Port (auch Source- oder Absenderport genannt) und der andere ist der, der den Dienst auf der Gegenstelle adressiert (auch Destination- oder Zielport genannt).

Wenn Du Dir darüber klar bist, dann darfst Du auch hier wieder weiter schreiben ;)

Harry

ash51
18.04.05, 14:36
Harry, Harry, Harry. Schön das du mir das erlaubst. Ich schreib jetzt einfach mal drauf los. ;)

Schau dir mal diesen Link (http://slacksite.com/other/ftp.html) an, besonders beim passivem FTP --> Schritt 1,2,3 und dann erzähl mir mal was dazu.

ash51
18.04.05, 14:50
Hi ash51,

Dir ist schon klar, dass ein Datagramm auf Transportebene bei den Protokollen TCP und UDP jeweils zwei Portnummern mit sich rumschleppt?
Die eine ist halt der eigene selbst genutze Port (auch Source- oder Absenderport genannt) und der andere ist der, der den Dienst auf der Gegenstelle adressiert (auch Destination- oder Zielport genannt).

Harry

Richtig. Gut erkannt. Das einzigste was der Client bei der passiven Verbindung bestimmt ist sein Sourceport, von dem er sich zum Server connected. Das Ziel, also der Port wohin er sich connecten soll, diesen teilt ihm dabei immer noch der Server mit.

Harry
18.04.05, 15:34
Hi ash51,


Das einzigste was der Client bei der passiven Verbindung bestimmt ist sein Sourceport, von dem er sich zum Server connected.
ich danke Dir für diese Feststellung :)
Wenn Du jetzt nochmal die Texte von canis_lupus und mir liest, dann wirst Du feststellen, dass wir in unseren Posting nichts anderes geschrieben haben.

Und: Wenn Du Dir die Filterregeln im erstern Threadstarter-Posting parallel dazu durchliest, dann wirst Du ebenfalls feststellen, dass sich die dort gelisteten Ports genau auf dieselbe Clientseite beziehen.

Undund: Wenn Du nun nochmal Dein Post liest, dann wirst Du darüber hinaus feststellen, dass das inhaltlich nichts mit dem Topic zu tun hatte :p Die Verwirrung in diesem Thread kam lediglich durch Wordooo's Posting und ich denke, Du bist einfach auf diesen Zug aufgesprungen, gell? :)

Undundund: Du darfst jetzt auch wieder posten ;)

Harry

Wordooo
18.04.05, 15:40
ach ja, jetzt bins ich wieder :D ne, also das stimmt schon das der quell port nicht vom server vorgegeben wird, hab da zu schnell auf "reply" gedrueckt :) aber rein inhaltlich vom problem her laesst sich das am einfachsten loesen wenn man wie gesagt am ftpd ein range vergibt, quellport hin oder her ...

ash51
18.04.05, 17:15
Und: Wenn Du Dir die Filterregeln im erstern Threadstarter-Posting parallel dazu durchliest, dann wirst Du ebenfalls feststellen, dass sich die dort gelisteten Ports genau auf dieselbe Clientseite beziehen.

Ah jetzt ja :D. Ich hatte den ersten Beitrag nur kurz überflogen, daher wohl die ganze Konfusion. Hab das alles von der Serverseite aus gesehen. Ich stell mich ja schon in die Ecke und schäm mich :o

Callisto
19.04.05, 14:06
so wie ich das jetzt verstanden habe werden die ports also nur bei bestehenden verbindungen geöffnet.

Mein Porblem momentan ist, das ich mit dieser Konfig leider nicht in den passiven ftp modus wechseln, Wo liegt da der Fehler ??

Wordooo
19.04.05, 14:31
was meinst du mit "fehler". im post hast du geschrieben das es mit deinen regeln klappt. ansonsten musst du halt aktives ftp benutzen oder die port-range beschraenken.
hier ein link: http://slacksite.com/other/ftp.html

Callisto
19.04.05, 14:42
war ein fehler meinerseits bei meiner eingabe, sorry für die Falschmeldung.

Callisto
19.04.05, 15:46
Ich hab jetzt meine config fertig und würde diese gern beim booten laden, kann mir bitte jemand sagen wie ich das mache ?
Danke

Harry
19.04.05, 16:15
Hi Callisto,

ich kann Dir an dieser Stelle wärmstens einmal empfehlen, den iptables Generator auf meiner Seite zu testen.
Der baut Dir zum einen ein super-sauberes Skript (inkl. FTP bei Bedarf) zusammen, welches auf der anderen Seite vom Regelsatz auch sehr sicher ist und keine unnötigen Schnörkel enthält. Zum anderen bekommst Du mit dem Skript dann auch einen gut strukturierten LSB-init-script-Header mitgeliefert, der den Paketfilter direkt in Dein Runlevelsystem integriert. Also es macht ja genau das, was Du von Deinem Skript erwartest.

Auch zum lernen ist das sicher gut geeignet :)

Harry

Macindy
13.01.06, 16:18
Hallo Harry!

Ich hab den Module-Support in meinem Kernel abgeschaltet - hab aber wie folgt conntrack in den Kernel kompiliert.

Leider funktioniert das PASV FTP nicht. Er kann nicht die von meinem FTP vorgeschlagenen Ports öffnen.

Hast du eine Idee woran das liegt?

Anbei der Abschnitt aus der Kernel config

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
# CONFIG_IP_NF_CT_ACCT is not set
# CONFIG_IP_NF_CONNTRACK_MARK is not set
# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
# CONFIG_IP_NF_CT_PROTO_SCTP is not set
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IRC=y
# CONFIG_IP_NF_NETBIOS_NS is not set
# CONFIG_IP_NF_TFTP is not set
# CONFIG_IP_NF_AMANDA is not set
# CONFIG_IP_NF_PPTP is not set
CONFIG_IP_NF_QUEUE=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=y
CONFIG_IP_NF_MATCH_IPRANGE=y
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_PKTTYPE=y
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_RECENT=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_DSCP=y
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_LENGTH=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_TCPMSS=y
# CONFIG_IP_NF_MATCH_STEALTH is not set
CONFIG_IP_NF_MATCH_HELPER=y
CONFIG_IP_NF_MATCH_STATE=y
CONFIG_IP_NF_MATCH_CONNTRACK=y
CONFIG_IP_NF_MATCH_OWNER=y
# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
# CONFIG_IP_NF_MATCH_REALM is not set
# CONFIG_IP_NF_MATCH_SCTP is not set
# CONFIG_IP_NF_MATCH_DCCP is not set
# CONFIG_IP_NF_MATCH_COMMENT is not set
# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
# CONFIG_IP_NF_MATCH_STRING is not set
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_TARGET_TCPMSS=y
# CONFIG_IP_NF_TARGET_NFQUEUE is not set
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_SAME=y
# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
CONFIG_IP_NF_NAT_IRC=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_DSCP=y
CONFIG_IP_NF_TARGET_MARK=y
CONFIG_IP_NF_TARGET_CLASSIFY=y
# CONFIG_IP_NF_TARGET_TTL is not set
CONFIG_IP_NF_RAW=y
CONFIG_IP_NF_TARGET_NOTRACK=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
CONFIG_IP_NF_ARP_MANGLE=y

Macindy
14.01.06, 14:52
Also ich bin inzwischen selbst dahinter gestiegen:
Ich hab FTP SSL/TLS only gemacht - da der Datenkanal verschlüsselt war hat logischerweise conntrack_ftp den PORT command nicht mitbekommen und hat folglich die entsprechenden Ports nicht aufgemacht.