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)
##############################################
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: