2. Konfiguration - Routing/Firewall
:::[ ROUTE_NETWORK ]:::
:::[ FORWARD_DENY_HOST_N ; FORWARD_DENY_HOST_x ][ FORWARD_DENY_PORT_N ; FORWARD_DENY_PORT_x ][ FORWARD_TRUSTED_NETS ]:::
:::[ FIREWALL_DENY_PORT_N ][ FIREWALL_DENY_PORT_x ][ FIREWALL_DENY_ICMP ][ FIREWALL_LOG ]:::

ROUTE_NETWORK

Mit ROUTE_NETWORK kann man bestimmten externen Netzen den Zugang in das eigene LAN erlauben, und zwar *ohne* Masquerading. Dieses kann z.B. für eine Verbindung zur Firma sinnvoll sein, wo Mitarbeiter dieser Firma von dort Zugang in das eigene Netz haben sollen. Das Format ist dasselbe wie bei MASQ_NETWORK, also z.B.

ROUTE_NETWORK='192.168.1.0/24'
   

Auch können hier wieder mehrere (diesmal externe) Netze angegeben werden.

ROUTE_NETWORK ist eine optionale Variable. In den meisten Fällen sollte man sie einfach leer lassen.

nach oben

FORWARD_DENY_HOST_N ; FORWARD_DENY_HOST_x

Soll einigen Rechnern der Zugriff in andere Netze (also z.B. das Internet) verwehrt werden, können sie in dieser Liste eingetragen werden. Das Routing von IP-Paketen in andere Netze wird dann für diese Rechner in der Firewall verboten.

Beispiel:

FORWARD_DENY_HOST_N='2'
FORWARD_DENY_HOST_1='192.168.6.5'
FORWARD_DENY_HOST_2='192.168.6.6'
    
nach oben

FORWARD_DENY_PORT_N ; FORWARD_DENY_PORT_x

Hiermit kann das Routing über bestimmte IP-Ports verhindert werden. Sinnvoll ist z.B. das Verbieten des Routings der Netbios-Ports 137-139. Damit wird nicht nur das Routing von IP-Paketen mit den angegebenen Ports nach "außen" unterbunden, sondern auch das Routing dieser Ports zwischen zwei LANs.

Betreibt man mehrere Netzwerkkarten für mehrere Subnetze und möchte, daß einige Clients aus einem Subnetz auf die unter Windows freigegebenen Verzeichnisse eines Clients aus einem anderen Subnetz zugreifen können, sollte das Forwarding der Netbios-Ports aber hier nicht unterbunden werden. In diesem Fall kann man mit FORWARD_TRUSTED_NETS Netze angeben, zwischen denen das Routing dieser Ports dennoch explizit erlaubt ist.

Ein Beispiel: Abschalten Zugriff auf Napster-Dienste:

FORWARD_DENY_PORT_N='6'         # Anzahl
FORWARD_DENY_PORT_1='137:139'   # NetBios-Ports 137 bis 139
FORWARD_DENY_PORT_2='8888'      # Napster Port 8888
FORWARD_DENY_PORT_3='7777'      # Napster Port 7777
FORWARD_DENY_PORT_4='7000'      # Napster Port 7000
FORWARD_DENY_PORT_5='4444'      # Napster Port 4444
FORWARD_DENY_PORT_6='4200'      # Napster Port 4200
    

Ab Version 1.5.1 kann nun noch ein weiterer Parameter zusätzlich zur Portnummer angegeben werden, nämlich:

REJECT      - das Weiterleiten des IP-Paketes wird abgelehnt
DENY        - das IP-Paket wird schlichtweg ignoriert.
    

Fehlt die zusätzliche Angabe, wird die REJECT-Methode verwendet. Beispiel:

FORWARD_DENY_PORT_1='80 DENY'   # Surfen heute verboten!
    

Standard-Einstellung: FORWARD_DENY_PORT_N='1' FORWARD_DENY_PORT_1='137:139'

nach oben

FORWARD_TRUSTED_NETS

Das Sperren des Routings der mittels FORWARD_DENY_PORT_x angegebenen Ports kann mit FORWARD_TRUSTED_NETS für bestimmte Netze außer Kraft gesetzt werden. Hier können Netze angegeben werden, die "vertrauenswürdig" sind. Ein typisches Beispiel ist das Routing von NetBios-Ports zwischen zwei LANs, die über zwei Netzwerkkarten des fli4l-Routers versorgt werden. In diesem Fall sind alle vertrauenswürdigen Netze anzugeben, z.B.

FORWARD_TRUSTED_NETS='192.168.1.0/24 192.168.6.0/24'
    
Standard-Einstellung: FORWARD_TRUSTED_NETS=''
nach oben

FIREWALL_DENY_PORT_N

Firewall-Ports: bei FIREWALL_DENY_PORT_N ist die Anzahl der TCP/IP-Ports anzugeben, die bei Zugriff von aussen (also ISDN oder DSL) auf den fli4l-Router gesperrt werden sollen. Da fli4l bestimmte Dienste zur Verfügung stellt, ist es sinnvoll, diese vor Zugriffen vor aussen zu schützen.

Dies betrifft folgende Ports:

    Port           Name                    Prozess
-----------------------------------------------------------
     21            ftp                     ftpd
     22            ssh                     sshd
     23            telnet                  telnetd
     37            time                    [kernel]
     53            domain                  ens
     80            www                     mini_httpd
137:139            netbios                 smbd (samba)
    515            printer                 lpd
   5000            [imond]                 imond
   5001            [telmond]               telmond
   8000            [proxy]                 junkbuster
    

Hinweis:

Ein maskiertes LAN (s.o) ist generell vor dem Zugang von aussen geschützt. Die angegebenen Portnummern regeln deshalb nur den Zugriff von aussen auf den fli4l-Router selbst.

nach oben

FIREWALL_DENY_PORT_x

Die zu sperrenden Ports müssen jeweils einzeln in den Variablen FIREWALL_DENY_PORT_1 bis FIREWALL_DENY_PORT_n eingetragen werden. Man kann Bereiche von Port-Nummern mit dem Doppelpunkt zusammenfassen, z.B. '137:139'

Es wird DRINGEND empfohlen, die Standardkonfiguration der Firewall-Ports nicht zu verändern. Soll jedoch ein bestimmter Dienst über Portforwarding in das innere Netz geleitet werden, muß der entsprechende Port freigeschaltet, also hier entfernt werden.

In der Beispiel-Datei werden alle priviligierten Ports von 0 bis 1023 außer 53 gesperrt, außerdem die Ports 5000 und 5001, welche von imond und telmond verwendet werden. Wird auf dem fli4l-Rechner zusätzlich Junkbuster eingesetzt, ist auch der Port 8000 zu sperren.

Die Standard-Konfiguration sieht daher folgendermaßen aus:

FIREWALL_DENY_PORT_N='6'
FIREWALL_DENY_PORT_1='0:52      REJECT'
FIREWALL_DENY_PORT_2='54:112    REJECT'
FIREWALL_DENY_PORT_3='114:1023  REJECT'
FIREWALL_DENY_PORT_4='5000:5001 REJECT'
FIREWALL_DENY_PORT_5='8000      REJECT'
FIREWALL_DENY_PORT_6='20012     REJECT'
    

WICHTIG:
Es ist unbedingt nötig, den Port 53 freizuschalten. Anderenfalls sind keine Internet-DNS-Abfragen möglich!

Soll zum Beispiel der Port 21 für FTP von außen zugänglich sein, weil er über Portforwarding auf einen internen Rechner weitergeleitet werden soll, kann man ihn folgendermaßen freischalten:

FIREWALL_DENY_PORT_N='7'                # Neu: 7 statt 6 Einträge!
FIREWALL_DENY_PORT_1='0:20      REJECT' # Ports von 0 bis 20 sperren
FIREWALL_DENY_PORT_2='22:52     REJECT' # Ports von 22 bis 52 sperren
FIREWALL_DENY_PORT_3='54:112    REJECT' # Ports von 54 bis 112 sperren
FIREWALL_DENY_PORT_4='114:1023  REJECT' # Ports von 114 bis 1023 sperren
FIREWALL_DENY_PORT_5='5000:5001 REJECT' # imond/telmond-Ports sperren
FIREWALL_DENY_PORT_6='8000      REJECT' # HTTP-Proxy-Zugang sperren
FIREWALL_DENY_PORT_7='20012     REJECT' # VBOX-Zugang sperren
    

Hier eine Liste der gängigen Internet-Dienste und ihrer Ports:

ftp              21
ssh              22
telnet           23
smtp             25
time             37
domain           53
http             80
pop3            110
auth (ident)    113
syslog          514
printer         515
    

Wohlgemerkt: Diese Ports brauchen nur freigeschaltet werden, wenn ein Zugriff auf das innere Netz über Portforwarding ermöglicht werden soll!

Ab Version 1.5.1 kann nun noch ein weiterer Parameter zusätzlich zur Portnummer angegeben werden, nämlich:

REJECT      - das Weiterleiten des IP-Paketes wird abgelehnt
DENY        - das IP-Paket wird schlichtweg ignoriert.
    

Fehlt die zusätzliche Angabe, wird die REJECT-Methode verwendet: Wenn der Router auf einem Port von außen her angesprochen wird, sender er seinem Gegenüber eine Antwort (Ablehnung).

Bei der Anwendung der DENY-Methode verhält sich der Router still - das kann auch Probleme machen. Zum Beispiel schicken einige Rechner, die Internet-Dienste wie ftp anbieten, als Antwort auf einen Verbindungsaufbau eine Anfrage auf Port 113 (auth) zurück. Wenn fli4l darauf nicht reagiert, kann es zum ungewollten Abbruch der Verbindung zum gewünschen Dienst kommen.

Ich persönlich ziehe die REJECT-Methode vor, da sie erwartungsgemäß weniger Probleme bei diversen Internet- Protokollen bereitet und genauso sicher ist wie DENY.

Weiterführende Informationen zu REJECT vs DENY (bei iptables auch DROP genannt):

http://www.iks-jena.de/mitarb/lutz/usenet/Firewall.html#Deny http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject
nach oben

FIREWALL_DENY_ICMP

Sollen Zugriffe von außen über das ICMP-Protokoll verboten werden, kann FIREWALL_DENY_ICMP='yes' gesetzt werden. In diesem Fall kann man den Router von außen nicht mehr mit ping ansprechen.

Bitte unbedingt folgende Links beachten:

http://www.iks-jena.de/mitarb/lutz/usenet/Firewall.html#Verstecken http://www.fli4l.de/faq/index.php?sid=&aktion=anzeigen&rubrik=3&id=165

Standard-Einstellung: FIREWALL_DENY_ICMP='no'

nach oben

FIREWALL_LOG

Mit FIREWALL_LOG kann eingestellt werden, ob Zugriffe von außen auf die Firewall-Ports über die Syslog-Schnittstelle protokolliert werden sollen.

Hier eine kurze Erklärung einer Protokollzeile:

Packet log:
input REJECT ppp0 PROTO=6 217.88.245.79:3248 217.88.168.16:80 L48 S=0x00 I=60459 F=0x4000 T=124 SYN (#6)

input       Input-Chain
REJECT      Paket wurde zurückgewiesen.
ppp0        Device
PROTO=6     TCP Paket
L           Länge des Pakets in Bytes
S           Type Of Service (TOS)
I           IP-ID, wird mit jedem Paket vom Sender um eins erhöht
F           Flags (3 bits), falls Paket fragmeniert ist das Offset, 13 bits
T           TTL (Time To Live), Anzahl der Hops, bis das Paket gelöscht wird
#6          die 6. Regel des Paketfilters hat zugeschlagen
        

Standard-Einstellung: FIREWALL_LOG='yes'

nach oben