PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FRAGE: iptables, ftp



ratschnowski
20.10.03, 15:53
Hallo Liste,

ich habe eine Frage zu den iptables sowie ftp (mandrake 9.1, ProFTPD 1.2.8).
Bin recht unerfahren mit iptables und habe noch nicht alles richtig
verstanden. Nachdem ich meine iptables wie unten geposted konfiguriert habe,
musste ich feststellen, daß meine ftp-Verbindungen sehr langsam werden.
Beginnt der Transfer ist alles OK, bis aber eine Verzeichnissliste bzw. ein
Inhaltsverzeichniss erscheint, dauert es Ewigkeiten (der gesamte
login-Vorgang ist langsam, Verzeichnisswechsel auch). FTP natürlich im
passivmodus, ports >49000.

Habe ich hier (ich meine im iptables-listing) was ungeschickt konfiguriert?
Außerdem habe ich folgende Frage: nach meiner logik müssten alle ports bis
auf 21 und 22 auf -stealth- gesetzt sein. Wenn ich aber mit einem Scanner
(nmap) teste, dann sehe ich, daß bestimmte ports
(1,25,87,123,135,137,138,139, 445, 524, 540) -closed- sind. Wieso? Ist dies
eine Standardeinstellung? Wie kann ich sie auf -stealth- setzen? Was ist
überhaupt sicherer, -stealth- oder -closed-? Sind alle nicht explizit
aufgeführten ports eigentlich automatisch zu, oder muss ich noch irgendwo
einfügen, diese zu schließen, z.B. als letzte Regel mit:

#alles was bishier nicht zutraf blockieren
-A INPUT -p tcp -i eth+ -j DROP
-A INPUT -p udp -i eth+ -j DROP
??

Danke für Antworten und voilà das listing der iptables:

*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]

# Alle verworfenen Pakete protokollieren
-A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix
"INPUT INVALID "

-A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix
"OUTPUT INVALID "

-A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG
--log-prefix "FORWARD INVALID "

# Korrupte Pakete zurueckweisen
-A INPUT -m state --state INVALID -j DROP
-A OUTPUT -m state --state INVALID -j DROP
-A FORWARD -m state --state INVALID -j DROP

# FTP
-A INPUT -i eth+ -m state --state NEW -p tcp --dport 21 -j ACCEPT

# SSH
-A INPUT -i eth+ -m state --state NEW -p tcp --dport 22 -j ACCEPT

#news
-A INPUT -i eth+ -m state --state NEW -p tcp --sport 119 -j ACCEPT

#nameserver
-A INPUT -p udp -i eth+ --sport 53 -j ACCEPT

#ping
-A INPUT -p icmp -i eth+ -j ACCEPT

# Loopback-Netzwerk-Kommunikation zulassen
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#############################
# Stealth Scans etc. DROPpen#
#############################

# Keine Flags gesetzt
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

# SYN und FIN gesetzt
-A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# SYN und RST gleichzeitig gesetzt
-A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# FIN und RST gleichzeitig gesetzt
-A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

# FIN ohne ACK
-A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
-A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP

# PSH ohne ACK
-A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
-A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j DROP

# URG ohne ACK
-A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
-A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP

# Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
-A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking aktivieren
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i ! eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT

*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Name-Server von 192.168.0.1 umbiegen auf echten Server (siehe auch
http://www.fli4l.de/german/dns.htm)

-A PREROUTING -p udp -d 192.168.0.1 --dport 53 -j DNAT --to-destination
130.83.218.222

#routing zwischen localnetz (eth1) und internationalemnetz (eth0) sowie
maskieren

-A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 0/0 -o eth0 -j LOG --log-level
debug --log-prefix "ROUTED - " -m limit --limit-burst 5
-A POSTROUTING -o eth0 -j MASQUERADE

#localhost
-A POSTROUTING -s 127.0.0.1/255.255.255.255 -j ACCEPT
COMMIT

*mangle
:PREROUTING ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT