Wu-ftp Server ins Internet stellen

PADDEL

New Member
Ich habe folgendes Szenario vor :

Auf meinem Free-BSD System will ich mir einen FTP Server bauen , der
1. ) in der Lage sein wird in meinem internen Netzwerk Daten
hin und her zu schieben und

2.) es soll möglich sein Daten ins Internet zu setzen ,
wobei der Client als anonymous darauf zugreifen kann .
Dabei brauche ich ihm nur meine derzeitige IP Adresse
von meinem ISP zu schicken , worauf er sich mit
$ftp xxx.xxx.xxx.xxx einloggen kann und dort meine
ergüsse abholen kann .

Auf der lokalen Seite funktioniert das alles .

Wie mache ich das nun auf der öffentlichen Seite .

Der Server läüft als Daemon und nicht über inetd .

Meine ftpaccess.conf sieht so aus :

################################

guestgroup users
guestuser xxx
deny-uid %0-999
deny-gid wheel

allow-uid root

noretrieve /home/*/bin
noretrieve /home/*/etc
noretrieve passwd spwd.db pwd.db group core ^.

upload /home/*/bin no
upload /home/*/etc no
upload /home/*/incoming yes root wheel 0500 yes 0500

class local_guest guest 192.168.0.0/24
class any_all real,anonymous,guest *

path-filter class=any_all /usr/local/etc/msg/fileerr ^[A-Za-z0-9._-]*$ ^\. ^_

banner /usr/local/etc/msg/vor_dem_login

message /usr/local//etc/msg/nach_dem_login login
message /usr/local/etc/msg/incoming login
message .message login

upload /usr/local/ftp * no
upload /usr/local/ftp /incoming yes root wheel 0400 nodirs

noretrieve /usr/local/ftp
noretrieve /usr/local/ftp/incoming

allow-retrieve /usr/local/ftp/incoming
allow-retrieve /usr/local/ftp/pub

class any_anonymous anonymous *
chmod no class=any_anonymous
delete no class=any_anonymous
rename no class=any_anonymous
umask no class=any_anonymous
anonymous-root /usr/local/ftp/pub any_anonymous
greeting full
private no
passwd-check trivial enforce

guest-root /home/ftp xxx
autogroup nogroup any_anonymous

#######################################

Ich vermute es liegt an der Einstellung meiner Firewall .

Mein Firewall-Gateway ist ein separater Rechner und
basiert auf Open-BSD 3.6 mit pf .

Daher sende ich Euch noch meine pf.conf zu.
(Ratet mal woher ich die habe ;) )

##########################################

### VARIABLEN ###

Ext = "tun0" # Device an dem das Internet angeschlossen ist
Int = "192.168.0.0/24" # Device an dem das interne Netz haengt
IntNet = "192.168.1.0/24" # Adressraum des internen Netzes
RouterIP = "192.168.0.100" # IP Adresse des Routers
Loop = "lo0" # Loopback Device

# Adressen die auf dem externen Device nicht geroutet werden
# (Adressbereich des internen Netzes muss man wegen der Weiterleitungen zulassen)
table <NoRoute> { 127.0.0.1/8, 172.16.0.0/12, 192.168.0.0/16, !$IntNet, 10.0.0.0/8, 255.255.255.255/32 }

# Ports die geoeffnet werden sollen
InServicesTCP = "{ ssh, ftp, auth }"


### OPTIONS ###

# Macht Statistiken fuer die DSL-Verbindung (pfctl -s info)
set loginterface $Ext

# Beendet inaktive Verbindungen schneller - geringerer Speicherverbrauch.
set optimization aggressive

# Fragmentierte Pakete saeubern
scrub on $Ext all fragment reassemble random-id

# Queueing
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !! Achtung: Der unten stehende Wert von 100Kb (Kilobit) macht natuerlich
# !! nur fuer den Standard DSL Anschluss mit 128kb upstream Sinn. Hat man
# !! eine Verbindung mit groesserer Bandbreite beim upload, dann muss
# !! dieser Wert entsprechend angepasst werden.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
altq on $Ext priq bandwidth 100Kb queue { q_pri, q_def }
queue q_pri priority 7
queue q_def priority 1 priq(default)


### NAT & FORWARD ###

# NAT aktivieren (unter Linux als Masquerading bekannt)
nat on $Ext from $IntNet to any -> $Ext static-port

# Active FTP - Umleitung zu unserem ftp-proxy
rdr on $Int proto tcp from !$RouterIP to !$IntNet port 21 -> 127.0.0.1 port 8021

rdr-anchor redirect


### FILTER ###

# Zum Debuggen....
#pass quick all # Alles durchlassen

# Generelle Block Regel
block on $Ext

# Freiwillig machen wir keinen mucks ;)
block return log on $Ext

# Wir wollen kein IPv6.0
block quick inet6

# Loopback Device darf alles
pass quick on $Loop

# IP Spoofing verhindern
block in log quick on $Ext inet from <NoRoute> to any
block in log quick on $Ext inet from any to <NoRoute>

# Active FTP erlauben
pass in quick on $Ext inet proto tcp from any to any port > 49151 user proxy flags S/SAFR keep state

# Ping akzeptieren (ablehnen ist uebrigends wenig sinnvoll)
pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state

# Ports nach aussen oeffnen
pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP

anchor passin

# Raus darf (fast) alles
pass out quick on $Ext keep state queue (q_def,q_pri)

##############################################
 
Zuletzt bearbeitet:
Nur grad mal ein paar kurze Anmerkungen:

  • Den wu-ftpd sollte man nicht ins Internet stellen. Wenn schon FTP, dann pure-ftpd, vsftpd oder hier einfach den ftpd von FreeBSD.
  • HTTP ist für den öffentlichen Zugriff eventuell die bessere Wahl. Zumindest umgeht man damit die durch das FTP-Protokoll hervorgerufenen Firewall-Probleme.
  • Das Problem mit den wechselnden IP-Adressen kann man mit einem DNS-Eintrag bei dyndns.org lösen.
  • Ich kenne mich mit pf nicht so gut aus, bin im Moment nur in iptables fit, aber deiner pf.conf fehlt IMO mindestens eine "rdr on $Ext proto tcp from any to any port 21 -> xxx.xxx.xxx.xxx port 21"-Regel. Wie man dann die Probleme durch aktives/passive Datenverbindung mit pf hinbekommt, weiß ich nicht.
 
Du hast ja zweilellos recht damit , dass FTP , insbesondere wu-ftpd
keine besonders gute Reputation hat . Ich habe aber beschlossen
dieses Teil zu verwenden , weil es immer noch weit verbreitet ist .
Ich habe mal meine Firewall kurzzeitig deaktiviert und habe mich
extern versucht einzuloggen .... es hat nicht sollen sein :( .
An der Firewall liegt es zumindest zunächst nicht .
 
...war wu-ftpd nicht die zweitbeliebteste Fernwartungssoftware gleich hinter sshd?
Finger weg vom wu-ftpd!
Wenn Du dich zu der FW-Kiste verbindest, versuche von dort mal einen Verbindungsaufbau zu Deinem FTP-Server. Ach und die pf kann auch protokollieren...
 
Zurück
Oben