# Shorewall und FTP

## manuels

Hi Leute,

ich will mir grad einen FTP einrichten, aber Shorewall will nicht mitspielen.

Eine Verbindung zu ProFTPd krieg ich hin, aber die Firewall lässt mich keinen Data Socket aufbauen (für die passive Verbindung)

Wisst ihr, wie ich das hinkriege? 

da fällt mir nochwas ein:

mein Port 14882 (für MLDonkey) ist von aussen nicht erreichbar, aber folgendes spricht doch dafür: 

```
# iptables -L

...

Chain all2all (4 references)

target     prot opt source               destination

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

...

Chain net2fw (1 references)

target     prot opt source               destination

ACCEPT     tcp  --  anywhere             anywhere            multiport dports 14662,14661 state NEW

...

# netstat -l

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

tcp        0      0 *:14662                 *:*                     LISTEN 
```

Was läuft hier falsch?

Tschööö, Manuel[/quote]

----------

## steveb

hallo,

poste lieber mal die regeln von shorewall und die policy als die ausgabe von iptables.

noch wichtig wäre zu wissen, ob du den firewall auf einer dedizierten kiste hast oder ob du den firewall auf deiner eigenen kiste hast.

gruss

SteveB

----------

## manuels

also hier die policy

```
loc             net             ACCEPT

loc             wlan            ACCEPT

wlan            loc             ACCEPT

net             wlan            DROP

all             wlan            ACCEPT

# If you want open access to the Internet from your Firewall

# remove the comment from the following line.

fw              net             ACCEPT

net             all             DROP            info

# THE FOLLOWING POLICY MUST BE LAST

all             all             REJECT          info

```

und die rules:

```
RATE    USER

#                                                       PORT    PORT(S) DEST   L

IMIT    SET

#

#       Accept DNS connections from the firewall to the network

#

ACCEPT          fw              net             tcp     53

ACCEPT          fw              net             udp     53

#

#       Accept SSH connections from anywhere for administration

#

ACCEPT          loc             fw              tcp     22

ACCEPT          net             fw              tcp     22

#

#       Accept TCP connection from anywhere to ProFTPd

#

ACCEPT          loc             fw              tcp     21

ACCEPT          net             fw              tcp     21

#

#       Allow Ping To And From Firewall

#

ACCEPT          loc             fw              icmp    8

ACCEPT          net             fw              icmp    8

ACCEPT          fw              loc             icmp    8

ACCEPT          fw              net             icmp    8

#

#       Allow MLDonkey To and From firewall

#

ACCEPT          loc             fw              tcp     14001

ACCEPT          net             fw              tcp     14001

ACCEPT          fw              loc             tcp     14001

ACCEPT          fw              net             tcp     14001

ACCEPT          loc             fw              tcp     14080

ACCEPT          fw              loc             tcp     14080

# and overnet

ACCEPT          net             fw              udp     20750

ACCEPT          fw              net             udp     20750

ACCEPT          net             fw              tcp     20750

ACCEPT          fw              net             tcp     20750

# and edonkey

ACCEPT          net             fw              tcp     14662,14661

ACCEPT          fw              net             tcp     14662

ACCEPT          fw              net             tcp     80      # for server.met

ACCEPT          net             fw              udp     14666

ACCEPT          fw              net             udp     4666

REDIRECT        net             4661            tcp     14662   -

REDIRECT        net             4662            tcp     14662   -

# and kazaa

ACCEPT          net             fw              tcp     1214

ACCEPT          fw              net             tcp     1214

#       Allow Samba local <-> firewall

ACCEPT          loc             fw              tcp     137,139

ACCEPT          fw              loc             tcp     137,139

ACCEPT          loc             fw              udp     137:139

ACCEPT          fw              loc             udp     137:139

ACCEPT          loc             fw              udp     1024: 137

ACCEPT          fw              loc             udp     1024: 137

# ------------ wireless lan -----------------------

ACCEPT          loc             wlan            icmp    8

ACCEPT          wlan            loc             icmp    8

#

#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

```

das ganze läuft auf meinem kleinen homeserver.

Thx

Manuel

----------

## steveb

okay... zum ftp mal: 21 ist the kommunikations port und 20 ist der daten port. du musst auch 20 auf machen, damit der server die daten senden kann. oder du musst auf passive ftp umstellen. versuch mal noch folgende regel einzubauen:

```
ACCEPT          loc             fw              tcp     20

ACCEPT          net             fw              tcp     20
```

und dann restarte shorewall und versuch nochmals das mit dem ftp (evt musst du auch den ftp server neu starten).

gruss

SteveB

----------

## steveb

was heisst "homeserver"? ist die kiste auf der du mldonkey (kenne ich zwar nicht) laufen lassen möchtest auch die kiste auf der shorewall läuft? wenn nein, dann müsstest du den mldonkey port vom shorewall auf deine kiste umleiten. kann es sein das du in etwa so etwas hast:

```
[pc] <--> [gentoo kiste mit shorewall] <--> {internet}
```

gruss

SteveB

----------

## manuels

Mit homeserver meine ich, dass der Rechner direkt in meinem Haus am DSL ist und auf dem Server auch MLDonkey läuft.

also muss ich den Port ja nicht umleiten.

bist du dir sicher, dass der FTP-Daten-Port immer 20 ist?

ich hab die einträge so gemacht, wie du beschrieben hast, aber es läuft nicht.

meiner meinung nach ist der Daten-Port auch immer ein anderer (zufällig gewählt).

da muss ich wohl passive ftp umstellen. aber wie mach ich das?

----------

## steveb

ja! der daten port für ftp ist 20:

```
thinkpad / # grep ftp-data /etc/services

ftp-data        20/tcp

thinkpad / #
```

und 21 ist der ftp kommando port:

```
thinkpad / # grep ^ftp[^a-z-] /etc/services

ftp             21/tcp

thinkpad / #
```

kannst du mal versuchen einwenig aus dem log zu posten? was erhällst du, wenn du versuchst die verbindung über ftp zu machen? hast du im log irgend welche shorewall einträge, die darauf hinweisen warum das mit dem ftp nicht geht?

gruss

SteveB

----------

## steveb

übrigens: wie wäre es mit einer policy wo du jeden verkehr von loc erlaubst?

```
loc             all             ACCEPT
```

gruss

SteveB

----------

## steveb

bzw, wie wäre es mit solch einem policy file:

```
#       Allow access to the Internet from the local network

loc      net      ACCEPT

#       Allow access to the WLAN from the local network

loc      wlan      ACCEPT

#       Allow access to the local network from local network

loc      loc      ACCEPT

#       Allow access to the local network from the WLAN

wlan      loc      ACCEPT

#       Allow access to the local network from the firewall

fw       loc      ACCEPT

#       Allow access to the Internet from the Firewall

fw       net      ACCEPT

#       Dissalow acces to any zone from the the Internet

net      all      DROP      info

#       Dissalow access to the WLAN from the internet

net      wlan      DROP      info

#       Allow access to the WLAN from any zone

all       wlan      ACCEPT

# THE FOLLOWING POLICY MUST BE LAST

all      all      REJECT      info
```

die regel:

```
#       Dissalow access to the WLAN from the internet 

net      wlan      DROP      info
```

ist sinnlos, weil bereits:

```
#       Dissalow acces to any zone from the the Internet 

net      all      DROP      info
```

alle packete aus dem net schon auf DROP gesetzt hat. aber du kannst es ja lassen, um im log zu sehen dass die regel greifft.

auch die regel:

```
#       Allow access to the WLAN from any zone

all       wlan      ACCEPT
```

ist einwenig gefährlich, weil es den zugriff von überall erlaubt (okay... du hast den zugriff aus net gesperrt). aber wäre es nicht besser den zugriff explizit für loc, fw und wlan auf wlan zu erlauben und alle anderen zu sperren?

gruss

SteveBLast edited by steveb on Mon May 31, 2004 1:04 pm; edited 1 time in total

----------

## manuels

```
loc             all             ACCEPT
```

könnt ich mal machen, aber so wichtig ist das ja auch nicht, oder?

bei meine Probleme tauchen ja auch auf, wenn man aus dem INet zugreift.

Das sagt der Log nachdem ich mich über ftp einlogge (aus dem LAN):

```

May 31 15:38:56 s-server proftpd[15603]: sserver.s-net.lan (kilinho[192.168.6.1]) - USER kilian: Login successful.

May 31 15:38:57 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=80.119.5.209 DST=80.143.44.88 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=3580 DF PROTO=TCP SPT=4507 DPT=4506 WINDOW=65535 RES=0x00 SYN URGP=0

May 31 15:38:59 s-server Shorewall:all2all:REJECT:IN=eth0 OUT= MAC=00:40:f4:7b:0e:f9:00:40:f4:7b:0e:81:08:00 SRC=192.168.6.1 DST=192.168.6.200 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=9707 DF PROTO=TCP SPT=32835 DPT=1757 WINDOW=5840 RES=0x00 SYN URGP=0

May 31 15:38:59 s-server Shorewall:all2all:REJECT:IN= OUT=eth0 SRC=192.168.6.200 DST=192.168.6.1 LEN=60 TOS=0x08 PREC=0x00 TTL=64 ID=14529 DF PROTO=TCP SPT=20 DPT=32836 WINDOW=5840 RES=0x00 SYN URGP=0

May 31 15:39:00 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=217.225.158.251 DST=80.143.44.88 LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=29832 DF PROTO=TCP SPT=1752 DPT=4506 WINDOW=62464 RES=0x00 SYN URGP=0

May 31 15:39:00 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=80.119.5.209 DST=80.143.44.88 LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=3647 DF PROTO=TCP SPT=4507 DPT=4506 WINDOW=65535 RES=0x00 SYN URGP=0

May 31 15:39:01 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=217.233.226.100 DST=80.143.44.88 LEN=52 TOS=0x00 PREC=0x00 TTL=123 ID=34454 DF PROTO=TCP SPT=3489 DPT=4506 WINDOW=32767 RES=0x00 SYN URGP=0

May 31 15:39:02 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=217.225.158.251 DST=80.143.44.88 LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=29937 DF PROTO=TCP SPT=1752 DPT=4506 WINDOW=62464 RES=0x00 SYN URGP=0

May 31 15:39:04 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=217.233.226.100 DST=80.143.44.88 LEN=52 TOS=0x00 PREC=0x00 TTL=123 ID=34539 DF PROTO=TCP SPT=3489 DPT=4506 WINDOW=32767 RES=0x00 SYN URGP=0

May 31 15:39:06 s-server Shorewall:net2all:DROP:IN=ppp0 OUT= MAC= SRC=82.82.121.191 DST=80.143.44.88 LEN=64 TOS=0x00 PREC=0x00 TTL=58 ID=14468 DF PROTO=TCP SPT=3589 DPT=4506 WINDOW=32767 RES=0x00 SYN URGP=0

```

```
May 31 15:38:59 s-server Shorewall:all2all:REJECT:IN=eth0 OUT= MAC=00:40:f4:7b:0e:f9:00:40:f4:7b:0e:81:08:00 SRC=192.168.6.1 DST=192.168.6.200 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=9707 DF PROTO=TCP SPT=32835 DPT=1757 WINDOW=5840 RES=0x00 SYN URGP=0
```

ist hier wohl der wichtige teil.

Aber der Port ist nicht 20 dabei...

4506 war der Overnet port. den hab ich jetzt mal freigegeben.

----------

## steveb

aber genau diese ausgabe:

```
May 31 15:38:59 s-server Shorewall:all2all:REJECT:IN=eth0 OUT= MAC=00:40:f4:7b:0e:f9:00:40:f4:7b:0e:81:08:00 SRC=192.168.6.1 DST=192.168.6.200 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=9707 DF PROTO=TCP SPT=32835 DPT=1757 WINDOW=5840 RES=0x00 SYN URGP=0
```

sagt doch aus, dass loc auf loc beblockt wird (ich gehe mal davon aus, dass 192.168.6.1 und 192.168.6.200 in der gleichen zone sind, weil sie offenbar das gleiche c-klass netz benützen).

gruss

SteveB

----------

## steveb

erlaube mal den zugriff von loc auf loc und von fw auf loc (lokal auf lokal und firewall auf lokal).

gruss

SteveB

----------

## steveb

und hier hätten wir doch den 20er  :Wink: 

```
May 31 15:38:59 s-server Shorewall:all2all:REJECT:IN= OUT=eth0 SRC=192.168.6.200 DST=192.168.6.1 LEN=60 TOS=0x08 PREC=0x00 TTL=64 ID=14529 DF PROTO=TCP SPT=20 DPT=32836 WINDOW=5840 RES=0x00 SYN URGP=0
```

und auch der wird geblockt! es gibt keine regel, die den zugriff von 192.168.6.200 (gehe mal davon aus das ist zone loc) auf 192.168.6.1 (auch hier gehe ich davon aus es ist loc) regelt. darum fällt dies auf die regel all2all (also die letzte regel all auf all). ich bin mir sicher, dass das mit loc auf loc geregelt werden kann.

gruss

SteveB

----------

## manuels

ja, ok. wenn ich das mache, geht es.

aber dann kann man ja (wahrscheinlich) nicht von aussen auf den passive-ftp zugreifen.

diese lösung ist doch nur für das LAN...?

----------

## steveb

 *manuels wrote:*   

> ja, ok. wenn ich das mache, geht es.
> 
> aber dann kann man ja (wahrscheinlich) nicht von aussen auf den passive-ftp zugreifen.
> 
> diese lösung ist doch nur für das LAN...?

 ja. die lösung ist mal nur für das lan.

wenn du schnell einen account für mich auf machst und ich kann mal versuchen darauf zu verbinden und etwas kleines runter zu laden und etwas kleines rauf zu laden. dann kannst du sehen, ob es geht (danach kannst du den account ja löschen).

gruss

SteveB

----------

## manuels

nein, ich hab den Fehler!!!

ich hab die Policy wieder zurückgesetzt, wie ich sie vorher hatte.

aber bei passive-ftp ist Port 20 nicht der destination port, sondern der source port.

es muss also nicht

```
ACCEPT          loc             fw              tcp     20 

 ACCEPT          net             fw              tcp     20
```

heissen, sondern

```
ACCEPT          fw             loc              tcp     -   20 

 ACCEPT          fw             net              tcp     -   20
```

danke für deine hilfe, steveb

jetzt bleibt nurnoch des MLDonkey problem...

----------

## steveb

cool  :Wink: 

also nun noch zu mldonkey: was für einen port benützt dieses ding denn überhaupt?

gruss

SteveB

----------

## manuels

also es nutzt Port 14662.

Jedes mal, wenn ich mich zu einem Edonkey-Server verbinde bekomm ich die Meldung vom EDonkey-Server, dass Port 14662 nicht erreichbar ist und ich deshalb eine LowID bekomme...  :Evil or Very Mad: 

----------

## steveb

okay... etwas verstehe ich dann nicht:

```
# and edonkey 

ACCEPT          net             fw              tcp     14662,14661 

ACCEPT          fw              net             tcp     14662 

ACCEPT          fw              net             tcp     80      # for server.met 

ACCEPT          net             fw              udp     14666 

ACCEPT          fw              net             udp     4666 

REDIRECT        net             4661            tcp     14662   - 

REDIRECT        net             4662            tcp     14662   -
```

warum hast du da öffters 4662 und 4661 drin?

gruss

SteveB

----------

## manuels

also 4662 und 4661 sind die standard ports.

damit mein Telekommuniktionsanbieter nicht direkt merkt, dass ich edonkey benutze habe ich die ports um 10000 angehoben.

irgendwelche software rafft das aber nicht richtig also hab redirecte ich diese ports auf meine echten ports (eigentlich dumm, dann fällt der vorteil den ich da oben beschrieben habe nämlich weg)

14661 wird irgendwie nur manchmal benutzt...

was würdest du mir den vorschlagen?

----------

## steveb

 *manuels wrote:*   

> was würdest du mir den vorschlagen?

 ich würde dir vorschalgen dich in die doku von mldonkey einzulesen und dort nachzulesen wie man den port ändert (wenn ich mich richtig entsinnen kann, kann man den port ändern).

Gruss

SteveB

----------

## manuels

wie man den port ändert weiss ich, meinst du ich sollte wieder die standardports setzen?

----------

## steveb

 *manuels wrote:*   

> wie man den port ändert weiss ich, meinst du ich sollte wieder die standardports setzen?

 NEIN! auf den 1466x port aber dann solltest du dieses umleitungszeugs ausschalten.

gruss

SteveB

----------

## manuels

ok, hab ich getan.

kannste mal versuchen auf den 14662 Port auf s-net.homelinux.net zuzugreifen.

dann können wir ja sehen, ob der Port wirklich geblockt wird.

----------

## steveb

ich komme mit telnet rauf, aber mit nmap ist der port zu:

```
thinkpad steveb # telnet s-net.homelinux.net 14662

Trying 217.93.114.79...

Connected to s-net.homelinux.net.

Escape character is '^]'.

Terminated

thinkpad steveb # nmap -sS s-net.homelinux.net

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-31 16:59 CEST

Interesting ports on pD95D724F.dip.t-dialin.net (217.93.114.79):

(The 1654 ports scanned but not shown below are in state: filtered)

PORT     STATE  SERVICE

21/tcp   open   ftp

22/tcp   open   ssh

80/tcp   open   http

113/tcp  closed auth

1214/tcp closed fasttrack

Nmap run completed -- 1 IP address (1 host up) scanned in 98.831 seconds

thinkpad steveb # nmap -sX s-net.homelinux.net

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-31 17:04 CEST

Interesting ports on pD95D724F.dip.t-dialin.net (217.93.114.79):

(The 1652 ports scanned but not shown below are in state: closed)

PORT    STATE SERVICE

21/tcp  open  ftp

22/tcp  open  ssh

80/tcp  open  http

135/tcp open  msrpc

139/tcp open  netbios-ssn

445/tcp open  microsoft-ds

631/tcp open  ipp

Nmap run completed -- 1 IP address (1 host up) scanned in 30.187 seconds

thinkpad steveb # nmap -sF s-net.homelinux.net

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-31 17:06 CEST

Interesting ports on pD95D724F.dip.t-dialin.net (217.93.114.79):

(The 1652 ports scanned but not shown below are in state: closed)

PORT    STATE SERVICE

21/tcp  open  ftp

22/tcp  open  ssh

80/tcp  open  http

135/tcp open  msrpc

139/tcp open  netbios-ssn

445/tcp open  microsoft-ds

631/tcp open  ipp

Nmap run completed -- 1 IP address (1 host up) scanned in 32.588 seconds

thinkpad steveb #
```

was sagt dein log?

gruss

SteveB

----------

## steveb

okay... habe nochmals einen scan gemacht:

```
thinkpad steveb # nmap -sV s-net.homelinux.net

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-31 17:16 CEST

Interesting ports on pD95D724F.dip.t-dialin.net (217.93.114.79):

(The 1654 ports scanned but not shown below are in state: filtered)

PORT     STATE  SERVICE    VERSION

21/tcp   open   ftp        ProFTPD 1.2.9

22/tcp   open   ssh        OpenSSH 3.8p1 (protocol 2.0)

80/tcp   open   http-proxy Squid webproxy 2.5.STABLE5-CVS

113/tcp  closed auth

1214/tcp closed fasttrack

Nmap run completed -- 1 IP address (1 host up) scanned in 103.251 seconds

thinkpad steveb #
```

und was sehe ich da? auf port 80 sitzt bei dir squid. okay... also gleich mal in meinem browser deinen host auf port 80 als proxy eingeben und sehen was läuft. okay... es läuft. ich kann deine kiste als proxy benützen. das ist NICHT GUT!

du solltest deinen squid so einstellen, dass von extern niemand ihn benützen kann!

oder hast du squid extra so konfiguriert?

gruss

SteveB

ps: du solltest in deinem /var/log/squid/access.log einen eintrag sehen, dass meine addresse auf www.ibm.com zugegriffen hat. das wäre der beweis, dass ich deinen squid als proxy missbrauchen konnte.

----------

## steveb

gut! immerhin ist protocol 1 bei ssh ausgeschaltet  :Wink:  das ist sehr sehr gut.

gruss

SteveB

----------

## steveb

ich hoffe du bist mir nicht böse, weil ich all diese "attacken" gegen dein system gefahren habe?

gruss

steve

----------

## manuels

nöö, is nich schlimm.

war nämlich garnich mein system   :Very Happy: 

ich hab kein squid laufen.

auf GARKEINEN fall.

----------

## steveb

 *manuels wrote:*   

> nöö, is nich schlimm.
> 
> war nämlich garnich mein system  
> 
> ich hab kein squid laufen.
> ...

 okay. aber ich kan das von dir angegebene system als proxy missbrauchen. wenn du die person kennst, die das system betreibt, dann weise ihn/sie darauf hin, dass etwas faul ist mit port 80.

gruss

steve

----------

## manuels

also das ganze versteh ich nicht ganz.

meine IP ist 217.93.114.79.

wenn ICH versuche den Port 80 auf dieser adresse zu erreichen, krieg ich ein "connection refused"

vielleicht hatte ich die IP noch nicht, als du sie gescannt hast - kann ich mir aber auch nicht wirklich erklären

----------

## steveb

also bei mir sieht das so aus, als wäre port 80 offen:

```
thinkpad / # nmap -sV -O 217.93.114.79

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-31 18:42 CEST

Insufficient responses for TCP sequencing (2), OS detection may be less accurate

Interesting ports on pD95D724F.dip.t-dialin.net (217.93.114.79):

(The 1654 ports scanned but not shown below are in state: filtered)

PORT     STATE  SERVICE    VERSION

21/tcp   open   ftp        ProFTPD 1.2.9

22/tcp   open   ssh        OpenSSH 3.8p1 (protocol 2.0)

80/tcp   open   http-proxy Squid webproxy 2.5.STABLE5-CVS

113/tcp  closed auth

1214/tcp closed fasttrack

Device type: general purpose

Running: Linux 2.4.X|2.5.X|2.6.X

OS details: Linux Kernel 2.4.0 - 2.5.20, Linux 2.4.10 - 2.4.18, Linux 2.6.0-test9 - 2.6.0 (x86)

Uptime 3.080 days (since Fri May 28 16:49:04 2004)

Nmap run completed -- 1 IP address (1 host up) scanned in 119.713 seconds

thinkpad / #
```

okay... aber nachdem ich den test nochmals mit telnet gemacht habe (auf port 80) sehe ich, dass es mein squid proxy ist, der dazwischen funkt. sorry für die aufregung.

gruss

steve

----------

