vServer iptables Mail/FTP usw.

Phin

New Member
Hallo,
ich bin gerade dabei einen vServer für meinen privaten Webauftritt zu konfigurieren. Ich bin in Sachen Linux(-server) noch ein ziemlicher Neuling, kenne so die Basics zu Linux / Netzwerken aus dem Studium aber mache jetzt zum ersten Mal etwas praktisches damit.
Ich habe einen VQ12 von Hetzner und die Debian LAMP 64bit Installation gewählt, entsprechend Apache, ProFTPD usw. vorinstalliert.

Was fehlt ist ein Mailserver, hierbei halte ich mich an folgendes Tutorial:
http://gogs.info/books/debian-mail/chunked/

Dort werden auch einige Infos zum absichern des Systems (Firewall, Intrusion Detection, etc.) gegeben. Ich hatte jetzt ein kleines Problem mit den iptables.
Im Tutorial wird hier auf ein Script verwiesen (http://gogs.info/books/debian-mail/chunked/security.firewall.html). Soweit ich das gesehen habe, ist das Tutorial für einen reinen Mailserver ausgelegt, da ich aber auch FTP benötige habe ich folgende Einstellungen vorgenommen:

iptables -A INPUT -p tcp -m tcp --syn --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --syn --dport 21 -j ACCEPT

Dadurch sollten ja eigentlich alle TCP Verbindungen über Port 20/21 zugelassen werden.
Das Problem ist jetzt, dass der Server jeglichen FTP Verbindungsversuch zurückweist.

Wüsste da evtl. jemand woran das liegen kann?

Grüße,
Phin
 
Läuft der FTP-Server denn? Verifizier das mal mit netstat und prüf dann mal die entsprechenden Logdateien.
Wurden die Regeln umgesetzt? "iptables -L -n"
 
Hallo,
danke für die schnelle Antwort.
Ich habe gerade nochmal die iptables zurückgesetzt und das Script neu drüberlaufen lassen, jetzt funktioniert die Verbindung wieder.

Allerdings habe ich jetzt das Problem, dass die Verbindung nur im aktiven Modus möglich ist, passiv bekomme ich:

Fehler: Zeitüberschreitung der Verbindung
Fehler: Verzeichnisinhalt konnte nicht empfangen werden

Edit: Habe gerade gelesen, dass beim passiven FTP der entsprechende Port vom Client aus kommt und dann erst vom Server geöffnet werden muss. Das soll dann ja einer >1024 sein. D.h. ich muss theoretisch alle Ports >1024 freigeben. Stellt das nicht ein relativ hohes Sicherheitsrisiko dar?

Ich füge am Besten einfach mal das ganze Script, das ich verwendet habe ein:
Code:
#!/bin/sh
#
# Fedora Core 2
# Nick Hemmesch <nick@ndhsoft.com>
# June 2, 2004
#
# Customised for Debian/Ubuntu by Goran Juric, April 14, 2009.
 
## Set your IP address
MYIP='xx.xx.xx.xx'
#ROUTER="IP-ADDRESS-THAT-BYPASSES-FIREWALL-RULES"
#
## Flush rules & reset counters
iptables -F
iptables -X
#
## Set policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#
## Drop all incoming fragments
iptables -A INPUT -i eth0 -f -j DROP
#
## Drop outside packets with local addresses - anti-spoofing measure
iptables -A INPUT -s $MYIP -i ! lo -j DROP
iptables -A INPUT -s 127.0.0.0/8 -i ! lo -j DROP
iptables -A INPUT -s 224.0.0.0/4 -i ! lo -j DROP
iptables -A INPUT -s 0.0.0.0/8 -i ! lo -j DROP
iptables -A INPUT -s 255.255.255.255 -i ! lo -j DROP
iptables -A INPUT -s 10.0.0.0/8 -i ! lo -j DROP
iptables -A INPUT -s 192.168.0.0/16 -i ! lo -j DROP
iptables -A INPUT -s 172.16.0.0/12 -i ! lo -j DROP
#
## Pass all locally-originating packets
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#
## Accept ICMP ping echo requests
## (this allows other people to ping your machine, among other things),
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#
## Accept all traffic from a specific machine with IP specified in the ROUTER variable
# Traffic coming from the company router (address of the clients behind NAT)
#iptables -A INPUT -p tcp -m tcp --syn -s $ROUTER -j ACCEPT
#
## Accept traffic on port p from a specific machine with IP x.x.x.x
## replace p with the desired port number, and replace x.x.x.x with
## the desired IP, then uncomment the line.
#iptables -A INPUT -p tcp -m tcp --syn -s x.x.x.x --dport p -j ACCEPT
#
## Accept ftp-data and ftp (ports 20 & 21)
iptables -A INPUT -p tcp -m tcp --syn --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --syn --dport 21 -j ACCEPT
#
## Accept ssh (port 22)
iptables -A INPUT -p tcp -m tcp --syn --dport 22 -j ACCEPT
#
## Accept telnet (port 23)
iptables -A INPUT -p tcp -m tcp --syn --dport 23 -j ACCEPT
#
## Accept smtp (port 25 | 587)
iptables -A INPUT -p tcp -m tcp --syn --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --syn --dport 587 -j ACCEPT
#
## Accept dns (port 53)
#iptables -A INPUT -p udp -m udp -s 0/0 --dport 53 -d 0/0 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp -s 0/0 --dport 53 -d 0/0 -j ACCEPT
#
## Accept http (port 80)
iptables -A INPUT -p tcp -m tcp --syn --dport 80 -j ACCEPT
#
## Accept Subversion (port 3690)
#iptables -A INPUT -p tcp -m tcp --syn --dport 3690 -j ACCEPT
#
## Accept pop3 (port 110)
#iptables -A INPUT -p tcp -m tcp --syn --dport 110 -j ACCEPT
#
## Accept pop3s (port 995)
#iptables -A INPUT -p tcp -m tcp --syn --dport 995 -j ACCEPT
#
## Accept inbound identd (port 113)
#iptables -A INPUT -p tcp -m tcp --syn --dport 113 -j ACCEPT
## or you can reject and send back a TCP RST packet instead
#iptables -A INPUT -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset
#
## Accept imap (port 143)
iptables -A INPUT -p tcp -m tcp --syn --dport 143 -j ACCEPT
## Accept imaps (port 993)
iptables -A INPUT -p tcp -m tcp --syn --dport 993 -j ACCEPT
#
## Accept https (port 443)
iptables -A INPUT -p tcp -m tcp --syn --dport 443 -j ACCEPT
#
## Accept smtps (port 465)
#iptables -A INPUT -p tcp -m tcp --syn --dport 465 -j ACCEPT
## Accept msp (port 587)
#iptables -A INPUT -p tcp -m tcp --syn --dport 587 -j ACCEPT
#
## Accept SpamAssassin (port 783)
#iptables -A INPUT -p tcp -m tcp --syn --dport 783 -j ACCEPT
#
## Accept pop3s (port 995)
#iptables -A INPUT -p tcp -m tcp --syn --dport 995 -j ACCEPT
#
## Accept mysql (port 3306)
iptables -A INPUT -p tcp -m tcp --syn --dport 3306 -j ACCEPT
#
## Allow inbound established and related outside communication
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
## Drop outside initiated connections
iptables -A INPUT -m state --state NEW -j REJECT
#
## Allow all outbound tcp, udp, icmp traffic with state
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
## Save rules
#
#service iptables save#
iptables-save > /etc/iptables/rules
#
echo ""
echo "Check your rules - iptables -L -n and move the iptables.rules to appropriate place"
echo

Meine aktuellen iptables:
Code:
Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       all  -f  0.0.0.0/0            0.0.0.0/0
DROP       all  --  xx.xx.xx.xx          0.0.0.0/0
DROP       all  --  127.0.0.0/8          0.0.0.0/0
DROP       all  --  224.0.0.0/4          0.0.0.0/0
DROP       all  --  0.0.0.0/8            0.0.0.0/0
DROP       all  --  255.255.255.255      0.0.0.0/0
DROP       all  --  10.0.0.0/8           0.0.0.0/0
DROP       all  --  192.168.0.0/16       0.0.0.0/0
DROP       all  --  172.16.0.0/12        0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:23 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:25 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:587 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:143 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:993 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 flags:0x17/0x02
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 flags:0x17/0x02
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           state NEW reject-with icmp-port-unreachable

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED
 
Last edited by a moderator:
Hi

wenn du oder deine Kunden hinter einer Nat-Firewall sitzen ist das einfachste passive FTP.

Bei mir sieht das z.b. so aus:

Code:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 50000:50200 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

und in der proftpd.conf

Code:
PassivePorts                    50000 50200

Die Anzahl der Ports kannst du bei wenigen gleichzeitigen Usern auch reduzieren
 
Back
Top