Firewall-Konfig für FTP Server

Moin
Ich habe unter openSUSE 10.2 einen vsftpd FTP Server (active mode) laufen, der jedoch nur funktioniert, wenn ich die Firewall komplett abschalte.

Wie bekomme ich es am besten hin, dass der Server auch mit Firewall funktioniert? Also:

- was muss ich an der vsftpd Konfig ändern?
- welche Ports muss ich freigeben?
- wie genau gebe ich Ports frei?
 
Port 21 freigeben und das Modul ip_conntrack_ftp mittels modprobe laden.

Freigabe des Ports:
Code:
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 21 -j ACCEPT
 
Danke für die Antwort.
Könntest du vielleicht etwas ins Detail gehen welche Sachen ich dafür starten muss? Ich habe ca. 3 Tage Linux-Erfahrung, habe mir das alles soweit mit Tutorials zusammengebastelt.

Code:
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 21 -j ACCEPT
Das habe ich als ROOT ins GNOME Terminal eingegeben (?)

das Modul ip_conntrack_ftp mittels modprobe laden.
modprobe und damit Sachen laden ist mir allerdings unbekannt.
 
Hiho,
mit modprobe kann man Module laden.

Die Ausführung erfolgt mit einem:

Code:
modprobe <modulname>

in der Konsole (oder Teminal).

(Aber ohne die "<>") :)
 
Ok, dann hab ich das richtig gemacht. Hat auch beides ohne Fehler funktioniert.
Wenn ich jetzt versuche mich auf dem FTP einzuloggen, passiert folgendes.


Status: Connecting to xxx.xxx.xxx.xxx ...
Status: Connected with xxx.xxx.xxx.xxx. Waiting for welcome message...
Error: Disconnected from server
Error: Unable to connect!

Muss ich ip_conntrack_ftp irgendwie zum Systemstart hinzufügen, damit es nach dem Neustart wieder geladen wird?
 
die iptables regeln sind nur temporär da, heisst wenn du neustartest sind sie weg sofern du sie nicht in ein script oder so reinpackst welches im beim sysstart mitgeladen wird
Das allerdings ohne Gewähr, meins nur gehört zu haben. Nicht 100% sicher
 
Dann muss ich so ein Script bauen, denn der Linux PC darf zum Laufen nicht mehr benötigen als Strom- und Netzwerkkabel.

Danke
 
Code:
#!/bin/bash

echo "Starting firewall"

LOGLIMIT=20
IPTABLES=/sbin/iptables

case "$1" in
start)
        # alle alten Regeln entfernen
        echo "Loesche alte Regeln"
        $IPTABLES -F
        $IPTABLES -X
        $IPTABLES -t nat -F
        ### ERSTELLE NEUE KETTEN ###
        # damit wir loggen koennen
        $IPTABLES -N LOGREJECT
        $IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options
        $IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable

        ### PROC MANIPULATION ###
        # auf Broadcast-Pings nicht antworten
        echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
        # halt die Klappe bei komischen ICMP Nachrichten
        echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
        # Kicke den ganzen IP Spoofing Shit
        # (Source-Validierung anschalten)
        echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
        # Setze Default-TTL auf 61 (Default fuer Linux ist 64)
        echo 61 > /proc/sys/net/ipv4/ip_default_ttl
        # sende RST-Pakete wenn der Buffer voll ist
        echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
        # warte max. 30 secs auf ein FIN/ACK
        echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
        # unterbreche Verbindungsaufbau nach 3 SYN-Paketen
        # Default ist 6
        echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
        # unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen
        # Default ist 6
        echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

        ### MAIN PART ###
        $IPTABLES -P INPUT DROP
        $IPTABLES -P FORWARD ACCEPT
        $IPTABLES -P OUTPUT ACCEPT
        $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

        # im Loopback koennen wir jedem trauen
        $IPTABLES -A INPUT -i lo -j ACCEPT
        # erlaube Pings
        $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

        # FTP erlauben
        $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT

        # SSH erlauben, damit wir die Kiste auch verwalten koennen
        $IPTABLES -A INPUT -p tcp --dport 22 --tcp-flags ALL SYN -j ACCEPT

        # Bei Bedarf die folgenden IPTables-Befehle auskommentieren
        # Achtung: sorgt fuer eine ziemlich grosse messages-Datei, da jedes gedroppte Paket geloggt wird

        # Alle TCP Packete, die bis hier hin kommen, werden
        # geloggt und rejected
        # Der Rest wird eh per Default Policy gedroppt...
        # $IPTABLES -A INPUT -p tcp -j LOGREJECT
        # $IPTABLES -A FORWARD -p tcp -j LOGREJECT
        ;;
*)
        echo "Usage: `basename $0` {start}" >&2
        exit 64
        ;;
esac

exit 0

In /etc/init.d/firewall abspeichern, ausführbar machen und mit dem Runlevel-Editor deiner Wahl für die Default-Runlevel aktivieren. Für Fehlerfreiheit übernehme ich keine Gewähr. :P
 
Sollte das mit SuSE nicht viel leichter gehen? Die Firewall kann man doch bestimmt mit Yast per Klickibunti konfigurieren.
 
Klar geht das bei SuSE auch mit Klicki-Bunti, aber ob das leichter ist als ein Skript per Copy&Paste zu übernehmen, halte ich dann doch eher für fraglich. ;)
 
Original von proxy
Ok, dann hab ich das richtig gemacht. Hat auch beides ohne Fehler funktioniert.
Wenn ich jetzt versuche mich auf dem FTP einzuloggen, passiert folgendes.


Status: Connecting to xxx.xxx.xxx.xxx ...
Status: Connected with xxx.xxx.xxx.xxx. Waiting for welcome message...
Error: Disconnected from server
Error: Unable to connect!

Meine FTP Server haben nie funktioniert wenn ich selber meine WAN IP eingegeben habe. Wenn aber andere Leute auf "mich" connecteten giengs meistens. Ich habe so jetzt keine Erklärung für das Phänomen, aber ob der Server rennt kannst du erstmal über 127.0.0.1 rausfinden.

Bei mir war es glaubich Bulletproof FTP auf WinXP.
 
@starfoxx: Vermutlich war dein Router falsch konfiguriert und konnte nicht auf sich selbst routen. Zumindest kenne ich dieses Phänomen nur in diesem Zusammenhang.
 
Zurück
Oben