![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |
Alle Programme unter UNIX sind darauf ausgelegt, im Netzwerk miteinander kommunizieren zu k�nnen. So arbeiten Mailprogramme, DNS - Server, FTP - Server stets Hand in Hand und tauschen Informationen untereinander aus. Diese Programme laufen aber auch, wenn keine Netzwerkkarte eingebaut ist. Der Grund liegt darin, da� diese sich �ber ein sogenanntes LOOPBACK Interface miteinander unterhalten. Dieses LOOPBACK Interface wird mit lo bezeichnet und besitzt die IP - Nummern 127.x.x.x. Man kann im Prinzip jede vierstellige IP - Nummer angeben, hauptsache sie beginnt mit 127. Dieses wurde in den 70er Jahren so definiert. Man kann es sich anzeigen lassen, wenn man /sbin/ifconfig -a eingibt. �ber dieses LOOPBACK Interface findet auch die Kommunikation zwischen X - Windows Client und Server statt, wenn beide auf demselben UNIX Host gestartet sind. Ohne Loopback funktioniert X-Windows sonst nicht oder nur �ber das Netzwerk. Z.B. ein ping auf die eigene Netzwerkkarte funktioniert ohne aktiviertes LOOPBACK nicht.
Die Ausgabe des Befehls /sbin/ifconfig zeigt:
user01@tunix:/etc > /sbin/ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:349 errors:0 dropped:0 overruns:0 frame:0
TX packets:349 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
eth0 Link encap:Ethernet HWaddr 00:80:AD:30:B6:CA
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1250 errors:0 dropped:0 overruns:0 frame:0
TX packets:795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
Interrupt:10 Base address:0x6600
Man sieht das Loopback Interface lo, welches sich auf die Adresse 127.0.0.1
gebunden hat. Das Device eth0 ist korrekt an die Netzwerkkarte
angebunden.
Weiterhin interessiert die Route, also der Weg, den die die Pakete nehmen: Der Befehl: /sbin/route -n zeigt die Routen an, wobei die Option -n die DNS Namens - Aufl�sung unterdr�ckt.
user01@tunix:/etc > /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 6 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 1 lo
Hier sieht man, da� alle Pakete unserer Ethernetkarte eth0 an die Netzwerkadresse 10.0.0.0 gebunden sind, mit einer Netmask 255.255.255.0. Dies bedeutet, da� der Host nun mit 252 anderen Hosts verbunden werden kann, also von 10.0.0.2 bis 10.0.0.254. Die Nummer 10.0.0.255 ist per Definition als Broadcast Adresse (siehe oben) eingetragen.
Das LOOPBACK Interface bindet sich an die interne Netzwerkadresse 127.0.0.0.
Es hat also alles seine Ordnung. Im �brigen besitzen auch Windows 95 und viele andere Betriebssysteme ein solches: Man mu� nur in der DOS-Shell einmal route -print, oder ipconfig oder netstat eintippen, es funktioniert ebenso. Sogar die Datei c:\\windows\etc hat unter Windows eine Funktion. Bestimmte IP - Nummern sind allerdings reserviert und d�rfen nicht ohne genaue Kenntnis vergeben werden:
224.0.0.0 f�r Multicast, also Video�bertragungen
10.0.0.0 und 192.168.0.0 f�r eigene Netzwerke. Diese werden nicht in das Internet weitergeleitet.
255.255.255.255 f�r allgemeine Broadcasts
127.0.0.0 f�r LOOPBACK
Nun zur�ck zum Paket forwarding
Der Befehl: ipfwadm -F -p deny untersagt die Weiterleitung von Paketen zwischen allen Interfaces. Genaugenommen sind es nun drei Interfaces, eth0 der ersten Netzwerkkarte, eth1 der zweiten Netzwerkkarte und lo, dem Loopback Interface. Eventuell kommt noch eine ISDN-Karte hinzu, diese belegt das Interface ippp0 f�r ISDN Kanal 1, oder ippp1, f�r den 2. ISDN-Kanal. Das w�ren 5 Interfaces. Nun, der Name UNIX kommt nicht von irgendwo, er leitet sich aus UNICS ab, einem UNIversal Computer System. Sp�ter wurden nur CS zu X verschmolzen. Linus Torwalds ist genau auf demselben Wege zu dem Namen LINUX gekommen ;-)
Nun mu� man sich entscheiden, und diesen Interfaces eine IP - Nummer zuweisen. Damit nicht alle Befehle immer wieder eingegeben werden m�ssen, schreiben wir diese in eine Skript - Datei. Damit das Skript allgemeing�ltig ist, werden ab hier Namen statt IP - Nummern eingef�hrt. Diese bezeichnen Variablennamen f�r die Abarbeitung in der BASH, der Standard Shell unter Linux. IP - Nummern sind schwer zu merken, und irgendwann hat man keinen Durchblick mehr, welche IP - Nummer und Netzwerknummer welchem Interface zugeordnet ist. Der Befehl set zeigt alle Variablen an. Der Befehl variable=wert weist einer Umgebungsvariablen einen Wert zu. Der Befehl echo echo ${variable} gibt den Wert der Variablen aus.
Somit kann man gleich 3 Fliegen mit einer Klappe schlagen. Erstens kann man die Variablenzuweisungen zu Anfang in eine Datei schreiben, zweitens k�nnen wir den Code lesbar und verst�ndlich gestalten, und drittens kann man nun ein allgemeing�ltiges Skript schreiben, in welches dann nur noch am Anfang die richtigen Netzwerk und IP - Adressen eingetragen werden m�ssen.
Im folgenden Beispiel wird festgelegt, da� alle D�monen oder Programme auf der Firewall auf das loopback interface zugreifen k�nnen. Das ist insbesondere dann notwendig, wenn man z.B. mit Netscape auf den WWW-Server zugreifen k�nnen m�chte.
# Das loopback Interface
ipfwadm -I -a accept -W $LOOPBACK
ipfwadm -O -a accept -W $LOOPBACK
Dies bedeutet, da� nur die D�monen und Programme auf der Firewall selber
untereinander kommunizieren k�nnen. Der Verbindungsaufbau �ber die
Netzwerkkarten d�rfte (noch) nicht funktionieren.
Das -a besagt, da� eine Regel zu den bestehenden Regeln hinzugef�gt (angehangen) wird (append). Das -W (wichtig: gro�es W) bezeichnet das Interface. $LOOPBACK_INTERFACE ist der Wert der Variablen LOOPBACK_INTERFACE, dem wir sp�ter noch 127.0.0.1 zuweisen m�ssen. Die beiden Zeilen bedeuten also, da� von allen Interfaces der Verkehr vom und zum loopback Interface erlaubt ist.
Nun ist noch ein kleines Problem zu l�sen: Wird ein Programm oder D�mon auf dem Host gestartet, �ber welches Interface ist dieser ansprechbar, und �ber welches Interface sendet er irgendwelche Pakete ?
Die Frage ist eindeutig zu beantworten, wenn man sich die Ausgabe von "netstat -a" anschaut:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 1 0 tunix.intra.net:www www.intra.net:1365 ESTABLISHED
tcp 0 0 www.intra.net:1365 tunix.intranet:www ESTBLISHED
tcp 0 0 *:6000 *:* LISTEN
tcp 0 0 *:3128 *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 *:pop3 *.* LISTEN
tcp 0 0 *:login *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
Man sieht, da� von tunix.intra.net eine WWW-Verbindung zu www.intra.net und umgekehrt besteht (ESTABLISHED). Diese Verbindung liegt auf Port 1365. Wie kann das, wo doch allgemein bekannt ist, da� eine WWW-Verbindung auf Port 80 erreichbar ist ?
Nun, die Antwort ist etwas komplizierter. Selbstverst�ndlich wird zuerst eine Verbindung auf Port 80 ge�ffnet. W�rden aber beide Partner nun �ber diesen Port weiter kommunizieren, so k�nnte weder eine zweite Verbindung zwischen den beiden aufgebaut werden, noch k�nnte ein dritter Host auf den Port 80 einer der beiden Hosts zugreifen. Genaugenommen wird aus IP - Nummer und Portnummer ein sogenannter HASH Wert f�r jede TCP/IP Verbindung errechnet, an denen sich die Kommunikationspartner wiedererkennen, auch wenn z.B. ein WWW-Server viele tausend simultane Kommunikationspartner gleichzeitig abzuarbeiten hat. Damit z.B. der Server weiterhin noch f�r andere Hosts erreichbar ist, verabreden sich Server und Client, nachdem sie sich kontaktiert haben, die weitere Daten�bertragung �ber freie, nicht privilegierte Ports abzuwickeln. Dies sind alle Ports �ber 1024, nach der Definition der alten BSD UNIX Systeme. Somit w�re der Port 80 wieder frei f�r neue Anfragen. Man sieht auch einige offene Ports...pop3 LISTEN ? Das bedeutet, da� der POP3 D�mon lauscht, nur an welchem Interface ?
Das entscheidet sich beim Start eines D�mons. Ohne Parameter aufgerufen, bindet er sich an alle Interfaces, die ihm angeboten werden, vorrangig nat�rlich an das LOOPBACK Interface. Man kann jedem D�mon aber auch genau das Interface angeben, an welches er sich binden soll. Leider haben manche Programmierer von D�monen vergessen, eine solche Option einzuprogrammieren, soda� man nicht angeben kann, an welches Interface sich der D�mon bindet. Bei guten Programmen, wie Apache WWW-Server, SAMBA, FTP ....kann man dies genau festlegen. Die Optionen findet man in den Konfigurationsdateien oder man �bergibt beim Start des D�mons einen Parameter (Siehe /etc/inetd.conf). Startet man Interfaces, wenn schon D�monen laufen, dann binden sich diese nachtr�glich automatisch an das neue Interface. Mu� ein D�mon viele Interfaces nach Paketen f�r ihn �berwachen, so verringert sich seine Performance. Dramatische Sicherheitsl�cken haben sich dadurch bei Installation von Firewalls unter NT und auch UNIX ergeben. Hier war z.B. das Fernwartungs - Interface des Microsoft Firewall - PROXY 1.0/2.0 von au�en her erreichbar. Eine winzige Kleinigkeit hat somit die Funktion der Firewall v�llig ad absurdum gef�hrt. Leider passieren solche Fehler sehr h�ufig. Der Hauptgrund liegt wohl darin, da� man als Systemadministrator bei bestimmten Betriebssystemen wohl schon froh ist, wenn alles �berhaupt l�uft....weitere Untersuchungen mit einer Kl�rung, warum nun z.B. Windows NT 4.0 SP4 Pakete in andere Netze streut (ISDN Karte, RAS) werden oft nicht angestellt.
![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |