|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ISBN: 393751404X ISBN: 393751404X ISBN: 393751404X ISBN: 393751404X | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Wir empfehlen: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eine frei verwendbare Unix-Grundlagenschulung mit muLinux
Wozu brauche ich denn eigentlich ein Netzwerk?
Diese Frage kann durchaus auftreten wenn man nur einen Rechner ohne Netzwerkkarte und Modem hat.
Oder man liegt mit seinem Laptop auf der grünen Wiese und der nächste Rechner ist weit.
Wer nun aber denkt dieses Kapitel nicht studieren zu brauchen, der hat sich geirrt.
Wir lernen die Netzwerk-Grundlagen mit Hilfe eines Rechners.
Das Zauberwort heißt loopback (engl. loop = Schleife, back = zurück).
Es wird dem Rechner ein Netzwerk vorgegaukelt, indem er auf sich selbst verweist.
Das hat für uns folgende Vorteile:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sprache: | Deutsch |
| Übertragung: | Kehlkopf, Luftschwingungen, Ohren |
Heutzutage unterhält man sich ja meist mehr mit Hilfe eines Handys (engl. für griffig, handlich - nicht für Funktelefon!) als mit dem, der am gleichen Tisch sitzt. Schauen wir uns nun das Modell an:
| Sprache: | Deutsch |
| Übertragung: | Kehlkopf, Luftschwingungen, Kabel, Funk, Ohren |
Wir haben also die untere Schicht geändert. Die obere Schicht bleibt aber davon unabhängig. Wobei aber die obere Schicht die untere voraussetzt. Es ist uns aber vollkommen egal wie die technische Realisierung der unteren Schicht erfolgt. Dies kann mit Kupfer- oder Lichtwellenleiterkabeln, mit analogen oder digitalen Vermittlungszentralen erfolgen. Als Endanwender interessiert uns das nicht. Nur wenn es preisliche Unterschiede gibt.
Natürlich können wir auch die Sprache ändern, wenn wir mehrere Sprachen sprechen.
| Sprache: | Englisch |
| Übertragung: | Kehlkopf, Luftschwingungen, Ohren |
Wenn wir der Sprache nicht so mächtig sind oder wir uns vergewissern wollen, ob der andere alles verstanden hat, müssen wir zur Sicherheit nachfragen.
| Sprache: | Deutsch |
| Bestätigung: | Haben Sie verstanden? |
| Übertragung: | Kehlkopf, Luftschwingungen, Ohren |
Stellen wir uns eine Versammlung vor und alle wollen sprechen. Es muß also eine Regelung geben, wer sprechen darf. Meist regelt dies der Versammlungsleiter.
| Sprache: | Deutsch |
| Vermittlung: | Sie dürfen jetzt sprechen. |
| Bestätigung: | Haben Sie verstanden? |
| Übertragung: | Kehlkopf, Luftschwingungen, Ohren |
Sicherlich ist dieses Modell theoretisch nicht ausgereift. Das ist auch nicht mein Ziel. Ich denke es ist ersichtlich, daß es nicht einfach ist ein allgemeingültiges Modell für alle Kommunikationen zu schaffen. Die ISO (International Standardisation Organisation) hat sich also viel Mühe gemacht, um das OSI-Modell zu entwickeln.
| 7 | Anwendungsschicht |
| 6 | Darstellungsschicht |
| 5 | Kommunikationssteuerungsschicht |
| 4 | Transportschicht |
| 3 | Vermittlungsschicht |
| 2 | Sicherungsschicht |
| 1 | Bitübertragungsschicht |
Dieses Modell ermöglicht die Kommunikation mittels unterschiedliche Hard- und Software. Des weiteren brauchen sich die Hard- und Softwareentwickler sich nur um die für das Produkt wichtigen Schichten kümmern. Jeder muß sich natürlich an die definierten Schnittstellen zwischen den Schichten halten.
Eine Schnittstelle (engl. interface) definiert Übergaben. Eine uns bekannte Schnittstelle ist die Stromsteckdose. Wie der Strom gemacht wird, ob mit Kohle, Wasser oder Atomkraft ist uns meist (noch) egal. Dem Stromlieferanten ist dagegen gleichgültig ob wir eine Lampe oder einen Computer dort anschließen. Hauptsache die Bauform der Steckdose und die Parameter (220V, 50 Hz Wechselstrom) passen.
Es gibt also auch Software-Schnittstellen. Diese ermöglichen hier die Kommunikation zwischen den Schichten. Da jede Schicht die jeweils darunterliegende funktionierende Schicht benötigt, geben die Schichten Vollzugsmeldungen and die jeweils höhere Schicht. Prinzipiell erfolgt der Aufbau der Kommunikation von unten nach oben. Bei einem Modem kann man diesen Aufbau durch die unterschiedlichen Sounds sogar hören. Bei der Fehlersuche im Netzwerk ist die Kenntnis des Schichtenmodell Voraussetzung für die Eingrenzung des Fehlers. Wir werden die entsprechenden Befehle dazu kennenlernen.
Fangen wir in dem Modell von unten an.
Hier das praktischere Modell mit den entsprechenden Protokollen.
| Anwendungen |
www, ftp, rlogin, mail, nfs, telnet, nfs, dns, samba, ... |
| Transport |
TCP UDP |
| Netzwerk |
IP ARP RARP |
| Physikalisch |
loopback, Hardware (Koax, Glasfaser, ...), Ethernettyp, ... |
Wie man sehen kann, ist in der unteren Schicht das loopback angesiedelt. Ist dieses installiert, können die darüberliegenden Schichten ihre Arbeit aufnehmen, ohne das die Netzwerkhardware (Netzwerkkarte, Modem) installiert und konfiguriert wurde. So können wir schon alle Protokolle und Programme der oberen Schichten konfigurieren und anwenden lernen. Die Netzwerk-Hardware konfigurieren wir später zusätzlich zum loopback.
Fangen wir wieder unten an:
ifconfig dient zur Abfrage der Einstellungen und zur Konfiguration der Netzwerk-Interfaces. Jedes Netzwerk-Gerät kann mindestens ein Netzwerk-Interface beinhalten. Netzwerkkarten können z. B. auch mehrere Interface, sprich IP-Adressen (siehe unten), besitzen.
/# 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:32 errors:0 droped:0 overruns:0
TX packets:32 errors:0 droped:0 overruns:0
/#
Wenn wir diese Ausgabe sehen, ist das loopback-Device aktiv. Die weiteren Angaben schauen wir uns etwas später an. ifconfig (interface configuration) wird im Normalfall während des Systemstarts durch Startup-Skripts (muLinux: /etc/rc.4, SuSE:/etc/rc.conf) ausgeführt. Man kann dieses Kommando auch benutzen, um während des Betriebes Änderungen der Netzwerk-Konfiguration vorzunehmen. Wir fahren jetzt das Interface lo herunter (engl. down):
/# ifconfig lo down
ifconfig ohne Parameter zeigt uns was passiert ist:
/# ifconfig /#
Kein Device ist aktiv. Zum Aktivieren von lo geben wir folgenden Befehl ein:
/# ifconfig lo up
Der Test beweist es:
/# 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:0 errors:0 droped:0 overruns:0
TX packets:0 errors:0 droped:0 overruns:0
/#
Was bedeuten die angezeigten Informationen von ifconfig?
Wenn eine Netzwerkkarte konfiguriert wurde, wird zusätzlich in etwa folgendes angezeigt.
eth0 Link encap:Ethernet HWaddr 00:00:E8:C8:5B:3F
inet addr: 192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:859 errors:0 dropped:0 overruns:0 frame:0
TX packets:974 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:3 Base address:0x300
Es handelt sich hier um das eth0-Device. Unix-Leute fangen meist von 0 an zu zählen. Eine mögliche zweite Netzwerkkarte wäre dann eth1. Hier ist auch die Hardware-Adresse der Netzwerkkarte zu sehen: 00:00:E8:C8:5B:3F. Diese Zahlenkombination hat die Netzwerkkarte in meinem Rechner. Weiterhin sind die IP-Adresse dieses Interface zu sehen.
Diese Angaben sind sicherlich noch etwas unverständlich. Sie gehören zu dem IP-Protokoll in der nächsten Schicht und werden weiter unten erklärt.
Hinweis:
Bei älteren muLinux-Versionen ist das loopback-Device nicht standardmäßig aktiv.
Es muß mit setup -f net | Dummy network? y aktiviert werden.
Bei der Linux-Distribution SuSE erfolgt dies mit yast über Administration des Systems | Konfigurationsdatei bearbeiten | START_LOOPBACK = yes.
Zurück zu den dummen Computern. Diese haben nur die Ziffern Null und Eins. Diese zählen deshalb folgendermaßen:
0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000
Bei der letzten Stelle folgen die Ziffern Null und Eins abwechselnd. Bei der nächsten Stelle alle zwei Schritte, dann alle vier Schritte, ...
Leider spielt die 10, die unser normales Zahlensystem bestimmt, hier keine Rolle. Alles bezieht sich hier auf die 2, also die beiden Zustände "keine Spannung" und "Spannung". Diese kleinste Speicher-Einheit aus zwei Zuständen wird Bit genannt. Acht Bit sind übrigens ein Byte.
Dieses Prinzip ist so simpel, daß es sogar Computer verstehen. Nur für uns scheint es unpraktisch zu sein. Gott hätte uns lieber mit 2, 4, 8 oder 16 Fingern erschaffen sollen. Wir hätten dann dieses System besser durchschaut. Es bleibt die große philosophische Frage: Warum hat Gott die Computer-Technik nicht vorhersehen können? Oder ist diese Technik vielleicht gar nicht so wichtig? Wir haben aber Glück gehabt, da wir mit zwei Händen erschaffen wurden. Hätten wir drei Hände, würde unser Zahlensystem auf einer ungeraden Zahl basieren.
Wie kann man diese Zahlenkolonnen aus Nullen und Einsen in unser Zahlensystem umwandeln? Sehr einfach geht das mit einem wissenschaftlichen Taschenrechner. Diese gibt es bei den großen Linux-Distributionen als kcalc. Wir können die Umrechnung aber auch im Kopf machen.
Umrechnungsbeispiel:
1011001
1 * 20 = 1
0 * 21 = 0
0 * 22 = 0
1 * 23 = 8
1 * 24 = 16
0 * 25 = 0
1 * 26 = 64
-----------------
89
10101010101010101010101010101010
Deshalb unterteilt man dieses Monstrum in vier Teile. Die Trennung erfolgt mit Punkten.
10101010.10101010.10101010.10101010
Zur besseren Darstellung wird die IP-Adresse in der Form von vier Dezimalzahlen dargestellt.
10101010.10101010.10101010.10101010
170. 170. 170. 170
Mögliche Werte sind jeweils von 0 bis 255.
00000000.00000000.00000000.00000000
0. 0. 0. 0
11111111.11111111.11111111.11111111
255. 255. 255. 255
So lassen sich theoretisch über 8 Milliarden (233-1 = 8589934591) Rechner adressieren. Tatsächlich verhindert aber die Reservierung von Bereichen für Sonderzwecke sowie die Aufteilung in die wenig flexiblen Netzklassen die Nutzung vieler IP-Adressen.
Es müssen Rechner in logische Gruppen (Netzwerke) verwaltet werden können. Der erste Teil der IP-Adresse dient daher als Netz-Adresse. Der Rest dient als Host-Adresse. Ein Host (engl. für Hausherr, Gastgeber, Haupt-Computer) ist ein Rechner. Es gibt mehrere Klassen von Netzwerken.
0nnnnnnn.xxxxxxxx.xxxxxxxx.xxxxxxxx
So ergeben sich 127 mögliche Klasse-A-Netze:
00000000.xxxxxxxx.xxxxxxxx.xxxxxxxx
0
01111111.xxxxxxxx.xxxxxxxx.xxxxxxxx
127
0, 10 und 127 (loopback) entfallen aber für den Internetverkehr, so daß weltweit nur 125 Klasse-A-Netze verkoppelt werden können.
Jedes Netz kann bist zu 16777216 Hosts (Rechner) enthalten.
Diese Klasse dürfte für den Privatgebrauch nicht geeignet sein.
10nnnnnnn.nnnnnnnn.xxxxxxxx.xxxxxxxx
Es ergeben sich 16284 Netze mit jeweils 65.534 Hosts.
10000000.00000000.xxxxxxxx.xxxxxxxx
128 0
10111111.11111111.xxxxxxxx.xxxxxxxx
191 255
Auch das ist für den Privatgebrauch überdimensioniert.
110nnnnnn.nnnnnnnn.nnnnnnnn.xxxxxxxx
Es ergeben sich 2097152 Netze mit jeweils 254 Hosts.
11000000.00000000.00000000.xxxxxxxx
192 0 0
11011111.11111111.11111111.xxxxxxxx
223 255 255
Dieses Netz ist durchaus für den Privatgebrauch oder für eine kleine Firma geeignet.
1110mmmm.gggggggg.gggggggg.gggggggg
Es ergeben sich 268435456 Gruppen.
11100000.gggggggg.gggggggg.gggggggg
224
11101111.gggggggg.gggggggg.gggggggg
239
11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr
Es ergeben sich 268435456 Varianten.
11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr
240
11110rrr.rrrrrrrr.rrrrrrrr.rrrrrrrr
247
Ein Beispiel einer Netzwerkmaske:
11111111.11111111.11111111.00000000
255. 255. 255. 0
Überall wo eine Eins steht wird der Netzwerkteil der IP-Adresse maskiert. Wo Nullen sind, wird aus der IP-Adresse die Host-Adresse gefiltert.
nnnnnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
255. 255. 255. 0
Beispielsweise wird dann diese IP-Adresse wie folgt aufgeteilt.
192. 168. 1. 2
|_________________________||______|
Netz-Adresse Host-Adr.
192. 168. 1. 0
Diese Adresse kann keinem Rechner zugeordnet werden.
192. 168. 1. 255
Auch dieses Adresse steht für keinen Computer in diesem Netzwerk zur Verfügung.
Netzwerk: 192.168. 1. 0 Netmask: 255.255.255. 0 Broadcast: 192.168. 1.255 erster PC: 192.168. 1. 1 zweiter PC: 192.168. 1. 2 dritter PC: 192.168. 1. 3 ... letzter PC: 192.168. 1.254
Wer ein zweites Netzwerk aufbauen will, verwende als Netzwerk-Adresse 192.168. 2. 0. Natürlich müssen alle anderen Adressen auch eine 2 im dritten Oktett erhalten. Ausgenommen ist die Netzmaske. Diese ist auch hier 255.255.255. 0.
Über Router können dann die Netzwerke untereinander bzw. an das Internet verbunden werden. Die Router sind oft auch Linux-PCs. Sie steuern welche Pakete in das jeweils andere Netz dürfen.
/# 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:32 errors:0 droped:0 overruns:0
TX packets:32 errors:0 droped:0 overruns:0
/#
Das ich eines Rechner wird also mit 127.0.0.1 adressiert. An Hand der Netzmaske von 255.0.0.0 sehen wir, daß für jedes ich eines Rechner ein Klasse-A-Netz reserviert wurde. Dieser Adressbereich darf auch nur intern verwendet werden.
Dieser Befehl ist sehr wichtig bei der Erkennung und Beseitigung von Netzwerkfehlern. Dieser Befehl ist auch in dem DOS-Fenster unter Windows vorhanden. Viele Mausschieber kennen ihn nicht. Wenn das Netzwerk nicht funktioniert - dies kann bei Windows öfter auftreten - krauchen manche schon unter dem Tisch herum, um die Netzwerkkabel zu checken. Ein ping auf den anderen Rechner zeigt hier oft eine intakte Verbindung an. Also erspart man sich schon mal den Blick unter den Tisch. Der Fehler muß dann in den höheren Schichten liegen (ZugangsPaßwort, große Netzlast, ...).
Wie sieht ein ordentlicher ping aus? Als erstes pingen wir die IP-Adresse des loopback-Interfaces an.
/# ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.2 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.1 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.1 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=0.1 ms [Strg] [C] --- 127.0.0.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.129/0.173/0.289 ms /#
Abbrechen kann man den Befehl mit [Strg] [C]. Wie man sieht wurden Pakete empfangen. Alles ist in Ordnung. Einen anderen Rechner können wir ohne Netzwerkkarte oder Modem natürlich nicht anpingen.
Wir können aber einen Fehler simulieren, indem wir das entsprechende Interface deaktivieren. Wir wissen ja schon wie das geht.
/# ifconfig lo down /# ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1): 56 data bytes ping: sendto Network is unreachable ping: wrote 127.0.0.1 64 chars, ret=-1 ping: sendto Network is unreachable ping: wrote 127.0.0.1 64 chars, ret=-1 ping: sendto Network is unreachable ping: wrote 127.0.0.1 64 chars, ret=-1 ping: sendto Network is unreachable ping: wrote 127.0.0.1 64 chars, ret=-1 [Strg] [C] --- 127.0.0.1 ping statistik --- 4 packets transmitted, 0 packets recived, 100% packets loss /#
Das sieht traurig aus. Das Netzwerk ist unerreichbar (engl. unreachable) und von den gesendeten (engl. transmitted) Paketen wurden 0 empfangen (engl. received). Ein Verlust (engl. loss) von 100 %. Wir bringen das schon in Ordnung.
/# ifconfig lo up /# ping 127.0.0.1 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.2 ms ...
Das UDP stellt ein verbindungsloses Protokoll dar. Es stellt im Gegensatz zum TCP keine Sicherheitsmechanismen zur Verfügung. Der Verlust von Datenpaketen wird den Anwendungsprogrammen nicht mitgeteilt. Ein Erkennen und Beseitigen von solchen Fehlern wird der Intelligenz der Anwendungen überlassen. Aus diesem Grund arbeiten die meisten UDP-Anwendungen nur in kleineren Netzwerken, da bei solch komplexen Netzen wie dem Internet die Wahrscheinlichkeit eines Datenverlustes entschieden größer ist. UDP wird daher seltener als TCP angewendet.
Das Gegenstück zum UDP stellt das TCP dar. TCP stellt eine duplexfähige virtuelle Verbindung her. D.h., das daß TCP-Protokoll einen verbindungsorientierten Dienst zur Verfügung stellt. Am Beginn jeder TCP-Sitzung wird eine Verbindung zwischen den Rechnern aufgebaut. Während der TCP-Sitzung kommt eine Sicherungstechnik mit dem Namen: "positive acknowledgement with transmission" (positive Bestätigung mit Quittung) zum Einsatz. Damit ist es möglich den Verlust von Datenpaketen zu erkennen, und einen Neuversand zu veranlassen. Aus diesem Grund ist das TCP verbreiteter in seinem Einsatzbereich. Gleichzeitig wird durch den erhöhten Verwaltungsaufwand der Overhead jeder Datei entsprechend größer.
Die auf einen System verfügbaren Internet-Protokolle sind übrigens in der Datei /etc/protocols aufgelistet. Diese Datei gibt es auch unter Windows NT (c:\winnt4\system32\drivers\etc\protocol) Diese Datei bedarf normalerweise keiner Änderung.
Diese Unterscheidung schaffen UDP und TCP durch die Einführung der sogenannten Ports, (engl. für Hafen, Öffnung), die durch eine 16-Bit-Zahl verkörpert werden. Genau wie IP-Pakete vor dem eigentlichen Nutzdaten einen Kopf tragen, erhalten auch UDP- und TCP-Pakete einen solchen Vorspann. Die wichtigste Information darin: der Port bei den ein Paket beim Empfänger gehen soll, und der Port, von dem es stammt. Trifft ein UDP- oder TCP-Paket ein, kann die Netzwerksoftware an der Portnummer genau erkennen, zu welcher Anwendung es gehört, und die Daten dorthin weiterleiten.
Die Portnummern zwischen 0 und 1024 sind bekannten Diensten wie ftp oder www fest zugeordnet. Wenn man eine WWW-Adresse eingibt wie http://www.linux.org, weiß der der Browser dadurch bereits, daß er sich an den Port 80 des Rechners wenden muß. Mann kann aber auch http://www.linux.org:80 schreiben.
Hier einige Ports.
| Anwendungen |
ftp-Daten ftp telnet smtp dns www |
| Transport |
20 21 23 25 53 80
TCP
UDP
|
| Netzwerk |
|
| Physikalisch |
|
Die Datei /etc/services listet alle Netzwerkdienste mit deren Port-Nummern auf. Diese Datei gibt es auch unter Windows NT (c:\winnt4\system32\drivers\etc\services).
/# less /etc/services tcpmux 1/tcp # rfc-1078 echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location name 42/udp nameserver whois 43/tcp nicname # usually to sri-nic domain 53/tcp domain 53/udp mtp 57/tcp # deprecated bootps 67/udp # bootp server bootpc 68/udp # bootp client tftp 69/udp rje 77/tcp finger 79/tcp www 80/tcp http # WorldWideWeb HTTP www 80/udp # HyperText Transfer Protocol link 87/tcp ttylink supdup 95/tcp # BSD supdupd(8) hostnames 101/tcp hostname # usually to sri-nic iso-tsap 102/tcp x400 103/tcp # ISO Mail x400-snd 104/tcp csnet-ns 105/tcp pop-2 109/tcp # PostOffice V.2 pop-3 110/tcp # PostOffice V.3 sunrpc 111/tcp sunrpc 111/tcp portmapper # RPC 4.0 portmapper UDP sunrpc 111/udp sunrpc 111/udp portmapper # RPC 4.0 portmapper TCP auth 113/tcp authentication sftp 115/tcp uucp-path 117/tcp nntp 119/tcp usenet # Network News Transfer ntp 123/tcp # Network Time Protocol ntp 123/udp # Network Time Protocol netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm netbios-ssn 139/tcp nbssn NeWS 144/tcp news # Window System snmp 161/udp snmp-trap 162/udp exec 512/tcp # BSD rexecd(8) biff 512/udp comsat login 513/tcp # BSD rlogind(8) who 513/udp whod # BSD rwhod(8) shell 514/tcp cmd # BSD rshd(8) syslog 514/udp # BSD syslogd(8) printer 515/tcp spooler # BSD lpd(8) talk 517/udp # BSD talkd(8) ntalk 518/udp # SunOS talkd(8) efs 520/tcp # for LucasFilm route 520/udp router routed # 521/udp too timed 525/udp timeserver tempo 526/tcp newdate courier 530/tcp rpc # experimental conference 531/tcp chat netnews 532/tcp readnews netwall 533/udp # -for emergency broadcasts uucp 540/tcp uucpd # BSD uucpd(8) UUCP service new-rwho 550/udp new-who # experimental remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem rmonitor 560/udp rmonitord # experimental monitor 561/udp # experimental pcserver 600/tcp # ECD Integrated PC board srvr mount 635/udp # NFS Mount Service pcnfs 640/udp # PC-NFS DOS Authentication bwnfs 650/udp # BW-NFS DOS Authentication listen 1025/tcp listener RFS remote_file_sharing nterm 1026/tcp remote_login network_terminal ingreslock 1524/tcp tnet 1600/tcp # transputer net daemon nfs 2049/udp # NFS File Service irc 6667/tcp # Internet Relay Chat dos 7000/tcp msdos
Jedes Port öffnet den Rechner und macht ihn zugänglicher. Oft ist das erwünscht und notwendig. Ein Web-Server muß den Port 80 offen haben ansonsten kann keiner HTML-Dateien von ihm anfordern. Jedes offene Port ist aber auch ein potentielles Sicherheitsloch. Es sollten nur nur benötigte Dienste und deren Ports angeboten werden. Es sollten auch nur die entsprechenden Programme dafür installiert sein.
Hacker können aber auch Programme in das System einschleusen, die zusätzliche Ports öffnen. Ein Beispiel ist Subseven (http://subseven.slak.org). Diese Programm ermöglicht die volle Kontrolle über einen Windows9x-Rechner. Viel Spaß!
Viele Internet-Provider bietet als Service die Frontpage-Extensions an. Mit Hilfe des Programm Frontpage soll man dann angeblich sehr schnell Website erstellen können, die sich aber dafür sehr langsam laden lassen. Mit Hilfe der Frontpage-Extensions werden auf dem Webserver zusätzliche Ports geöffnet. Diese weisen erhebliche Sicherheitslücken auf. Mehr dazu unter dieser Adresse: http://www.insecure.org.
Hacker benutzen Port-Scanner, um offene Ports festzustellen. Wir können das auch.
/# nmap 127.0.01 Scanning ports (host 127.0.0.1) wait ... localhost [127.0.0.1] 113 (auth) open /#
Es ist nur das Port zur Autentifizierung offen. Das System scheint also nicht angreifbar zu sein. Das können wir ändern. Wir starten den Telnet-Server (Port: 23). Damit kann sich jeder in unseren Rechner einloggen. Das geht natürlich nur wenn wir eine richtige Netzwerkverbindung haben.
/# setup -f server Do you want to change server/daemons setup? (y/n): y Do you want to start XWindow server at any boot? (y/n): Enter Do you want start atd daemon running? (y/n): Enter Do you want start RING server running? (y/n): Enter Do you want start SERIAL server running? (y/n): Enter Do you want start DIALIN_SERVER running? (y/n): Enter Do you want start FAX_SERVER running? (y/n): Enter Do you want start TELNET_SERVER running? (y/n): y Do you want start INETD_SERVER running? (y/n): Enter Do you want start VCM_SERVER running? (y/n): Enter
Nun scannen wir die Ports noch einmal.
/# nmap 127.0.01 Scanning ports (host 127.0.0.1) wait ... localhost [127.0.0.1] 113 (auth) open localhost [127.0.0.1] 23 (telnet) open /#
Unser Rechner ist nun offen wie ein Scheunentor. Jeder könnte sich bei einer bestehenden Netz-Verbindung einloggen, Festplatten mounten oder formatieren ...
Da die Handhabung der IP-Adressen sehr umständlich ist, hat sich die Einführung eines zusätzlichen Adressverwaltungssystemes notwendig gemacht. Hierbei handelt es sich um das sogenannte Domain-Name-Konzept. Dabei werden den IP-Adressen Domain-Namen zugeordnet. Ein Name wie http://linux.org läßt sich doch weit einfacher merken als http://192.168.1.1, oder? Zur Verknüpfung zwischen IP-Adresse und Domain-Name werden Domain-Name-Server (DNS) eingesetzt. Die Herstellung dieser Verknüpfung erfolgt meist in mehreren Stufen. So wird die Adresse von XXX@AAA.BBB.de wie folgt ermittelt. Zuerst geht eine Anfrage an den ".de"-DNS. Dieser schickt eine Anfrage an den BBB-Server. Vom BBB-Server bekommt er dann im Normalfall die vollständige IP-Adresse übergeben.
/# less /etc/hosts
Wir sehen, daß sie die Nummer 127.0.0.1 unter anderem mit localhost auflöst. Damit können wir lokalen Rechner auch folgendermaßen anpingen:
/# ping localhost
Wenn wir ein Netzwerk einrichten, können wir jeder vergebener IP-Adresse hier mindestens einen Rechner-Namen zuordnen. Allerdings müssen wir dies auf jeden Rechner tun. Eine zentrale Verwaltung gibt es nur mit einem DNS-Server. Unter Windows gibt es übrigens auch hosts-Dateien.
Wir können unserem loopback-Interface auch noch einen anderen Namen geben.
/# vi /etc/hosts
Wir ergänzen die Zeile 127.0.0.1 localhost me
127.0.0.1 localhost me meinpc
Jetzt können wir auch meinpc anpingen.
/# ping meinpc
Na, das wa doch nicht sooo kompliziert. Oder?
![]() | |
|
Das Postfix-Buch. Sichere Mailserver mit Linux. (Gebundene Ausgabe)
von Peer Heinlein | |
| Siehe auch: | |
![]() | |
| Spam Assassin. Leitfaden zu Konfiguration, Integration und Einsatz (Open Source Library) von Alistair McDonald | |
| SpamAssassin. von Alan Schwartz | |
| POP3 und IMAP. Mailserver mit Courier und Cyrus von Peer Heinlein | |
| Postfix. Einrichtung, Betrieb und Wartung von Ralf Hildebrandt | |
