Dimitri Puzin wrote:
Reicht es nicht aus, in der "nat" Tabelle in der chain POSTROUTING einfach den Port 21 zu mit dem Ziel SNAT bzw. MASQUERADE einzufuegen? IMHO kuemmern sich dann ip_nat_ftp (und ip_conntrack_ftp, falls stateful filtering benutzt wird) um das Masquerading der DATA Verbindung. Danach sollte eigentlich nur die FORWARD Chain ggf praepariert werden um beidseitige Verbindung fuer Zielports 21 und 1024+ zu erlauben.
Okay, mal einen Gang zurück. Erstmal nur so, daß für einen Rechner (Firewall) selbst FTP(passiv) verfügbar sein soll. Mit dem stateful filtering läuft das soweit auch, bis auf die Tatsache. daß ich damit ICQ "inklusive" kriege. Das kotzt mich ehrlich gesagt an. Wenn ich sage, daß ich hohe Ports von meinem Rechner zu anderen Rechnern erlaube, dabei SYN blocke kann ich passives FTP machen und gleichzeitig auch ICQ. Nur ist das Mist, wenn ich nur eins von beiden, nämlich FTP, dauerhaft und ICQ nur dann freigeschaltet, wenn ich das sage und danach den Client starte. Ich hatte mir schon überlegt die Sache an die IPs der ICQ-Server zu binden. Aber das war auch nicht erfolgreich.
Was ich mit dem stateful filtering will, ist das nach einem connect auf einen entfernten Port 21 die Datenverbindung selber kommt. Wenn ich aber in die INPUT-Chain bzw. OUTPUT-Chain reinschreiben muß "Erlaube alles von hohen Ports ohne SYN-Bit zu den lokalen hohen Ports.", dann ist das für'n Eimer, denn dann mache ich ja auch den Weg frei für andere Dienste, die ich gar nicht will.
Ich will explizit anweisen "Wenn jetzt FTP auf 21, dann mach' zu dieser, und nur dieser IP auch eine Verbindung von und zu hohen Ports. Ansonsten nicht! Und wenn ich ICQ haben will, dann mach' solch eine Verbindung nur zu den ICQ-Servern. Ende."
So ungefähr stelle ich mir das vor.
Carsten