© www.sirius-net.de
 
 

Netzwerke,

Firewalls

und

Proxyserver

02/2000

R- Befehle (remote) *

a) rcp *

b) rlogin rlogin [-l username] host *

c) rsh *

Kofiguration der Rechte *

a) /etc/hosts.equiv *

b) die Datei .rhosts i *

Was bringen r- Befehle? *

periodische Zeitaufträge: *

cksum *

touch *

Verteilung von X- Server und X-Client übers Netz *

IP-Adressen, Netzklassen und Netzmasken *

Netz der Klasse A: *

Netz der Klasse B: *

Netz der Klasse C: *

Die Netzmaske ist bitorientiert *

besondere IP- Adressen: *

Netz 200.210.220.0.in 4 Teilnetze aufteilen: *

Konfiguration der interfaces und Konfiguration des Routings *

für das Netz 200.210.220.0 (200.210.220.64, 200.210.220.128,200.210.220.192) *

Rechner im CDI zu Fuß konfigurieren: *

Firewalls *

- Packetfilterung: *

- Masquerading: *

Konfiguration von Tcpd *

Format von Einträgen in /etc/hosts.allow und /etc/hosts.deny : *

inetd *

Backbone *

Masquerader: *

Ipchains *

a) alle eingehenden ICMP- Packete verwerfen (DENY) *

b) voherige Regel wieder löschen *

c) alle ausgehenden ICMP- Meldungen Typ "Port unreachable" verwerfen *

e) jeden Verbindungsaufbau vom lokalen Rechner verhindern (über tcp) *

g) alle auf Port 23 und 80 eingehenden Verbindungen zurückweisen *

Bootvorgang *

Einrichtung eines DHCP- Servers *

DHCP- Server *

Beispielkonfiguration eines DHCP- Servers *

Konfigurationsdatei (Konfigurationsdatei, die der dhcp beim Start einliest) *

ISDN- Karte konfigurieren *

1.) Hardware einrichten: *

2.) ISDN- login konfigurieren *

Masquerading einrichten *

Lösung: *

a) alle ausgehenden Vebindungen von lokalen Hosts akzeptieren: *

b) alle an die lokalen Clients geschickten Antworten akzeptieren: *

c) Anfragen aus dem externen Netz an den lokalen Webserver akzeptieren: *

d) Antworten des lokalen Webesevers: *

e) läßt ICMP explizit durch: *

f) Default- Politik: *

Port- Forwarding *

Hinweise zur Klausur: *
 
 
 

R- Befehle (remote)

- Zweck: - Ausführung von Befehlen auf einem entfernetn Rechner

(RSH: remote Shell)

- einloggen auf einem entferntem Rechner (rlogin)

- kopieren von Dateien zwischen verschiedenenen Rechnern (rcp),

ohne vorherige Authentifizierung / Passwortabfrage.

- damit ist dass absetzen von Kommandos, das einloggen u.s.w.auch

NICHT INTERAKTIV möglich !!

- Voraussetzungen

- auf den beteiligten Rechnern müssen GLEICHNAMIGE Useraccounts

existieren (d.h. Die Datei /etc/passwd auf den beteiligten Rechnern

mußZeilen mit jeweils den gleichen login. Namen enthalten)

- Die Rechte müssen entsprechend konfiguriert werden

2 Möglichkeiten:

- systemweite Rechtevergabe durch den Systemadminis-

trator in der Datei /etc/hosts.equiv

- eine User- spezifische Rechtevergabe

==> jeder Benutzer kann in einer .rhosts -Datei in seinem

HOME- Verzeichnis die Rechte von Usern anderer

Rechner festlegen, die auf seinen Account zuzugreifen

versuchen.

- Syntax der wichtigsten r- Befehle

a) rcp

rcp host1.cdi.u1:/etc/hosts /tmp

// kopiert die Datei /etc/hosts vom Rechner host.cdi.u1 ins Verzeichnis

// /tmp auf dem lokalen Rechner

rcp /etc/hosts host2.cdi.u1:/tmp

// kppiert die Datei /etc/hosts vom Lokalen Rechner ins Verzeichnis

// /tmp auf host2.cdi.u1

rpc host3.cdi.u1:/etc/hosts host4.cdi.u1:/tmp

// von host3 die /etc/hosts nach /tmp auf host4
 
 
 
 

b) rlogin rlogin [-l username] host

rlogin host5.cdi.u1

// unter dem Usernamen, unter dem auf dem lokalen Rechner eingelogt wurde

// wird ein login auf dem Zielrechner (host5.cdi.u1) durchgeführt.

//

// bei entsprechender Konfiguration der Rechte mupß KEIN Passwort

// angegeben werden.

rlogin -l hanna host6.cdi.u1

// auf host6.cdi.u1 erfolgt ein login auf dem Usernamen hanna.

//

// dies ist unter bestimmten Voraussetzungen selbst dann möglich, wenn

// auf der lokalen Maschine unter einem ganz anderem Namen eingelogt wurde
 
 

c) rsh

rsh host6.cdi.u1 cat /etc/passwd

// der inhalt von /etc/passwd wird auf dem LOKALEN rechner abgesetzt

// (dem Rechner, auf dem das Kommando abgesetzt wird)

rsh host7.cdi.u1 who > /tmp/users

// alle auf hos7.cdi.u1 angemeldeten User werden in die Datei /tmp/users

// auf dem lokalen Rechner geschrieben

rsh host8.cdi.u1 who ">" /tmp/users

// wie oben, aber Umlenkung in eine Datei auf dem entfernten Rechner

// (festgelegte Konvention)
 
 

Kofiguration der Rechte
 
 

a) /etc/hosts.equiv

ASCI- Datei, in der zeilenweise die Rechte konfiguriert werden

host10.cdi.u1

// alle User von host10.cdi.u1, die auf dem lokalen Rechner einen gleichnamigen

// Useraccount haben, können r- Befehle abseten, ohne sich durch ein

// Passwort autentifizieren zu müssen (Abb.:1)

host11.cdi.u1 peter

// Peter hat nun PASSWORTFREIEN Zugriff auf JEDEN Account (exclusive

// root) auf dem lokalen Rechner (Abb.:2)
 
 

b) die Datei .rhosts i

m home- Verzeichnis eines Users

Mit dieser Datei kann ein Popeluser festlegen, welche Rechte User anderer hosts

haben, wenn sie auf den eigenen Account auf dem lokalen Rechner zugreifen

.hosts in $HOME von User paula

host13.cdi.u1

Was bringen r- Befehle?

Ins Besondere, wenn man sich om Batch. Modus befindet, man braucht nicht selber an der Kiste zu hocken

Exkusrs

periodische Zeitaufträge:

Zweck: ein Kommando in periodischen Abständen ausführen

- Ein Dämon überprüft regelmäßig, ob Zeitaufträge zur Ausführung vorliegen

(bei Linux = cron)

- Die Berechtigung zum erteilen von Zeitaufträgen ist abhängig von den Dateien

/var/cron/allow /var/cron/deny

- für jeden Benutzer, der Zeitaufträge erteilt, wird unter seinem Loginnamen

eineDatei angelegt und im Verzeichnis /var/cron/tabs abgalagt

- Jede Zeile dieser Datei muß einen bestimmten Aufbau haben

(siehe Kopie 14.02.00, Tabelle B-2)

- Erteilung von zeitaufträgen erfolgt mit dem Kommando: crontab -e

...es wird ein Editor gestartet, in dem in der edtierten Datei Zeilen gemäß

dem besprochenen Format eingetragen werden.

(u.U. Die Datei /var/cron/allow löschen )
 
 

Bsp.: Jede Minute soll die Datei /tmp/users um eine Zeile ergänzt werden, die die Anzahl

aller aktuekk angemeldeten User anthält

Voraussetzungen: crontab -e

//vi wird gestartet

Eintrag:

* * * * * /usr/bin/who | wc -l >> /tmp/users

aufhören: Eintrag löschen
 

Hinweis: für eine Datei kann eine Prüfsumme gebildet werden mit dem

Kommando: cksum

cksum

Legt eine Prüfsumme für eine Datei an.

Syntax:

cksum [optionen]... [datei]...
 
 

touch

Ändert den Zeitstempel einer Datei auf die aktuelle Zeit. Wird kein Dateiname angegeben, so erzeugt touch

eine Datei mit dem angegebenen Namen.

Syntax:

touch dateiname

Aufgabe: jeden Werktag zwischen 8 und 17 Uhr soll stündlich überprüft werden,

ob sich der inhalt der Datei /tmp/boerse.org auf einem Rechner geändert hat.

Wenn das der Fall ist, soll die Datei auf den lokalen Rechner kopiert werden.

Falls sie sich geändert hat, soll sie auf den lokalen Rechner kopiert werden
 
 

Lösung: quelle.cdi.u1 ziel.cdi.u1

#kopiert /tmp/boerse.org

#von quelle.cdi.u1

Voraussetzung: - gleichnamige Useraccounts auf quelle... und ziel.cdi.u1

quelle.cdi.u1 muß Rechte zur ausführung von r. Befehlen

erteilen a) Eintrag in /etc/hosts.equiv: ziel.cdi.u1

b) .rhosts in $HOME des Users, der die

Datei kopiert (auf Quelle.cdi.u1) ziel.cdi.u1

Achtung!!! der angegebene Hostname muß auf eine IP- Adresse abgebildet werden können!!

ein shellscript schreiben: x-Recht nicht vergessen !

- in einer rsh die Prüfsumme der Datei /tmp/boerse.org ermitteln

(mittels cksum) und in einer Variablen ablegen

- Die Prüfsumme der Datei /tmp/boerse.org vom lokalen Rechner in einer

zweiten Variablen ablegen

- Variablen vergleichen: bei ungleichheit mittels rcp die Datei /tmp/boerse.org

neu übertragen
 
 

script:

CKNEU='rsh quelle.cdi.u1 cksum /tmp/boerse.org | cut `-d ` -f1'

CKALT='cksum/tmp/boerse.org `-d ` -f1'

if [ !$CKALT=$CKNEU ]

then

rcp quelle.cdi.u1:/tmp/boerse.org /tmp/boerse.org

echo "boerse kopiert: 'date'" | mail [user]

fi

Erteilung des Zeitauftrages:

- als Popeluser: crontab -e

0 8-17 * * 1-5 /scripte/perl/boerse.sh

Datei mit beliebigenm Inhalt /tmp/boerse.org anlegen

(tuch /tmp/boerse.org legt Datei an, wenn sie nicht existiert,

wenn doch, dann wird der Zeitstempel geändert)
 
 

Verteilung von X- Server und X-Client übers Netz

- X- Server und X- Client kommunizieren über ein netzwerkfähiges Protokoll namens X

miteinander

- X- Server ist dabei zuständig für die Ansteuerung der Grafikkarte und die Verarbeitung

von Maus- und Tastaturereignissen,

X- Client für die eigentliche Logik der Anwendung

- da X ein netzwerkfähiges Protokoll ist, ist es nicht erforderlich, daß X- Server und

X- Client auf demselben Rechner liegen.
 
 

- X ist ein plattformunabhängiges Protokoll, d.h. Jeder X- Client kann mit jedem

X- Server komunizieren. (so gibt es z.B. X- Server auch für WIN x.x (ca. 1000 DM))

- damit x- Client und X- Server übers Netz miteinander kommunizieren können, müssen

2 Voraussetzungen erfüllt sein:

- der Host, auf dem der X- Server läuft, muß ausdrücklich bestimmten Hosts die

Erlaubnis erteilen, das dort gestartete X- Clients sich mit dem lokalen X- Server

verbinden: xhost +h40.cdi.u1 // X- Clients von h40.cdi u1 dürfen den lokalen

// X- Server ansprechen

- der X- Client muß den Host spezifizieren, dessen X- Server er kontaktieren möchte zwei Möglichkeiten: - die Option -display

- die Umgebungsvariable DISPLAY

Bsp.: h50.cdi.u1 h51.cdi.u1

1. #xhost +h51.cdi.u1 protokol TCP/I P 2. $xterm -display h50.cdi.u1:0.0

3. xtermfenster geht auf
 
 

Übung: bringen sie folgendes Kommando zum laufen und klären sie alle rechtlichen

Voraussetzungen: rsh h70.cdi.u1 /usr/x11R6/bin/netscape -display H71.cdi.u10.0

IP-Adressen, Netzklassen und Netzmasken

Für routing im Internet ist ausschließlich der Netzanteil der IP-Adresse maßgebend und nicht derHost-Anteil. Ob ein Zielrechner direkt erreichbar ist, oder nur über ein Gateway, ergibt sich aus den netzanteilen von Quell- und Zielrechner.

Für den Netzanteil einer IP-Adresse ist zunächst die Netzklasse maßgebend. Die Netzklasse wiederum ist abhängig von dem höchstwertigen Bit im höchstwertigen Byte der IP-Adresse.

IP-Adressen werden in die Adreßklassen A bis E eingeteilt. Die Klassen A, B und C stehen für die normale Adressierung und für Host-zu-Host-Kommunikation zur Verfügung. Dabei gilt:
 
 

Netz der Klasse A:

Höchstwertiges Bit im ersten Byte: 0

Netzanteil der IP-Adresse: 1 Byte

Hostanteil der IP-Adresse: 3 Byte

Damit gibt es 2^7 Netze der Klasse A, also 128, mit jeweils 2^24 Hosts. Bei Netzen der Klasse A liegt das erste Byte der IP-Adresse im Bereich von 0 bis 127
 
 

Netz der Klasse B:

Die beiden höchstwertigen Bit im ersten Byte: 10

Netzanteil der IP-Adresse: 2 Byte

Host-Anteil der IP-Adresse: 2 Byte

Damit gibt es also 2^14 Netze der Klasse B, also 16.384, mit jeweils 2^16, also 65536 Hosts. Bei

Netzen der Klasse B liegt das erste Byte im Bereich von 128 bis 191.
 
 

Netz der Klasse C:

Die 3 höchstwertigen Bit im ersten Byte: 110

Netzanteil der IP-Adresse: 3 Byte

Hostanteil der IP-Adresse: 1 Byte

Damit gibt es 2^21 Netze der Klasse C, also 2.097.152, mit jeweils 2^8 Hosts, also 256. Bei Netzen der

Klasse C liegt das erste Byte der IP-Adresse im Bereich von 192 bis 223.

Sehr häufig ist es erforderlich, ein Netz einer gegebenen Klasse in weitere Teilnetze aufzuteilen, also dafür zu sorgen, daß der Netzanteil der IP-Adresse größer (und der Hostanteil der IP-Adresse entsprechend kleiner) wird, als es von der Netzklasse her der Fall wäre. Gründe für die Aufteilung eines Netzes in mehr Teilnetze, als es von der IP-Adreßklasse her eigentlich gegeben wäre.

Bandbreite (von 2^24 möglichen Hosts) --> nicht zu viele Stationen an ein und demselben

Übertragungsmedium.

Beschränkung der Anzahl Stationen pro Segment

Beschränkung der Länge eines Segments. (Auch für Verstärkung gibt es eine Obergrenze)

Ausfallsicherheit

Verwaltung, Organisation, Administration vereinfachen
 
 

Beispiel:

CDI hat Adreßklasse A, dieses Netz wird in viele weitere Teilnetze unterteilt.
 
 

10.180.213.56

10.180.130.131

(10) Netz der Klasse A

(10) Netz der Klasse A

--> 180.213.56 = Host

--> 180.131.130 = Host

Ein Netz einer gegebenen Klasse kann durch Setzen einer geeigneten Netzmaske (Subnet-Mask) in weitere Teilnetze aufgeteilt werden. Dabei gilt:

Die Netzmaske ist eine 4-Byte-Größe. Notierung wie bei IP-Adresse: Dezimalzahlen, getrennt durch Punkt.
 
 

Jedes in einer Netzmaske gesetzte Bit wird dem Netzanteil der Adresse zugeschlagen. Der Rest liefert den Hostanteil.
 
 

Die Netzmaske ist bitorientiert

Man erhält den Netzanteil einer IP-Adresse, indem man die Adresse mit der Netzmaske bitweise undiert

(UND-Verknüpfung).

Standard-Netzmasken

Klasse A: 255.0.0.0

Klasse B: 255.255.0.0

Klasse C: 255.255.255.0

Beispiele:

Ein Netz der Klasse A soll so in weitere Teilnetze unterteilt werden, daß die ersten 3 Byte den

Netzanteil ausmachen und nicht nur das erste Byte:

Subnet-Maske = 255.255.255.0

Ein Netz der Klasse C soll in 4 Teilnetze aufgeteilt werden

Subnet-Maske = 255.255.255.192

Host1 = 192.168.17.200 Netzmaske: 255.255.255.192

Host2 = 192.168.17.220 Netzmaske: 255.255.255.192

Host1 = 11000000.10101000.00010001.11000100 (Gelb=Netzanteil)

Host2 = 11000000.10101000.00010001.11011100 (Gelb=Netzanteil)

Übung:

Ein Netz der Klasse C soll in 4 Teilnetze aufgeteilt werden.

Netz: 200.210.220.0

Netzmaske: 255.255.255.192

1.Teilnetz 200.210.220.0 letztes Byte: 00000000

Broadcast-Adresse: 200.210.220.63 letztes Byte: 00111111

Gültige Host-Adressen: 200.210.220.1 bis 200.210.220.62

2.Teilnetz: 200.210.220.64 letztes Byte: 01000000

Broadcast-Adresse: 200.210.220.127 letzt. Byte: 01111111

Gültige Host-Adressen: 200.210.220.65 bis 200.210.220.126

3.Teilnetz: 200.210.220.128 letztes Byte: 10000000

Broadcast-Adresse: 200.210.220.191 letzt. Byte: 10111111

Gültige Host-Adressen: 200.210.220.129 bis 200.210.220.190

4.Teilnetz: 200.210.220.192 letztes Byte: 11000000

Broadcast-Adresse: 200.210.220.255 letzt. Byte: 11111111

Gültige Host-Adressen: 200.210.220.193 bis 200.210.220.254
 
 

besondere IP- Adressen:

Netzadresse: alle Bits im Hostanteil = 0

Broadcastadresse: alle Bits im hostanteil auf 1

127.0.0.0 pseudonetz, daß über den folgenden device erreichbar ist:

127.0.0.1 loopback-Adresse (localhost); device: lo

ping 192.168.17.255 C- Netz ping, das als Broadcast an alle Hosts im Netz 192.168.17

gerichtet ist

IP- Adresse und Netzmaske gegeben

gesucht: Netzanteil der IP- Adresse:

bitweises undieren von IP- Adresse und Netzmaske

Broadcastadresse:

bitweises Oderieren mit der invertierten Netzmaske

Bsp.: Netz: 200.210.220.64

Maske: 255.255.255.192

0.0.0.63

Broadcast: 200.210.220.127
 
 

Netz 200.210.220.0.in 4 Teilnetze aufteilen:

1. Teilnetz: Netz: 200.210.220.0

Broadcast: 200.210.220.63

Hostadrr.: ....1 - .....62
 
 

Konfiguration der interfaces und Konfiguration des Routings

für das Netz 200.210.220.0 (200.210.220.64, 200.210.220.128,200.210.220.192)

a) Hosts mit EINEM Ethernetinterface, die keine weiteren interfaces haben

(weder eine 2. Ethernet- Karte, noch eine ISDN- Karte, noch ein Modem)

Bsp.: Host 200.210.220.130 wird konfiguriert (Natz: 200.210.220.128)

ifconfig eth0 200.210.220.130 netmask 255.255.255.192

(bei SUSE: Datei: /sbin/init.d/network)

// bis jetzt sind nur Hosts im Teilnetz 200.210.220.128 erreichbar.

// ein ping 200.210.220.121 funktioniert

// ein ping 200.210.220.230 funktioniert nicht

// dem Kernel muß noch gesagt werden, welcher host im selben Teilnetz das

// Tor zum Rest der Welt ist.
 
 

route add default gw 200.210.220.129

default- route geht über das Gateway 200.210.220.129

b) Konfiguration eines Gateways am Beispiel von GW2

ifconfig eth0 200.210.220.2(3) netmask 255.255.255.192 (Teilnetz 0)

ifconfig eth1 200.210.220.129(65) netmask 255.255.255.192 (Teilnetz 01)
 
 
 
 

// was geht bis jetzt ??

- Rechner .130 ....... .190 erreichbar

- Rechner .1 ........ .62 erreichbar (Backbone)

// nicht erreichbar !!

- 200.210.220.64 und 200.210.220.192

- der Rest der Welt

// route für 200.210.220.64

route add -net 200.210.220.64 gw 200.210.220.3

// route für 200.210.220.192

route add -net 200.210.220.192 gw 200.210.220.1

// default- gateway(ISDN- Karte sei in 200.210.220.62)

route add default gw 200.210.220.62
 
 

Rechner im CDI zu Fuß konfigurieren:

a) Yast aufrufen und eth0 deaktivieren (Netzwerk- Grundkonfiguration)

b) Rechner neu Booten ( reboot oder shutdown -r now

c) ifconfig (return)

// es wird nur das LOOPBACK. Device mit der Adresse 127.0.0.1 angezeigt

d) Ethernetkarte konfigurieren

- Treiber laden: insmod /lib/modules/2.2.13/net/eepro100.0

modpro....... (hier werden evtl. Abhängigkeiten von anderen

Treibern geprüft und evtl diese nachgeladen)

- Testen: lsmod zeigt alle geledenen Module an

- Adresse und Netzmaske zuweisen: (interface konfigurieren)

ifconfig eth0 10.180.213.57 netmask 255.255.255.0

// ping 10.10.213.1 geht, aber ping 10.180.130.131 geht nicht

rout add default gw 10.180.213.1

eth0......eth3 // Ethernet- karten

ipp0.....ipp3 // ISDN- Karten

ppp0....ppp3 // Modem
 

Firewalls

Trennt ein zu Schützendes Netz von einem als unzuverlässig betrachteten Netz

Prinzip:

- Packetfilterung:

- IP- Adressen (oder Hostnamen, Domainnamen)

- Transportschicht/ICMP

- UDP

- TCP

- ICMP

- Ports (Dienste der Anwendungsschicht)

- Richtung des Verbindungsaufbaus, .......

- Masquerading:

Einfachster Fall:

- das zu schützende Netz, besteht nur aus einem einzigen host

- Masquerading entfällt

- Packetfilter soll/kann/muß eingesetzt werden

==> konfiguration von TCPD

--> /ettc/hosts.allow

--> /etc/hosts.deny

--> man TCPD

--> man 5 hosts_access
 
 

Konfiguration von Tcpd

Zugriffskontrolle:

- Zugriff wird erlaubt, wenn ein match in /etc/hosts.allow gefunden wird

- andernfalls wird- wenn ein match in /etc/hosts.deny gefunden wird- der Zugriff

verweigert

- andernfalls- wird kein match gefunden- wird der zugriff erlaubt
 
 

Format von Einträgen in /etc/hosts.allow und /etc/hosts.deny :

- demonlist : clientlist [: shellkommando]

- Feldtrennzeichen: space oder Kommas

- demonlist enthält die Namen von Dämonen gemäß letztem feld in /etc/inetd.conf

- pattern (Muster) .tue.nl (in client_list) // match, wenn FQDN mit .tue.nl endet

131.155. // match, für hosts im Netz 131.155.0.0

- wildcards ALL // alle Dämonen/ clients

Politik: alles ist erlaubt, es sei denn, es wird ausdrücklich verboten

Lösung: /etc/hosts.allow LEER /etc/hosts.deny ALLE VERBOTE

Politik: alles verboten, es sei denn es wird ausdrücklich erlaubt (üblich)

Lösung: /etc/hosts.deny ALL : ALL /etc/hosts.allow alles, was erlaubt wird

Praktikum:

- Erlauben Sie Zwei hosts im Netz 10.180.213.0 ALLES auf ihrem host

/etc/hosts.allow ALL : 10.180.213.xx,10.180.213.xy

- Erlauben sie einem host im Netz 10.180.213.0 TELNET- Sitzungen zu

starten und sonst NICHTS

/etc/hosts.allow in.telnetd : 10.180.213.xx

- Alle anderen hosts dürfen NICHTS

/etc/hosts.deny ALL : ALL

- Mit welchen Rechten wird ein übr TCPD gestartetes Script ausgeführt ?

(siehe manpage zu hosts_options, section 5)

in.ftpd : ALL : /usr/bin/id >> /tmp/tcpdid

==> /var/log/messages TCPD hat gemeckert

==> man 5 hosts_options

==> ALSO RICHTIG: in.ftpd : ALL : spawn (/usr/bin/id >> /tmp/tcpdid)

Was passiert, wenn TCPD eine Verbindung zurückweist ?

Fehlersuche:

Sie wollen TCPD- konfiguration testen und setzen folgendes komando ab:
 
 

ftp 10.180.213.60

a) no rout to host wahrscheinlich: IP- Adresse oder Netzmaske an

eth0 ist falsch auf dem lokal. Rechner

b) timeout Zielrechner falsch konfiguriert

c) auf dem Zielrechner läuft kein inetd (connection refused)

d) auf Zielrechner läuft inetd, aber ftp ist auskommentiert in /etc/inetd.conf
 
 

e) Formatfehler in /etc/hosts.allow oder /etc/hosts.deny auf Zielrechner:

==> /var/log/messages

f) ftp hennes.cdi.u1 Fehler bei Namensauflösung:

- der eingetragene NS läuft nicht

- falscher NS in /etc/resolv.conf eingetragen

- /etc/hosts liefert keine Info

Datei: /etc/inetd.conf inetd

/etc/hosts.allow tcpd

/etc/hosts.deny tcpd

Wichtiger Satz

inetd

startet, sofern in /etc/inetd.conf entsprechend konfiguriert, bei Anfragen auf

bestimmten Ports, den tcp- wrapper TCPD, der seinerseits die Dateien

/etc/hosts.allow und /etc/hosts.deny einliest und auswertet und, bei gegebenen Rechten,

als Dämon den, in /etc/inetd.conf im letzten Feld als Dämon angegebenen Dienst

startet

Schema: Popeluser: ftp 10.180.213.57

Was passiert ?:
 
 

Backbone

- ist ein Netz, in dem Hosts hängen, die durch ein weiteres Interface mit einem anderen Netz

verbunden sind.
 
 

Seite 12, Abb.:2.2

- Alle Hosts im Teilnetz 192.168.0.0/24 haben private IP- Adressen, also IP- Adressen, die im Internet NICHT geroutet erden

==> dises Hosts sind vom Internet aus über ihre IP- Adresse NICHT erreichbar

--> Verbindungen zu Hosts im Internet sind nur möglich, wenn Proxyserver

eingesetzt werden, oder IP- Masquerading zum Einsatz kommt

==> relativ guter Schutz der host in 192.168.0, weil diese von außen überhaupt nicht

sichtbar sind (Bsp.: Lohn, Gehalt, Warenwirtschaft,....)

Rechner: Port: Rechner: Port:

192.168.0.17 1030 192.168.0.18 1030

ftp- Server:

130.140.150.160

Ziel: 130.140.150.160:21 Ziel: 130.140.150.160:21

Quelle:192.168.0.17:1030 Quelle:192.168.0.17:1030
 

Masquerader:

- erzeugt aus Quellport und Quelladresse (der Hosts im Privaten Netz)dynamisch eine eigene

Portnummer, und merkt sich die zugehörige ursprüngliche Quellport und Quelladresse

- Quelladresse im IP- Header des Datagramms, daß er über eth1 ins Internet schickt,

wird durch die eigene IP- Adresse (im Bsp.: 192.141.17.132) ersetzt.

- Quellport des privaten Rechners wird durch die dynamisch erzeugte Portnummer ersetzt.

- In den Datagrammen, die als Antwort eintreffen, wird auf der Basis des Zielports im

IP- Header und der Internen Tabelle wieder die ursprüngliche private IP- Adresse als

Zieladresse eingetragen,

- als Zielport im TCP oder UDP Header wird wieder die

ursprüngliche Quellportnummer eingetragen und

- das Datagramm wird über eth0 ins private Netz geschickt.
 
 

Ipchains

- setzen, ändern, löschen von Packetfilterregeln:

-A output ans Ende der chain Output eine neue Regel anhängen

- s $IP-INET 1024: alle Packete mit der Quelladr. $IP_INET(IP- Adresse von ippp0)

und einem Quellport von >=1024

- -dport 80 Zielport 80

-p tcp Protokoll tcp

-i $DEV_INET Netzinterface auf der Internetseite (hier ISDN-karte ippp0)

-j ACCEPT akzeptiert

in einem Satz:

Die chain output wird um eine Regel am Ende ergänzt (-A), die besagt, daß alle Datgramme mit der Quelladresse $IP_INET (die echte, i.d.r. Dynamisch zugewiesene IP- Adresse) und einem Quellport >= 1024, die an beliebige Hosts mit dem Zielport 80 mit dem Transportprotokoll Tcp geschickt werden, akzeptiert werden, wenn sie vom Interface $DEV_INET ( ippp0 ) kommen.

-A input akzeptiere alle Packete aus dem lokalen Netz mit einem Quelport -s $LNET 1024: >1024, die an das lokale interface des Proxys (eth0, 192.168.0.1)

-d $IP_LNET 8080 und dem Port 8080 mit dem Protokoll tcp gerichtet sind; füge die

-p tcp ans Ende der bestehenden Regelliste an

-i $DEV_LNET

-j ACCEPT
 

Praktikum:

Regeln aufstellen und testen

a) alle eingehenden ICMP- Packete verwerfen (DENY)

ipchains -A input -p icmp -j DENY ok
 
 

b) voherige Regel wieder löschen

ipchains -D input -p icmp -j DENY ok
 
 

c) alle ausgehenden ICMP- Meldungen Typ "Port unreachable" verwerfen

(test: UDPSEND.PL an Einen Rechner ein Packet senden)

ipchains -A output -p ICMP --sport port-unreachable -j DENY ok

d) voherige Regel wieder löschen

ipchains -D output -p ICMP --sport port-unreachable -j DENY ok
 
 

e) jeden Verbindungsaufbau vom lokalen Rechner verhindern (über tcp)

eingehende Verbindugen werden nachwievor angenommen

ipchains -A output -p tcp -y -j DENY ok

f) voherige Regel wieder löschen

ipchains -D output -p tcp -y -j DENY ok
 
 

g) alle auf Port 23 und 80 eingehenden Verbindungen zurückweisen

ipchains -a input -j REJECT
 
 

wenn m nain UNIX eine Option mit mehr als einem Zeichen eingeben will, dann --

Bsp.: ls -lisa == Optionen l, i, s, a

xx --lisa == Option "lisa"

Übungen 18.2.00

9.) a) pscan 10.180.213.60 1234 udp

#!/usr/bin/perl

use IO::Socket;

$socket = new IO::Socket::INET(

Peer Addr => $ARGV[0];

Peer Port => $ARGV[1];

Proto => $ARGV[3]);

if (!$Socket)

die "nix los an Port $ARGV[1]\n";

print $socket "blabla";

close ($socket);

- bei udp wird socket ohne Fehler erzeugt auch wenn Zierechner an diesem

Portnicht lauscht

b) pscan 10.180.213.60 1234 tcp

- socket krepiert, wenn an Port 1234 nix los ist

14.)

ipchains -A input --sport 80 -d 192.150.160.170 1024: !-y -i ippp0 -p tcp -j ACCEPT
 
 

Bootvorgang

- gesteuert durch Scripts, die in diversen Runleveln gestartet werden

- diese Scripts liegen in den Verzeichnissen rc0.d, rc1.d, rc2.d, rc3.d in /sbin/init.d

- jedes dieser Scripts beginnt mit entweder

Snn - Startskript beim Eintreten in das Runlevel

Knn - Stoppscrpt beim Verlassen des Runlevels

- bei diesen Scripts handelt es sich jeweils um die selbe Datei, nämlich um einen

symbolischen Link auf ein Script in /sbin/init.d

- ob ein Script als Start- oder Stopscript fungiert, hängt davon ab, ob es als Start-

Stopscript aufgerufen wird.

- jedes der Scripts liest am Anfang die zentrale Konfigurationsdatei /etc/rc.config ein

und macht sein weiteres Verhalten von Variablen in dieser Datei abhängig.
 
 

Aufgabe:

- /etc/rc.config um eine Variable ergänzen, nämlich die Variable ICMPDENY

- ist diese Variable auf YES gesetzt, dann soll automatisch beim Eintritt in runlevel 2

JEDER ausgehende ICMP- Verkehr an eth0 verworfen werden

/sbin/init.d

noicmp // shellscript (liest /etc/rc.config ein- wegen ICMPDENY)

/sbin/init.d/rc2.d

S99noicmp

K01noicmp

Script- noicmp: meine Lösumg

#!/usr/bin/sh

. /etc/rc.config //. damit die Änderungen wirksam werden

if test $ICMPDENY = "yes"

then

if test $1= "start"

then

/sbin/ipchains -A output -p icmp -j DENY;

fi

if test $1= "stop"

then

/sbin/ipchains -D output -p icmp -j DENY;

fi

fi
 
 

Gemeinsame Lösung:

a) // script- noicmp im Verzeichnis /sbin/init.d

#!/bin/sh

. /etc/rc.config // ". " damit kein Kindprozess gestartet wird, d.h. Nur so sind

// alle Variablen wirksam

if [ $ICMPDENY = "yes" ]

then

case "$1" in

start)

echo -e "starting noicmp"

/sbin/ipchains -A output -p icmp -j DENY;;

case "$1" in

stop)

echo -e "stopping noicmp"

/sbin/ipchains -D output -p icmp -j DENY;;

esac

fi

b) x- Recht für noicmp chmod a+x /bin/init.d/noicmp

c) symbolische Links ln -s /sbin/init.d/noicmp /sbin/init.d/rc2.d/S99noicmp

ln -s /sbin/init.d/noicmp /sbin/init.d/rc2.d/K01noicmp

d) Variable setzen vi /etc/rc.config ICMPDENY= "yes" //speichern

e) testen init 1/2; /sbin/init.d/noicmp start/stop ipchains -L
 

nfs
(Packet nfsserver (aus Serie n) installieren)

- nfs network file system

- Import oder Export von Dateisystemen / Verzeichnissen übers Netz

- Erforderliche Dämonen

- portmap

- rpc.mountd

- rpc.nfsd

- Einhängen deines Dateisystems über nfs:

mount -t nfs h1.cdi.u1:/cdrom /mnt

// hängt das Verzeichis cdrom von h1.cdi.u1 im Verzeichnis /mnt des lokalen

// Rechners ein.

Freigebe von Verzeichnissen zum mounten:

- Datei: /etc/exports

Aufbau: Verzeichnis [host1(optionen1) host2(Optionen2) ....] [ ] = optional

==> bei leerer Hostliste darf die ganze Welt mounten

- wichtige Optionen:

rw read and write

ro read only

no_root_sqash - per Voreinstellung arbeitet root auf einem mittels nfs

gemountetem Dateisystem nur stark eingeschränkte

Rechte, (nouser und nogroup)

- sollen die root- Rechte erhalten bleiben, so muß als

mount- Option no_root_squash angegeben werden.

Aufgabe: 2 Packete installieren (über nfs): (bei yast: Installationsquelle nfs), Serie n

- dhcpserver

- dhc- client

Installaton übers Netz:

- Konfiguration des Rechners der als nfs- Server für die Installation dient.

- Dämonen, die laufen müssen:

portmap (START_PORTMAP in /etc/rc.config)

rpc.mountd

rpc.nfsd (NFS_SERVER in /etc/rc.config)

- Installations- CD muß gemountet sein:

mount -t iso9660 /dev/cdrom /mnt

- Freigabe in /etc/exports (weltweit)

/mnt

- an die Dämonen rpc.nfsd rpc.mountd das Signal HUP schicken (sofern die Frei-

gabe in /etc/exports NACH dem Start dieser Dämonen erfolgte).
 

- Einrichtung des clients:

- YAST

- Installationsquelle festlegen

- Installation über nfs

- IP- Adresse und Verzeichnis angeben

IP- Adressen 10.180.213.55

Verzeichnis /mnt/suse (hä??)
 
 

Einrichtung eines DHCP- Servers

- DHCP- Server unter Linux

- konf- Datei: /etc/dhcp.conf

- Testen des Servers: mit Win 95 clients

(TCP/IP konfiguration IP- Adresse dynamisch beziehen)

( testen der Clients auf der Kommandozeile mit winipconfig)
 
 

DHCP- Server

- statische IP- Adressvergabe: jeder Host bekommt vom DHCP- Server statisch

auf Basis seiner MAC- Adresse die IP- Adresse

zugewiesen. (immer die gleiche)

- die folgenden weiteren Konfigurationsinformationen werden ebenfalls geliefert

Ip- Adresse des Name-Servers

Ip- Adresse des Gateways

Netzmaske
 
 

Beispielkonfiguration eines DHCP- Servers

192.168.17.0/24 192.168.18.0/24
 
 
 
 

Konfigurationsdatei (Konfigurationsdatei, die der dhcp beim Start einliest)

#/etc/dcpd.conf

#für alle Netze gemeinsame Werte:

server-identifier gzagp.gz.de;

option domainname "gz.de";

option domain-name-servers gzagp.gz.de;

default-lease-time 600;

max-lease-time 7200;

subnet 192.168.17.0 netmask 255.255.255.0 {

option routers gzagp1.gz.de;

}

subnet 192.168.18.0 netmask 255.255.255.0 {

option routers gzagp2.gz.de;

}

host gzscsi.gz.de {

hardware ethernet nn.nn.nn.nn.nn.nn;

fixed-address 192.168.17.42;

}

host gzatapi.gz.de {

hardware ethernet nn.nn.nn.nn.nn.nn;

fixed-address 192.168.17.41;

}

.........................

Abb.: 22.02..1

.........................

==> Statusmeldungen, etc. stehen in /var/log/messages

==> jede Zuweisung einer Konfiguration wird protokolliert

==> beteiligten Protokolle: siehe /etc/services (herausfinden mit tcpdum)

--> bootpc 68/udp (client)

--> bootps 67/udp (server)

==> geprüft wird unter WIN95
 

ISDN- Karte konfigurieren

- Karte: Fritz- Card Classic

IRQ 5

IO- Port 300

- Privider: T- online

- eigene Rufnummer: 282676

- PPP- login: 00014878/12030711282676#0001

- Passwort: XXXX XXXX
 
 

1.) Hardware einrichten:

I4L starten [x] // wenn X, dann wird die ISDN- karte beim Wechsel in runlevel 2

automatisch aktiviert.

Skript: /sbin/init.d/i4l

ISDN- Protokoll: Euro- ISDN

Typ der Karte: Teledat 150

Kennung der Karte: HiSax

IRQ 5

IO- Port 300

==> Testen (==> /var/log/messages)
 
 

2.) ISDN- login konfigurieren

- Netzwerkhrundkonfiguration

ISDN SyncPPP ippp0 192.168.0.99 192.168.00.1

// Pseudo- IP- Adressen (beliebig)

// werden beim login durch echte IP- Adressen

ersetzt (im rahmen des Protokolls, daß beim

einloggen abgearbeitet wird.

==> F8 = ISDN

neues Fenster

Typ des Netzwerkes ippp0

Nummer (eigene) 282676

anzurufende Nummer 0191011

Nummern, die anrufen dürfen --

........

Wählmodus: auto

idle- time 60 // nach 60 sek. Abwahl, falls kein Daten-

// transfer mehr stattfindet

max. Wählversuche 5

Name des PPP- login 000148781203/0711282676#0001 Passwort: xxxxxxxx /etc/ppp/pup-secrets

Soweit erforderlich, noch festlegen, daß die Default- Route über IPPP0 geht:

==> route add default ippp0

==> ACHTUNG!!!

wird der Rechner so konfiguriert, daß die Default- Route über das ISDN- Device geht,

führt JEDER Aufbau zu einem NICHT- LOKALEN Rechner zu einem automatischen Verbindungsaufbau über die ISDN- Karte.

Bsp.: route

Quintessenz: Wenn bein Wählvorgang AUTO eingestellt wurde und wenn die Default-Route

über ippp0 geht, sieht es aus der Sicht des Anwenders fast so aus, als ob er

permanent mit dem internet verbunden wäre.

Bsp.: ping www.heise.de // in /etc/resolv.conf steht die IP- Adresse des Nameservers

// der Providers

Buchtipp:

Linux- Wegweiser für Onliner O`Reilly Michael Renner

Aufgaben:

1.) lokales Netz mit privaten IP- Adressen soll über einen host mit eingebeuter ISDN-

Karte ans Internet angebunden werden;

die Anbindug soll durch maskieren der privaten Adressan erfolgen

Wie ist das Masquerading einzurichten ?

2.) Wie sind die Router einzurichten, die die 4 Teilnetze (hier im Klassenraum) über ein

Backbone miteinander verbunden werden.

Abb.: 22.02..2
 
 

Masquerading einrichten

a) eine neue, benutzerdefinierte chain erstellen

/sbin/ipchains -N user_msq

b) /sbin/ipchains -A user_msq -s 0/0 -d 0/0 -j MASQ

c) /sbin/ipchains -A forward -s 192.168.17.0/24 -d 0/0 -i ippp0 -j user_msq
 
 

Einrichtung der Router

- Treiber für die 3com- Karte laden: yast- Administration- Hardware integrieren- Netzkarte

oder: insmod /lib/modules/(kernelrelease)/net/3c....0

- IP- Adresse und Netzmaske zuweisen

- routing für die Teilnetze am Beispiel von 10.180.213.50

route add -net 10.180.101.0 netmask 255.255.255.0 gw 10.180.213.56

route add -net 10.180.102.0 netmask 255.255.255.0 gw 10.180.213.61

route add -net 10.180.103.0 netmask 255.255.255.0 gw 10.180.213.70

- echo 1 > /proc/sys/net/ipv4/ip_forward (ipforwarding aktivieren)

Wiederholung

Natzwerkkarte zum laufen bringen

ip- Vorwarding einrichten:

echo 1 > /proc/sys/net/ipv4/ip_forward (ipforwarding aktivieren)

Routing einrichten

siehe oben (3 Routen)

1 Aufgabe: statisches Routing komplettieren

2. Maskierung der Packete in den Netzen 10.180.100-103.0 im jeweiligen Router

- testen

- traceroute--- auf eienen Host im Internet von einem Host in einem inneren Netz.

/sbin/ipchains -N user_msq

/sbin/ipchains -A user_msq -s 0/0 -d 0/0 -j MASQ

/sbin/ipchains -A forward -s 10.180.100.0/24 -d 0/0 -i eth0 -j usr_msq

3. Masquerating wieder ausschalten (ipchains -F)

4. Router wie folgt konfigurieren:

- alle ausgehenden Vebindungen von lokalen Hosts und die eingehenden Antworten

akzeptieren (jede darf Telnet, ftp, ...mit jedem)

- Eingehende Verbindungen nur für EINEN Host , der als Webserver fungiert,

akzeptieren (und dessen Antwortpackete)

- Alle anderen eingehenden Verbindungen zurückweisen

Lösung:
 
 

a) alle ausgehenden Vebindungen von lokalen Hosts akzeptieren:

ipchains -A input -i eth1 -s 10.180.100.0/24 1024: -d 0/0 1:1023 -p tcp -j ACCEPT
 
 

b) alle an die lokalen Clients geschickten Antworten akzeptieren:

ipchains -A input -i eth0 -s 0/0 1:1023 -d 10.180.100.0/24 1024: -p tcp -j ACCEPT
 
 

c) Anfragen aus dem externen Netz an den lokalen Webserver akzeptieren:

ipchains -A input -i eth0 -d 10.180.100.xx 80 -s 0/0 1024: -p tcp -j ACCEPT
 
 

d) Antworten des lokalen Webesevers:

ipchains -A input -i eth1 -s 10.180.100.xx 80 -d 0/0 1024: -p tcp -J ACCEPT
 
 

e) läßt ICMP explizit durch:

ipchains -A input -p icmp -j ACCEPT
 
 

f) Default- Politik:

ipchains -P input DENY

Port- Forwarding

Prinzip: Packete, die an einen bestimmten Host geschickt werden, werden, ohne daß der Absender es merkt, automatisch an einem anderen Port eines anderen Hosts weitergeleitet. (von außen nicht sichtbar)

Voraussetzung: Packet ipmasqadm serie n

Beschreibung: "Netzwerk in Ketten" ( ct 17/99); Seite 199

Aufgabe: - Auf einem lokalen Host läuft ein WWW- Server

- der Außenwelt wird als Adresse des www- Servers jedoch die Adresse

bekanntgegeben, mit der der Router im Außennetz hängt

- Alle an Port 80 des Routers gerichteten Packete werden in den internen www- Server weitergeleitet und umgeleitet

Lösung: - client 10.180.100.2

- der client macht folgendes: Netscape: http://10.180.213.61

- Router R3 reicht die http- Anfrage an einen host im lokalen Netz weiter: 10.180.102.62

- www- Server 10.180.102.62 bearbeitet die Anfrage

- Die Antwort wird über 10.180.213.61 an 10.180.213.50 geschickt und von dort an 10.180.100.2 durchgereicht

ipmaskadm portfw -a P tcp -l0.180.213.61 80 -R 10.180.102.62 80

ipchains -A forward -s 10.180.102.62 80 -t tcp -i etho -j MASQ ! -y

Auf den Routern folgendes machen:

- das Portforwarding wieder deaktivieren

ipmasqadm portfw -d.............................

- die forwardingregel wieder löschen

ipchains -F forward

- IP- forwarding deaktivieren:

==> echo0 > /proz/sys/net/iiiipv4/ip_forward

( in Datei ip_forward eine 0 schreiben)

- den Proxyserver squid installieren: (serie n)

- init 1

- in /etc/rc.config: START_SQUID="yes"

- init 2

- echo0 > /proz/sys/net/iiiipv4/ip_forward (zur Sicherheit nochmal)
 
 
 
 

- auf allen Popelhosts Netscape wie folgt konfigurieren:

- edit

- preferences

- proxy

- manual proxy- konfiguration

als proxy für http, ftp

- Adresse: IP- Adresse von eth1 des routers

- Port: 3128 ( http und ftp )
 
 

Hinweise zur Klausur:

Netzklassen, -Masken, Subnettierung; netz-hostanteil, Broadcastadresse

ifconfig

manuelle konfiguration von routing route

zu einem Netz über ein Gateway

defaultroute über ein gateway

defaulroute über eigenes interface

Einträge in /etc/route.conf interpretieren

Anzeige des route- kommandos interpretieren

netstat -ta (tcp)

netstat -ua (udp)

tcpd /etc/hosts.allow und deny (inetd)

r Befehle - rcp rsh rlogin

/etc/hosts.equiv, .rhosts

x- client und x- server verteilen (-display; xhost)

herausfinden, über welchen port die beiden kommunizieren?

dhcp- server /etc/dhcpd.conf

ipchains einfache Regeln aufstellen

portforwarding

allg. Verständnissfragen