Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables zu große portbreite bei ftp ?
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
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?
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
schau dir mal conntrack_ftp oder ftp_conntrack
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.
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
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
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.
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
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.
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.
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
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 ...
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
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 ??
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
war ein fehler meinerseits bei meiner eingabe, sorry für die Falschmeldung.
Ich hab jetzt meine config fertig und würde diese gern beim booten laden, kann mir bitte jemand sagen wie ich das mache ?
Danke
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
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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.