PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DEBUG/BETA Wie richte ich einen ISDN Router/Gatewayunter SUSE 7.0 ein? [txt]



403
03.12.01, 17:46
Dies ist ein unvollaendeter Text, der vielleicht auch etwas über
den Titel hinausgeht.


Es existieren einige Zitate, deren Herkunft natürlich noch erwähnt wird.


Mails zu Ausdrucksvorschlägen, Bugs, Tips, und Kritik bitte an spam@








Wie richte ich einen ISDN Router/Gateway ein? [Ascii txt]



[ Im Posting nur Teil1

Korrekturen/Änderungen

2.10.2001 RFC Anhang, Quellen ausgelagert nach anhang.txt
1.10.2001 Kerneloptionen ausgelagert nach kernel.txt

todo:
Schrift > Bedeutung (Konsole, Datei, )
DNS als Slave (named.conf)





1.EINLEITUNG

1.1 Gründe
1.2 Abgrenzung
1.3 Strategien


2.STRATEGIEN

2.1 Baumdiagramm
2.2 mögliche Strategien
2.3 unsere Strategie
2.3.1 Hardware
2.3.2 Software


3.INSTALLATION

3.1 Yast1
3.2 Grundsystem
3.2.1 Partitionierung physikalisch
3.2.2 Partitionierung logisch
3.2.3 Packete sinnvoll aussuchen und einspielen
3.2.4 Standard-Kernel installieren (yast1)
3.2.5 Neuen Isdn Kernel kompilieren
3.2.6 Neuen Isdn Kernel installieren
3.2.7 Lilo anpassen
3.2.8 Start/Stop Skripte
3.2.x ISDNkarte konfigurieren Yast
3.2.x ISDNkarte konfigurieren Konsole
3.3 Inetd /Xinetd
3.4 DNS
3.4.1 Das Hosts.txt Problem
3.4.2 Hosts einstellen
3.4.3 DNS Einrichten
3.4.4 DNS Konfigurieren
-------------
Ende Teil1

3.5 Welche Dienste aktivieren



4.KONFIGURATION

4.1 Grundsystem
4.2 INETD
4.3 zusätzliche Dienste
4.4 Security
4.4.1 Sicherheitslücken aufspüren
4.4.1.1 Suid-root Problematik
4.4.1.2 Nmap - ein Portscanner
4.4.2 Prävention mit Intrusion Detection Sytemen
4.4.2.1 LIDS
4.4.2.2 Snort - IDS System
4.4.3 Integrität von Dateien
4.4.3.1 Tripwire -Arbeiten mit Checksummen
4.4.4 ipchains -Firewall
4.4.4.x ipchains Einleitung
4.4.4.x ipchains Kerneloptionen
4.4.4.x ipchains Konfiguration mit Ipmasquerading
4.4.5 Network Adress Translation - NAT
4.4.5.1 NAT - Einführung
4.4.5.2 NAT mit Firewall
4.4.5.3 Masqerading als Spezialfall von NAT
4.4.5.4 Masquerading ohne Firewall
4.5 Hardensuse von Marc


5.TEST, FINETUNING, LOG-AUSWERTUNG

5.1 netstat -i,-M, -s , -a -l -r
5.2 nmap Tests
5.3 Finger


6.FEHLER

6.1 Typische Fehlermeldungen + Problembehebung
6.1.1 typische Fehler bei ssh
6.1.2 typische Fehler bei proftpd
6.2 /sbin/init.d/named: -: command not found
6.3 ISDN Einwahlproblem
6.4 Untypische Fehler
6.4.1 BOGUS
6.4.2 I have no name@domain / You_dont_exist- go away!
6.4.3 Lids und (e2fsck)

7.0 Erkärung der Begriffe

8.ANHANG

8.1 Kontakt (Mail,
8.2 Links
8.3.1 referenzierende Links
8.3.2 nicht-referenzierende Links
8.4 Artikel
8.5 Bücher
8.6 RFC Verweise

9 Materialsammlung
9.1 Verweisdateien aus /etc
9.2 Skripte
9.3 Kerneloptionen [kernel.txt]










1.EINLEITUNG
------------



1.1 Gründe


Warum sollte man einen Router/Gateway aufbauen?


Sie haben ihr Netzwerk,ein paar Server und Clients
die ans Internet angeschlossen werden sollen.
Pro Rechner ein Anschluss.
Wenn n PC ans Internet angeschlossen
werden sollen, bündelt man diese über den Router/Gateway
[->Anhang 1] und nutzt EINEN Anschluß
statt n.

Der Aufwand (Kosten für einen Internetzugang)
wird erheblich gesenkt, und nebenbei hat der
Administrator noch eine bessere Kontrolle
über eingehende und ausgehende Verbindungen, bzw.
es ist weniger quantitiver! Administrationsaufwand
erforderlich um das Netzwerk zu sichern.
Es wird das Geld für einen Hardware Router gespart.
(Das geht u. Umständen in die 1000 DM und wer sagt
daß man nur EINEN Router an EINEM Standort aufbaut.)
Man setzt Linux dort ein, wo es seine Stärken
hat.




1.2 Abgrenzung



Was hier nicht erklärt wird.
Es geht nicht um Windows, Samba etc.
Es geht nicht um Hardware Router.
Dies ist keine Anleitung wie man ein Netzwerk,
insbesondere ein heterogenes Netzwerk aufbaut.
Es wird ein existentes Netzwerk vorausgesetzt.
Befehle wie

find / -name *ipchains\* -print oder
ifconfig eth0 192.168.80.1 broadcast 192.168.80.255
netmask 255.255.255.0 up

sollte man verstehen. Grundkenntnisse
der Bash, Lilo, TCP/IP sind von Vorteil.
Es wird empfohlen ManPages und Howtos zu den einzelnen
Programmen selbständig zu lesen, bzw. bereit zu halten.



1.3 Strategien


Bevor irgendetwas gekauft, konfiguriert wird,
machen Sie sich einen Ablaufplan der ihren
Strategien gerecht wird. (Ziel,Kosten,Aufwand
Nutzen,Hardware, Software Packete)





2. STRATEGIEN



Grafik ist hier enthalten
http://members.tripod.de/NetbeisserUnited/4-12-2001.txt
<pre>
Desktop
Server
___ Home__|
|
Einsatzgebiet==|
|
|___ Buisness
|__x_ Desktop
|__ Server
| |_x_ Fileserver
|__ Router __Ls1 NAT
| __Ls2 NAT > nur Masq
| __Ls3 Firewall
| __Ls4 Proxy
|
|_x______________VPN-Gateway

</pre>
2.2 mögliche Strategien


Aus dem vereinfachten Diagram ersichtlich:
Es gibt Lösungen für Zu Hause (Desktop, Server)
und für die Firma.(Desktop, Server)
VPN und Firewall sollten nie auf EINEN Rechner.




2.3 unsere Strategie


Man setzt Linux dort ein, wo es seine Stärken
hat:

* Netzwerk
* Server
* Routing

Im folgenden geht es nur um Konfigurationen eines
ISDN Routers unter SuSE Linux für kleinere Firmen
im Serverbereich.





2.3.1 Hardware


Nach Strategie-Ls 1,2,3,4 suchen Sie ihre heraus.
(Firewall, Masquerading, Routing allein)
Es lassen sich selbstverständlich auch
Möglichkeiten kombinieren, wenn Sie z.B. Masquerading
ohne Firewall möchten.
Seien Sie nicht zu geizig, fragen Sie: "Was soll errreicht werden?"
Wählen Sie die Hardware so, daß sie den gegebenen
Ansprüchen gerecht wird, ggf. ist ein Blick in eine, z.B.
die SuSESupport-Hardwaredatenbank nötig.(http://cdb.suse.de)




Die technischen Daten für unser Beispiel lauten



Mainboard:
CPU : Intel Pentium 75Mhz
hdd : IBM DPEA -3208 PN-84G8998 1080MB
RAM : 64mb 87536SMT
Eth0 : 3com etherlink||| 1995 (3c509/3c579)
Cdrom :
Gehause : Yakumo mini AT
Isdn Card: AVM Fritz PCI (passiv)
Snd Card: Ess Audio Drive
Gfx Card: 1995 Circus Logic CL-GD5434-QC-F51236-615JE9534T (TAIWAN-D)
3,5 : Teac s/n C526847






2.3.2 Software



Nach Strategie-Ls 1,2,3,4 suchen Sie ihre heraus.
Wählen Sie die Software so, daß sie den gegebenen
Ansprüchen gerecht wird. Hier ist bei der Packetauswahl[->Anhang 2],
bereits auf den Sicherheitsaspekt [-> 4.3] vorzugreifen.
Die Auswahl der Packete sollte auf mögl. Schwachstellen
in der Software hin untersucht werden, je weniger
anfällig die Software desto besser.
Lesen sie viel im Netz über neue Exploits. Nutzen Sie Mailinglisten.
Ziel ist, das Gesamtrisiko zu minimieren. Dienste die laufen
müssen werden durch Patches auf den aktuellen Stand gehalten.

Sollte der Router in Unternehmenskritischen Gebiet eingesetzt
werden, nehmen sie als Filesystem unbedingt ReiserFS, das
ist schneller und sicherer im Notfall. [->Anhang 3]
In einer Testumgebung nehmen Sie xFS.[->Anhang 4]



Die Daten für unser Betriebsystem im Beispiel lauten


SuSE Linux 7.0 Professional

Kernel 2.2.16






3.INSTALLATION


3.1 Yast1




Yast1 steht für "Yet another Setup Tool" und wurde von SuSE entwickelt.
Es ist ein nützliches Konfigurationstool das Red Hats
"linuxconf" gleicht, und folgende Dateien "bearbeitet":


rc.config[->Anhang 5]

Oft findet sich in bearbeiteten Dateien ein Hinweis derart:
"Yast generated entry - Do not edit!"
In vielen Fällen lässt Yast1 SuSEconfig laufen, bei Problemen hilft
ein Blick in die SuSEconfig Skripte, sowie "man Yast" und
"man SuSEconfig".[->Manpages 13]





3.2 Grundsystem


3.2.1 Partitionierung physikalisch


Booten eines Festplattenpartionierungsprogramm z.B. Partition Magic
oder FIPS von A:\\ und "reinigen" der Platte pysikalisch,
es wird nicht nur die Partitonstabelle umgeschrieben.
[->Was sind Partitionen? 6]



3.2.2 Partitionierung logisch


Starten von Yast1 und Einrichten der gewünschten Partitionen
ext2 für die Bootpartition, Reiserfs [22] für Daten.
Anschließend legen wir die SuSE Bootdiskette ein, booten und legen die
Dateisysteme fest, boot=ext2fs andere Partitionen=Reiserfs.

im Bsp:

/dev/hda1 /boot ext2
/dev/hda2 swap
/dev/hda3 / reiserfs


Neuerdings unterstützt auch Reiserfs das Booten [->Anhang 3]
Da die /boot Partition allerdings sehr klein ist (so 8-20 mb), und das
Journaling -in diesem Fall-eher groß (ab 30mb) legt man /boot
Partitionen als ext2 an. Es ist auch anzumerken dass Reiserfs mit
Dateien unter 10 Kilobyte Probleme hat. Laut Moshe Bar, dem
Autor eines interssanten Reiserfs-Artikels in www.linuxmag.com
beträgt die durchschnittliche Dateigröße auf Unix Servern 91 Kilobyte.





3.2.3 Packete sinnvoll aussuchen und einspielen

Jetzt SuSE CD 1 booten und Yast1 starten.
Unter dem Menüpunkt "Konfiguration laden" minimal selektieren.
Außerdem kopieren wir die SuSE-Kernelquellen und +i4l + i4l hardware
[->Anhang 7] aus der Serie n auf die Festplatte.
Die Kernelquellen werden NICHT gelöscht, da sie später für
Patches gebraucht werden.


Nun werden manuell Packete nachinstalliert bzw. deinstalliert und die
Konfiguration gespeichert! Hier ist unsere Routerkonfiguration: sel [->Anhang 8]
Diese Konfiguration kann dann bei jedem weiteren Router eingespielt und ange-
passt werden, sodass einem die Packetauswahlknochenarbeit erspart bleibt.



3.2.4 Standart-Kernel installieren (Yast1)

Der SuSE Standardkernel wird installiert.

Yast1 möchte das wir den lilo (linuxloader) anpassen:

Möglicheit 1) auf Diskette
Möglicheit 2) in die BootPartition
Möglicheit 3) in die RootPartition
Möglickeit 4) Installation in den MBR->[14])


Wir nehmen 4)
Yast1 fragt noch nach der Zeitzone usw.




3.2.5 Neuen Isdn Kernel kompilieren



Nachdem noch "einige Skripte laufen", das sind automatisierte,
Anpassungskripte die man alt+f9 beobachten kann,
öffnen wir eine Konsole, gehen nach /usr/src/linux
um dort einen passenden ISDN-Router Kernel mit ausschließlicher
Unterstüzung für synchrones PPP zu kompilieren. [->ISDN-FORMATE 15]


im Bsp:


cd /usr/src/linux

1 make mrproper (entfernt alles, auch .config Dateien)
2 make menuconfig (benötigte Optionen ankreuzen ISDN-Support)


im Bsp: link kernel.txt Konfiguration auf Diskette sichern!
Die Befehle werden einzeln ausgeführt, damit eine bessere
Fehlerkontrolle möglich ist. An Linux lernt man wie PRODUKTIV
Fehlermeldungen seien können.
Am besten die ganze "Kompilierung" VORHER mit dem Befehl
"script -a /dein/log/verzeichnis/kernelkomp.log" protokollieren.
Oder einfach " | tee /dein/log/verzeichnis/kernelkomp.log" anhängen.



3 make dep
4 make clean
5 make bzImage

4 make modules (module werden generiert)
5 make modules_install
6 mit "exit" script -a Befehl beenden


Mit make dep (vgl. 1) werden die Abhängigkeiten gesetzt.
make clean löscht Dateien einer früheren Kompilierung.
Mit make bzImage wird alles übersetzt und gelinkt.
Die durch die Konfiguration,also im Makefile festgelegten
C-Quelldateien werden in ein Binary auch "Kernel" genannt
übersetzt. Ein Blick ins Makefile empfiehlt sich, um ggf.
den gcc (2.95.2) anzupassen.

Version = 2
Patchlevel = 2
Sublevel = 16
Extraversion = -9

Die letzte Zeile wird besonders bei mehreren Kerneln wichtig.



[->Anhang http://42.fht-esslingen.de/~adrian/kernel.pdf 9]


3.2.6 Neuen Isdn Kernel installieren


Den fertig complilierten Kernel
aus /usr/src/linux/arch/i386/boot/compressed bzImage nach /boot
kopieren und umbennen, hier = vmlinuz.t5 // + auf Diskette
Ggf.noch andere Kernel, z.B. backup von diskette einspielen!



3.2.7 Lilo anpassen

Bei mehreren Kerneln ist die Differenz in den System.maps zu
beachten. Unter www.dhaller.de/linux/multikernel findet sich eine
ausführliche Anleitung mehrere Kernel mit mehren System.maps und
modules.conf zu betreiben. Anschließend wieder lilo anpassen,und
/etc/lilo.conf MANUELL editieren.

im Bsp:

append="mem=64M"
vga = normal
boot=/dev/hda
read-only
prompt
timeout=50
#linear # Erzeugt anstelle von 3-D-Adressen (Sektor, Kopf, Zylinder) lineare Sektoradressen,
# die nicht von der Plattengeometrie abhängig sind.
#ignore table ### ignoriert kaputte Partitionstabelle
password="Passwortz" ### man beachte daß am Lilo Eingabe Prompt Passworty eingegeben werden muss


#
image = /boot/vmlinuz
root = /dev/hda3
label = linux

#
image = /boot/vmlinuz.t5
root = /dev/hda3
label = t5

#
image = /root/vmlinuz.t5
root = /dev/hda3
label = backup

Anschließend an der Konsole lilo eingeben:

izr:/boot # lilo
Added linux *
Added t5
Added backup




Wobei * den Standard-Kernel makiert.


Es gibt globale Optionen und für jedes Image spezifisch.
So ist es etwa möglich read-only in die globalen Optionen
am Anfang der Datei zu setze, oder eben nur für das betreffende
Image. prompt gibt an dass lilo stehen bleiben soll und zwar
nach dem timeout 50 Sekunden?. Mit append lassen sich Parameter
an den Kernel übergeben, hier "mem=64M". boot gibt die Festplatte an
von der gestartet werden soll. /dev/hda Also die erste Festplatte.

(Ausführliches Lilo.log link)









3.2.8 Start/Stop Skripte

Eine feine Sache ist es Dienste zu automatisieren.
Beim Booten werden die in /etc/rc.config eingetragenen,
auf "yes" gesetzen Dienste automatisch gestartet.
Von "Hand" gibt man "/sbin/init.d/Dienst start
oder/stop/oder/restart" ein.

im Bsp:


izr:/#/sbin/init.d/named start
Starting name server. done



(ab SuSE 7.2 liegen die Dienste in /etc/init.d/* wie es bei
Red Hat und anderen schon vorher üblich war)
Der Quellcode eines solchen Skripts, dass einen Dienst aufruft
sei hier am Beispiel "Snort" gezeigt.





#! /bin/sh
# Copyright (c) 1995-2000 SuSE, Germany.
#
# Author: Matthias Eckermann, SuSE Linux Solutions AG
#
# /etc/rc.d/snort
#
# snort This shell script takes care of starting and stopping
# snort packet-sniffer/logger.
#

. /etc/rc.config

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

# Force execution if not called by a runlevel directory.
test $link = $base && START_SNORT=yes
test "$START_SNORT" = yes || exit 0

# The echo return value for success (defined in /etc/rc.config).
return=$rc_done
case "$1" in
start)
echo -n "Starting snort: "
startproc /usr/local/src/snort/snort $SNORT_OPTS || return=$rc_failed
echo -e "$return"
;;
stop)
echo -n "Shutting down snort"
killproc -TERM /usr/local/src/snort/snort || return=$rc_failed
echo -e "$return"
;;
restart)
$0 stop && $0 start || return=$rc_failed
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac

# Inform the caller not only verbosely and set an exit status.
test "$return" = "$rc_done" || exit 1
exit 0



case unterscheidet die Fälle start) stop) restart) und *).
Mit "startproc/pfadname/program" startet das entsprechende
Program. Dieses Konzept ist hilfreich, will man
später selbstcompilierte Programme per /sbin/init/* (automatisch) starten.

echo gibt aus ob das Programm erfolgreich (0) oder
nicht-erfolgreich (1) gestartet werden konnte. (Auf die Konsole)
Das "äußert sich in einem "done" oder "failed".

$SNORT_OPTS startet Snort mit den in rc.config unter $SNORT_OPTS definierten Optionen
"-i eth0 -D -v -u snort -g snort -c /etc/snort.conf -l /var/log/snort"

*) "sagt" weder start) noch stop) noch restart) bekamen den Wert wahr, die EINGABE war
falsch, d.h. das "Script" referiert auf sich selbst und gibt seinen
eigenen Gebrauch aus, also Usage: $0 {start|stop|status|restart}.

Um einen Dienst erfolgreich zu starten
muss 1. der Fall wahr sein, daß der Dienst in rc.config auf yes gesetzt ist,
Ferner muss die Datei existieren, und der User /sbin/init.d/Dienst start eingeben,
wobei sich bei denen über startproc aufgerufenen Diensten um Daemons handelt,
die in den Hintergrund geschickt werden. Ein Skript
lässt sich mit startproc nicht aufrufen. Zitat aus der Man Page von startproc:


"... Note that startproc is designed to start
a deamon but not a kernel thread or a programm which enables a kernel thread..."


startproc sagt: arbeite (im Hintergrund)
exec sagt: arbeitet ab und fertig.


sodaß also ein Skript, welches
kernelbasierte Einstellungen "macht" wie die Firewall Regeln setzen, nicht
über startproc ausgeführt werden kann.








Netzwerkkarte konfigurieren

An der Konsole: /sbin/init.d/network stop
Jetzt stellen wir die Netzwerkkarte ein.
Yast1 aufrufen
>Hardware in System integrieren
>Netzwerkkarte konfigurieren.

im Bsp:


Typ des Netzwerks: eth0
Art der Netzwerk-Karte 3com 3c509/3c579




3.2.x ISDNkarte konfigurieren Yast


Jetzt stellen wir die ISDNkkarte ein. (Yast1>hardware in system
integrieren>ISDN konfigurieren.

im Bsp:


i4l Starten [x]

ISDN-protokoll [Euro-ISDN (EDSS1) ]

Typ der Karte [AVM Fritz!PCI ]



Netzwerk einrichten (Teil1 Grundkonfiguration)




Wir richten das Netzwerk ein.
(Yast1>Netzwerk Grundkonfiguration)

Nummer Aktiv Netzwerktyp Device-Name IP-Adresse PCMCIA PtP-Adresse

[0] [x]Ethernet eth0 192.168.80.1
[1] [x]ISDN SnycPP ippp0 192.168.80.1 192.168.1.1

Während SuSEconfig noch irgendwo läuft suchen wir
/etc/isdn auf und tragen die Telefonnummer ein.



In /etc/ppp/options.ippp0 sollte /dev/ippp0 stehen.





<optional/>
Nur Profis schalten SuSEConfig ab.
Sie gehen nach /etc/rc.config und setzen den Eintrag
Enable SuSEConfig=yes auf No!
Zusätzlich setzen Sie die permissions=set auf permissions=warn
</optional>
Anschließend das Netzwerk wieder starten mit

/sbin/init.d/network start





3.x.x ISDN [ Erläuterungen in 15 und 15B]


und testen ISDN


im Bsp:

Testen ob i4l läuft:

/sbin/init.d/i4l start

Verbose-level set to 3.
Starting isdn4linux on device ippp0
ippp0 added
EAZ/MSN for ippp0 is 32606008
Layer-2-Protocol for ippp0 is hdlc
Layer-3-Protocol for ippp0 is trans
Encapsulation for ippp0 is syncppp
Security for ippp0 is on
Hangup-Timeout for ippp0 is 60 sec.
Charge-Hangup for ippp0 is off
Incoming-Hangup for ippp0 is off
Dialmax for ippp0 is 5 times.
Callback for ippp0 is off
Callback delay for ippp0 is 2 sec.
Reject before Callback for ippp0 is on
Setting up network device ippp0
Starting ippp-daemon for ISDN device ippp0 with /etc/ppp/otions.ippp0
ippp0 bound to 0




"Layer-2-Protocol is hdlc"


hdlc steht für High-Level Data-Link Control (HDLC) Protokolls
hdlc gehört zu den umfassenden Data-Link-Layer-Protokollen.



____________________________________ _ _____________________
| Flag | A | C | FCS | Flag |
| 01111110 |8 bit|8 bit| | 16 bit |01111110|
|____________|_____|_____|__________ ..___________|________|

Block- Adress- Steuer- Datenfeld Block- Block-
begrenzung Feld Feld prüfungsfeld begrenzung


Frame-Format der HDLC-Prozedur (Datenstruktur der zweiten Schicht
von packetvermittelnden Datennetzen) FCS Fehlercontrolle durch
Prüfsummenbildung (Frame Checking Sequence) (tbi S. 186)




Data-Link-Layer-Protokolle enthalten auch Anteile des MAC-Sublayer
wie z.B. Fehlerkontrolle. Fast alle umfassenden
Data-Link-Layer-Protokolle stammen von IBMs SDLC
(Synchronous Data Link Control) ab. (www.payer.de)




"Layer-3-Protocol is trans"


[noch zu bearbeiten]


"Encapsulation for ippp0 is syncppp"

Der Unterschied zwischen synchronem und asynchronem PPP ist das
Framing, also das Einpacken der Rohdaten für die jeweilige
Verbindungsart. SyncPPP packt in HDLC ein. (Linux User FAQ)


Hilfe zu ISDN findest Du unter http://www.isdn4linux.de und
www.vauban.de/info.


3.2.x.x ISDNkarte konfigurieren Konsole
(Quelle http://rcswww.urz.tu-dresden.de/~grossm/modem/max/linux-isdn.html)


izr:/#isdnctrl addif ippp0
ippp0 added

izr:/#isdnctrl addphone ippp0 Telefonnr des Routers

izr:/#isdnctrl eaz ippp0 eigene Nummer
EAZ/MSN for ippp0 is eigene Nummer

izr:/#isdnctrl 12_prot ippp0 hdlc
Layer-2-Protokoll for ippp0 is hdlc

izr:/#isdnctrl 13_prot ippp0 trans
Layer-3-Protokoll for ippp0 is trans

izr:/#isdnctrl encap ippp0 syncppp
Encapsulation for ippp0 is syncppp

izr:/#isdnctrl huptimeout ippp0 120
Hangup-Timeout for ippp0 is 120 sec.

man isdnctrl gibt mehr Details.



3.3 Inetd


Dienste, auch Services, denen in /etc/services die meisten [21] Ports nach
RFC 814 (NAME, ADDRESSES, PORTS, AND ROUTES by David D. Clark 1982)
zugeordnet sind werden über den Inetd beim Booten aktiviert und
lauschen dann auf Ports, was man über den Befehl lsof [>23] mit dem Schalter -i deutlich
nachvollziehen kann.




izr:/# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
named 251 root 4u IPv4 182 UDP *:1024
named 251 root 20u IPv4 178 UDP localhost:domain
named 251 root 21u IPv4 179 TCP localhost:domain (LISTEN)
named 251 root 22u IPv4 180 UDP izr.domain.local:domain
named 251 root 23u IPv4 181 TCP izr.domain.local:domain (LISTEN)
sshd 325 root 3u IPv4 241 TCP *:ssh (LISTEN)

Besser ist übrigens lsof -i -P. Man sieht die Ports. Du sagst jetzt ich weiß
das ssh Port 22 hat, aber was wenn in der Liste oben "unknown" steht.

izr:/# lsof -i -P
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
named 251 root 4u IPv4 182 UDP *:1024
named 251 root 20u IPv4 178 UDP localhost:53
named 251 root 21u IPv4 179 TCP localhost:53 (LISTEN)
named 251 root 22u IPv4 180 UDP izr.domain.local:53
named 251 root 23u IPv4 181 TCP izr.domain.local:53 (LISTEN)
sshd 325 root 3u IPv4 241 TCP *:22 (LISTEN)


Aus der "Man 8 inetd" ManPage

inetd sollte beim Booten über /etc/rc gestartet werden. Er wartet auf
Verbindungen bestimmter Internet Sockets [10]. Wenn eine Verbindung
gefunden wird auf einem der Sockets, entscheidet Inetd welchem Dienst
dieser Socket korrespondiert und startet dasjenige Programm was die
Aufgabe des Requests erfüllt.
Nach Beendigung des Programms wird weiter "gelauscht"...



Bevor in unserem Beispiel proftp starten kann, muss es in /etc/inetd.conf
aktiviert und der Inetd selbst mit /sbin/init.d/inetd start per Hand oder
bereits beim Booten gestartet worden sein, was sich in /etc/rc.config
eintragen lässt, indem man den Wert Start_Inetd="no" auf "yes" setzt.
Außerdem muss in /etc/proftpd.conf Servertype=inetd eingetragen werden.
Prominente Beispiele wie den Apache Webserver auf Port 80, Ftp auf Port 21
kann man so einstellen dass sie lauschen.
Aber jedes "horchende" Programm stellt auch ein Sicherheitsrisiko dar.
->siehe 3.5 welche Dienste aktivieren]
Nmap ist ein Netzwerkscanner, der "horchenden" Ports gnadenlos
aufspürt. Mehr zu Nmap später.[->4 security]







(Netzwerkkonfiguration Teil2)



3.4 DNS
3.4.1 Das Hosts.txt Problem (Oreilly DNS)



Als das Internet noch ARPAnet hieß enthielt eine kleine
Datei (HOSTS.TXT) alle Informationen die man über diese
Hosts kennen musste: eine Namen-auf-Adressen-Abbildung
aller im ARPAnet eingebundenen Hosts. Die bekannte Unix/Linux
Host-Tabelle /etc/hosts wurde aus HOSTS.TXT erzeugt
(meist durch Entfernung von Feldern die Unix nicht verwendete)

Nachdem mit Yast1 oben bereits eth0 eingerichtet ist
überprüfen wir ob in /etc/hosts alles korrekt eingetragen ist.


im Bsp vor der Hosts Einstellung:


izr:~ # cat /etc/hosts
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#

127.0.0.1 localhost

# special IPv6 addresses
::1 localhost ipv6-localhost ipv6-loopback

fe00::0 ipv6-localnet

ff00::0 ipv6-mcastprefix
ff02::1 ipv6-allnodes
ff02::2 ipv6-allrouters





3.4.2 Hosts einstellen


Öffnen der Datei /etc/hosts.
Dabei wird jeder IP ein Rechner/Domain (Full Qualified Hostname)
sowie eine Kurzbeschreibung (Short-Hostname) zugeordnet.



im Bsp nach der Hosts Einstellung


izr:~ # cat /etc/hosts
127.0.0.1 localhost
#::1 localhost ipv6-localhost ipv6-loopback
#fe00::0 ipv6-localnet
#ff00::0 ipv6-mcastprefix
#ff02::1 ipv6-allnodes
#ff02::2 ipv6-allrouters
#ff02::3 ipv6-allhosts

192.168.80.1 izr.domain.local izr
192.168.80.2 enterprise enterprise
212.70.40.13 backup backup



192.168.80.1 ist unserer Router. 192.168.80.2 ist
der andere Rechner im Netz.
(vergleiche auch den host-Befehl!)

----------------------------------------

Hosts, Netzmasken und Broadcast Adressen können temporär
auf der Konsole definiert werden. Das geht mit ifconfig.
(Später in rc.config eigetragene Ips etc. sind resident)
ifconfig (InterFaces-Konfiguration)
konfiguriert versch. Netzwerkschnittstellen.
(lo, eth0, eth1 ethn.. ippp0)



Syntax

ifconfig Interface (zB. eth0) IP broadcast Adresse Netzmaske


Zitat aus der Manpage:



Ifconfig is used to configure the kernel-resident network
interfaces. It is used at boot time to set up interfaces
as necessary. After that, it is usually only needed when
debugging or when system tuning is needed.

If no arguments are given, ifconfig displays the status of
the currently active interfaces. If a single interface
argument is given, it displays the status of the given
interface only; if a single -a argument is given, it dis*
plays the status of all interfaces, even those that are
down. Otherwise, it configures an interface.


Auf der Konsole geht das Einrichten von 192.168.80.1 mit ifconfig so:


izr:~ # ifconfig eth0 down /* Herunterfahren des Netzwerkes */
izr:~ # ifconfig eth0 192.168.80.1 broadcast 192.168.80.255 netmask 255.255.255.0 up /* neue Definition */

Für die Interne Schnittstelle eth0 benutzen wir IPs aus dem Adressraum 192.168.*.*
Dieser wurde nach RFC 1918 für private Zwecke reserviert. Siehe Einführung zu NAT [>4.4.5]

Wir definieren ein 80er Netz, <unsicher> d.h. daß uns 254 Adressen zur Verfügung stehen.
also 80.1 80,2 80.24 80.253</unsicher>



---------------------

Routing einrichten und prüfen
-------------------------

izr:~ # route add default gw 192.168.1.1
izr:~ # route add -net 192.168.80.0 netmask 255.255.255.0 eth0

Kontrolle

izr:~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 ippp0
192.168.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ippp0



izr:~ # cat /etc/route.conf
#
#
#


192.168.1.1 0.0.0.0 255.255.255.255 ippp0
default 192.168.1.1

192.168.80.0 0.0.0.0 255.255.255.0 eth0


[->7,8,9]






3.4.3 DNS einrichten




Yast1 >installation ändern/erstellen
bind 8 aus der serie n hinzufügen (oder direkt bind9 vom ftp der
fu-berlin herunterladen/ oder CVS)

In /var/log/messages muss

izr named[607]: starting. named 8.2.3-T5B Sat Jul 29 13:24:30 GMT 2000 und

izr named[2495]: Ready to answer queries.

stehen, dann ist der Dämon korrekt eingerichtet, aber nicht konfiguriert.
Außerdem sollte der named nicht als Root lauft, sondern als eigener User z.B. named.

izr named[2495]: group = named
izr named[2495]: user = named // ist eine gute SuSE Voreinstellung





3.4.4 DNS konfigurieren


Oreilly: Die DNS-Spezification definiert zwei Arten von Nameservern:
primäre Master (primary) und sekundäre Master (Secondary oder SLAVE).
Ein primärer Nameserver liest die Daten aus einer lokal gespeicherten Datei.
Ein sekundärer Nameserver einer Zone erhält seine Zonendaten von einem anderen
Nameserver, der die Authorität über die Zone besitzt, d.h. der für ihn als
Master-Server fungiert.

Unser DNS soll als Slave laufen.

Mann kann Nameserver auch als Master [für] UND Slave [für anders] einrichten.

Oreilly: Häufig ist der Master-Server eines Secondary der primare Master, aber das
ist nicht erforderlich: ein sekundärer Master kann die Zonendaten von einem anderen
sekundären Nameserver laden.


Unser DNS-Server steht im internen Netz, Es ist besser wenn der Router nur als Slave läuft.
Nehmen wir den wahrscheinlichen Fall an ein Hacker entdeckt eine noch nicht dokumentierte
Sicherheitslücke, nutzt Sie, und bricht auf dem Router ein, dann hätte er auch gleich den DNS-SERVER.
Es ist eine gute Idee mehr als einen Nameserver einzurichten.


/etc/named.conf editieren
Version 8

für die Deutsche Übersetzung habe ich das Linux mag 2000/06 zu Hilfe genommen!
Beim Bearbeiten ist besonders auf das ";" zu achten um Syntax-Fehlern
vorzubeugen
#
# Allgemeine Serveroptionen
#
options {

directory "/var/named";
#Verzeichnis in dem die Zonen gespeichert sind
#Standard ist, dass der Server bei Fehlern in den Masterzonendateien stoppt
check-names master warn;

pid-file "/var/run/named.pid";

datasize default;
stacksize default;
coresize default;
files 200; # default war unlimited 200 ist zu geizig?
recursion no; # yes erhöht das Risiko eines Hackerangriffs
#fetch-glue no;
multiple-cnames no;
notify no;


# the default is to ask the forwarders and if they fail
# try to find the answer yourself, this will only ask the forwarders
#forward only;
#list of DNS servers to ask
forwarders {
# NGI
193.159.187.130;
194.162.162.194;
212.93.6.201;
# 130.149.4.20;
# 212.87.38.240;
# 192.168.10.2
# 192.168.10.31
# 192.168.80.1
# 192.168.0.10;
# 192.168.0.20;
# 192.168.0.30;
};
#
# Standard ist, dass an Port 53 auf allen verfügbaren
# Interfaces gehorcht (listen) wird
# man kann das noch spezieller einrichten:
# listen-on { 5.6.7.8; };
#listen-on port 1234 { !1.2.3.4; 1.2/16; }; # "!" bedeutet NICHT
listen-on port 53 { 192.168.80.1; };
query-source address 192.168.80.1 port 53;

};

#
# log es oder lass es
#
logging {
channel schreib_in_syslog {
syslog daemon;
severity info;
};
channel schreib_in_file {
file "/var/log/dns/named.debug";
severity dynamic;
};
category statistics {schreib_in_file;};
category queries {schreib_in_syslog;};
};
#
# Vordefinierte "Access Control Lists" (acl):
# "any" lässt alle Hosts zu
# "none" verbietet alle Hosts
# "localhost" Erlaubt Verbindungen von diesem Rechner
# "localnets" Erlaubt Verbindungen aus den LANs
#
# ACL festlegen:
# acl can_download { 192.168.80.1; 192.168.80.2; };
acl "trusted" { 192.168.80.1; 192.168.80.2; localhost; localnets;};

#
# Mit der "Server" - Anweisung können anderen Servern bestimmte
# Eigenschaften zugeordnet werden.

# Einen Server als Bogus ("Lügner") zu kennzeichnen verhindert,
# dass er befragt wird
#server 192.168.0.128 { bogus yes; }
#Falls der andere Nameserver auch mind. Bind 8.1 installiert hat,
#kann man Zonen kompakter übertragen
#server 192.168.0.128 { transfer-format many-answers; }


#Festlegen der root-Zone

zone "." IN {
type hint;
file "root.hint";
};


#Festlegen der Zone "localhost"

zone "localhost" IN {
type master;
file "local/localhost.zone";
check-names fail;
allow-update { none; };
};



#Festlegen der Rückwärtsauflösung für "localhost" (Adressen in Namen)


zone "0.0.127.in-addr.arpa" IN {
type master;
file "rev/127.0.0.zone";
# check-names fail;
# allow-update { none; };
};




#Festlegen der Rückwärtsauflösung für einen Adressraum

zone "80.168.192.in-addr.arpa" IN {
type master;
file "rev/192.168.80.zone";
# check-names fail;
# allow-update { none; };
};

#
# Eine Masterzone
#
zone "domain.local" IN {
type master;
file "domain/domain.local.zone";
# # Einschränken des Zonentransfers, um Spionen die Arbeit
# zu erschweren
# allow-transfer { any; }; # (hier IP Adressen eintragen denen es gestattet ist)
notify none;
};

#
# Eine Slavezone
#
#zone "isc.org" IN {
# type slave;
# file "slave/db.isc.org";
# masters { 192.168.0.128; };
#};



----------------------

Fortsetzung: PN an 403
4