Unterabschnitte

Das Routing Paket

Einleitung

Im Routing-Paket werden Einstellungen zum Masquerading, Portfilter und Portforwarding vorgenommen.

Konfiguration

Routing

START_ROUTING

Gültige Werte: yes, no Hier wird das Paket ein und ausgeschaltet.

MASQ_NETWORK

Hier sind die Netzwerke anzugeben, die nach außen hin maskiert werden sollen. Verwendet man nicht-offizielle IP-Adressen, wie z.B. 192.168.x.x, und soll der Server als Zugang ins Internet verwendet werden, müssen diese hier unbedingt angegeben werden.

Die Form ist:

NETZWERKNUMMER/ANZAHL-DER-GESETZTEN-BITS-IN-NETMASK

also z.B. für Netze der Form 192.168.x.0:

MASQ_NETWORK='192.168.6.0/24'

Hier sind also die ersten 24 Bits in der Netzwerkmaske gesetzt. Sollen mehrere Netze maskiert werden, sind diese durch Leerzeichen zu trennen. Soll kein Netz maskiert werden, muss der Variablen-Inhalt leer sein.

Die Verwendung von IP-Masquerading hat zwar den Vorteil, dass mehrere Rechner im LAN über eine einzige offizielle IP-Adresse geroutet werden kann, es gibt aber auch Nachteile, die man in Kauf nehmen muss.

Ein großes Problem ist zum Beispiel, dass kein Rechner von außen von sich aus eine Verbindung zu einem Rechner aufnehmen kann. Das ist zwar aus Sicherheitsgründen eigentlich durchaus erwünscht, aber bestimmte Protokolle funktionieren nicht mehr, weil sie einen Verbindungsaufbau von außen einfach erfordern.

Ein klassisches Beispiel ist ftp. Neben dem Kommunikationskanal, auf dem Befehle und Antworten ausgetauscht werden, wird ein weiterer Kanal (in Form eines IP-Ports) verwendet, um die eigentlichen Nutzdaten zu versenden. fli4l verwendet dafür bestimmte Masquerading-Module, um solche zusätzlichen Ports, die verwendet werden, ad hoc dann freizuschalten und an den internen Rechner weiterzuleiten, wenn sie benötigt werden. Dabei „horcht“ das Masquerading-Modul in den Datenstrom, um zu erkennen, wann ein zusätzlicher Port benötigt wird.

Typische Anwendungen für Masquerading-Module sind Chat-Protokolle und Spiele im Internet.

Bisher wurde für fli4l das ftp-Masquerading-Modul immer automatisch geladen. Mittlerweile sind weitere Module verfügbar. Diese lassen sich auch mit zusätzlichen Optionen aufrufen. Dies ist zum Beispiel dann nötig, wenn ein FTP-Server auf einem anderen Port als 21 angesprochen werden soll. Hier eine Übersicht aller Module mit ihren Parametern, die vorgegebenen Werte sind die Standardwerte:

ftp
File Transfer Protocol
irc
Internet Relay Chat

Bemerkungen

mIRC ist standardmäßig falsch konfiguriert, sodass er nicht mit diesem Modul zusammenarbeitet. Um mIRC richtig einzustellen, geht man folgendermaßen vor (Verbindung zum IRC-Server erst trennen): Im „Options“-Dialog: Auswahlliste: „Connect“, dann „Local Info“, hier beide Eingabefelder löschen (falls etwas drin steht), dann „Lookup Method:“ auf „Normal“ stellen.

Alle Parameter, die eine Liste von Ports annehmen, können höchstens 12 Ports übergeben bekommen.

Natürlich kann man nicht für jedes Protokoll, welches zusätzliche Ports verwendet, ein separates Masquerading-Modul programmieren. Aus diesem Grund gibt es neben den oben aufgeführten Modulen auch noch eine andere Möglichkeit, neue Ports an einen internen Rechner weiterzuleiten. Siehe dafür auch die Beschreibung zum Port-Forwarding.

MASQ_MODULE_N

gibt die Anzahl der zu ladenden Masquerading-Module an.

Die Standardeinstellung für MASQ_MODULE_N ist '1'. Damit wird nur das erste Modul, nämlich ftp, geladen. Möchte man weitere Module laden, ist MASQ_MODULE_N entsprechend zu erhöhen. Die Reihenfolge in der beigefügten Datei config/base.txt ist nur ein Beispiel. Sie kann also beliebig geändert werden, z.B.

MASQ_MODULE_N='2'
MASQ_MODULE_1='ftp'
MASQ_MODULE_2='irc'

MASQ_MODULE_x

gibt das x'te zu ladende Masquerading-Modul an.

MASQ_MODULE_x_OPTION

legt Optionen für das jeweilige Modul fest. Kann leer bleiben.

MASQ_FTP_PORT_N

Hier können die Standard-Ports für FTP auf alternative Portnummern gesetzt werden.

ROUTE_NETWORK

Pakete, die zu von Hosts in diesen Subnetzen aufgebauten Verbindungen gehören, werden vom Router weitergeleitet (geforwarded). Zusätzlich werden Pakete, die in diese Netze hineingehen, nicht maskiert.

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 Netze angegeben werden.

ROUTE_NETWORK kann in der Regel einfach leer bleiben.

FORWARD_HOST_WHITE

Hiermit kann eingestellt werden, ob die folgende Liste von Hosts eine Liste aller erlaubten ('yes') oder aller verbotenen Hosts ist ('no'), welche auf das Internet zugreifen dürfen.

FORWARD_HOST_N /
FORWARD_HOST_x

Normalerweise soll allen Rechnern im LAN der Internet-Zugang erlaubt sein. Dann ist FORWARD_HOST_WHITE='no' einzustellen und FORWARD_HOST_N='0' zu setzen. Anderenfalls setzt man FORWARD_HOST_N auf die Anzahl der verbotenen/erlaubten Rechner und trägt diese in FORWARD_HOST_x ein.

FORWARD_DENY_PORT_N /
FORWARD_DENY_PORT_x

Hier können Ports angegeben werden, die generell nicht in das Internet geroutet werden sollen. Sinnvoll sind hier zum Beispiel die SMB-Ports 137-139, die von Windows für Netzwerkfreigaben verwendet werden. Deshalb ist standardmäßig eingestellt:

FORWARD_DENY_PORT_N='1'
FORWARD_DENY_PORT_1='137:139 REJECT'

INPUT_ACCEPT_PORT_N /
INPUT_ACCEPT_PORT_x

Standardmäßig sind alle Ports nach außen zu, eine Verbindung zum Router ist nicht möglich. Ports, auf denen ein Dienst nach außen angeboten wird, müssen hier angegeben werden.

Ein Eintrag besteht dabei aus einem einzelnem Port bzw. einem ganzen Port-Bereich (zwei Ports durch Doppelpunkt getrennt) und einer optionalen Protokollangabe (TCP oder UDP). Wird kein Protokoll angegeben, werden auf dem Port beide Protokolle akzeptiert. Am Beispiel der ssh, die ihren Dienst auf Port 22 über das TCP-Protokoll anbietet, würde das wie folgt aussehen:

INPUT_ACCEPT_PORT_N='1' # no. of ports to accept from outside
INPUT_ACCEPT_PORT_1='22 TCP' # e.g. allow connection to ssh service

Port-Forwarding

Für einige Internet-Protokolle ist es nötig, einen Verbindungsaufbau eines Rechners von außen in das interne Netz umzuleiten. Ist das Netz nach außen hin maskiert (IP-Masquerading), also nur eine offizielle IP- Adresse für das gesamte LAN vorhanden, kann man bestimmte Ports oder Protokolle, die von außen erreichbar sein sollen, auf einen bestimmten internen Rechner umleiten. Dieses nennt man Port-Forwarding (bzw. allgemeiner Destination Network Address Translation, kurz DNAT). Die Problematik des Port-Forwarding wurde bei der Beschreibung von MASQ_MODULE_N bereits angesprochen (s.o.).

Oft müssen bei Spielen, Chat oder Internet-Telefonie solche Ports freigeschaltet werden. Können dies die Masquerading-Module selber nicht lösen, kann man selbst Port-Weiterleitungen einrichten.

PORTFW_N

Hiermit wird die Anzahl der Port-Weiterleitungen angegeben. Diese werden in PORTFW_x_SOURCE, PORTFW_x_SOURCE und PORTFW_x_PROTOCOL definiert.

PORTFW_x_SOURCE

Pakete sind an ein bestimmtes Ziel gerichtet (normalerweise eine IP- Adresse und ein Port) und gehören zu einem bestimmten Protokoll. Dieses Ziel ist in einem maskierten Netz der Router, das eigentliche Ziel liegt aber im maskierten Netz, die Pakete müssen also dorthin weitergereicht werden.

PORTFW_x_SOURCE gibt an, an welches Ziel Pakete gerichtet sein müssen, um weitergeleitet zu werden. Kommt ein solches Paket am Router an, wird es an das eigentliche Ziel weitergeleitet.

Folgende Formate sind hier möglich:

PORTFW_x_SOURCE='<port>'

Leitet alle Pakete weiter, die bei aktiver Internetverbindung auf dem Port <port> ankommen an einen anderen Rechner weiter.

PORTFW_x_SOURCE='<port1>-<port2>'

Leitet alle Pakete, die auf den Ports im Bereich zwischen <port1> und <port2> ankommen, an einen anderen Rechner weiter.

PORTFW_x_SOURCE='<ip>:<port>'

Leitet alle Pakete, die auf der IP <ip> des Routers auf Port <port> ankommen, an einen anderen Rechner weiter.

PORTFW_x_TARGET

Dieser Parameter gibt das Ziel eines Port-Forwardings an. Dies ist in der Regel ein anderer Computer im internen Netzwerk. Folgende Formate sind hier möglich:

PORTFW_x_TARGET='<ip>'

Leitet alle Pakete, die für diese Regel ankommen, an den Rechner mit der IP <ip> weiter.

PORTFW_x_TARGET='<ip>:<port>'

Leitet alle Pakete, die für diese Regel ankommen, an den Rechner mit der IP <ip> an den Port <port> weiter. Diese Regel ist für Portbereiche (<port1>-<port2>) unzulässig!

PORTFW_x_PROTOCOL

Dieser Parameter gibt das Protokoll an, für das diese Regel zutrifft. Zugelassen sind hier 'tcp', 'udp', 'gre' und die Angabe der Protokollnummer (siehe Liste der Protokoll-Nummern der IANA).

PACKETFILTER_LOG

Hier kann eingestellt werden, ob abgelehnte Zugriffe von außen über die Syslog-Schnittstelle protokolliert werden sollen.

Hier eine kurze Erklärung der wichtigsten Elemente einer Protokollzeile:

IN=ppp0 OUT= MAC= SRC=217.238.54.176 DST=217.235.38.43 LEN=48 TOS=0x00 PREC=0x00 TTL=124 ID=30343 DF PROTO=TCP SPT=3087 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0

IN
Device, auf dem das Paket hereinkam
SRC
Quelladresse des Paketes (Source)
DST
Zieladresse des Paketes (Destination)
LEN
Länge des Pakets in Bytes (Length)
TOS
Type Of Service
TTL
Time To Live, Anzahl der Hops, bis das Paket gelöscht wird
PROTO=TCP
TCP Paket
SPT
Quellport (Source Port)
DPT
Zielport (Destination Port)
ID
IP-ID, wird mit jedem Paket vom Sender um eins erhöht

Standardeinstellung: PACKETFILTER_LOG='no'

eis 2017-05-03