Während der Konfiguration sollte man unbedingt das System überwachen und feststellen, wann und warum eine Verbindung aufgebaut wird. Ansonsten kann es schnell zu unerwünschten Telefonrechnungen kommen.
Man kann sich aber sicher sein, daß niemals grundlos eine Verbindung aufgebaut oder offengehalten wird. Die geschieht immer nur dann, wenn auch tatsächlich Pakete über die Leitung verschickt werden.
Es gilt also insbesondere die beteiligten Serverdienste auf dem Rechner zu überprüfen, ob Sie richtig konfiguriert wurden, und ggf. die Ursachen der Verbindung aufzuspüren.
Es gibt eine Vielzahl von ISDN-Statusmonitoren; der wichtigste
ist imon
. Dieses Konsolenprogramm läßt sich in jeder
Umgebung einsetzen, reagiert prompt und verschlingt keine
Systemressourcen.
Weitere Programme sind: xisdnload
(zeigt auch den Durchsatz),
isdnmon
und isdnmonp
.
Alle Monitore zeigen die Telefonnummer und die Art der Verbindung,
also ob es eine ein- oder ausgehende Verbindung ist, an.
isdnctrl verbose 3
wird das
i4l-Subsystem veranlasst, bei jedem Verbindungsaufbau
eine Meldung in /var/log/messages
zu schreiben,
anhand derer man erkennen kann, zwischen welchen IP-Nummern
und Port-Nummern ein Paket verschickt wird.
Dieses Beispiel ist eine Anfrage an den WWW-Server
www.suse.com
mit dem Alias goldengate
:
Apr 10 21:05:06 glen kernel: OPEN: 1.1.1.1 -> 209.0.51.1 TCP, port: 2224 -> 80
Ein Nachteil ist jedoch, daß man nicht überprüfen kann,
warum eine Verbindung nicht abgebaut wird. Weitere
Informationen sind im Abschnitt
SDB: ungewollte Verbindungen zu finden.
tcpdump
ist ein Paketsniffer,
der alle Pakete auf einem Netzdevice mitschneidet.
Die Ausgabe des Programmes ist leider nicht sehr
menschenfreundlich, aber zumindest die verwendeten
IP-Nummern und Port-Nummern werden sichtbar gemacht.
Dieses Beispiel ist eine Anfrage an den WWW-Server
www.suse.com
:
# tcpdump -i ippp0
tcpdump: listening on ippp0
21:05:39.382188 pec-30.au1.n.uunet.de.2230 >
goldengate.suse.com.www: S 1384488919:1384488919(0)
win 512 <mss 1460>
21:05:39.642188 goldengate.suse.com.www >
pec-30.au1.n.uunet.de.2230: S 3326089293:3326089293(0)
ack 1384488920 win 32736 <mss 1460>
21:05:39.642188 pec-30.au1.n.uunet.de.2230 >
goldengate.suse.com.www: . ack 1 win 32120 (DF)
Nachteilig ist, daß bei Verwendung dynamischer IP-Nummern
durch den PPP-Daemon das Interface ippp0
neu angelegt
wird.
tcpdump
zeigt nach dem Neuanlegen keine Daten mehr an
und muß abgebrochen und neu gestartet werden.
Das Programm isdnlog
läuft im Hintergrund und horcht
ständig auf dem D-Kanal mit. Alle Aktivitäten werden zum einen
in /var/log/messages
geloggt und zum anderen in die
Log-Datei /var/log/isdn.log
protokolliert.
Mit dem Tool isdnrep
kann man diese Datei wiederum
zu einem späteren Zeitpunkt aufrufen. Es gibt eine Vielzahl
von Parametern, hier dir wichtigsten:
isdnrep
: alle Verbindungen des heutigen Tagesisdnrep -a
: alle protokollierten Verbindungenisdnrep -t01/04/98-03/04/98
: alle Verbindungen
vom 1. bis 3. April 1998
/usr/doc/packages/i4l/isdnlog/README
bzw. im Quellpaket zu finden.
Das i4l-Subsystem ist, wenn es denn einmal gestartet wurde, nicht dafür vorgesehen, daß Verbindungen nur manuell gestartet werden. Man könnte das Konzept bei i4l also auch so formulieren: wenn es gestartet ist, besteht ständig eine Verbindung, die aber automatisch gekappt wird, wenn nichts passiert.
Wer es dennoch manuell machen will, der entferne einfach die Default-Route. In diesen Fall wird nur noch dann eine Verbindung aufgebaut, wenn ein IP-Paket an die direkte Gegenstelle geschickt wird, was i.a. nicht vorkommt, da diese Gegenstelle keine Internetdienste anbietet und daher von keinem Client angesprochen wird.
Als endgültigen Schritt kann man auch das komplette Interface
(ippp0
) herunterfahren; dann können grundsätzlich keine
Verbindungen aufgebaut werden.
Man kann die Runlevel-Skripte natürlich auch manuell benutzen:
/sbin/init.d/i4l stop
Dieses fährt alle ISDN-Netzdevices runter.
/sbin/init.d/i4l start
/sbin/init.d/route
Und dieses legt sie wieder an und setzt die Routen.
Wer bei einer syncPPP-Verbindung die Verbindung nur manuell
starten möchte, kann eine Eigenschaft des Skriptes
/etc/ppp/ip-up
ab SuSE 5.2 ausnutzen.
Dieses legt beim Verbindungsaufbau eine Default-Route
auf die neu erkannte PtP-Adresse. Beim Verbindungsabbau
wird das Device neu angelegt und die Default-Route
gelöscht. Schließlich wird die Datei /etc/route.conf
durchsucht und die Default-Route, wenn definiert, neu angelegt.
Definiert man dort keine Default-Route, so hat man nach
Verbindungsabbau eben keine.
Gestartet werden kann dann nur mit dem Kommando:
isdnctrl dial ippp0
Wer manuell auflegen will, benutzt folgendes:
isdnctrl hangup ippp0
Am besten gar nicht, denn das ist Aufgabe des Administrators. Es ist nur ihm vorbehalten, Netzdevices und Routen zu konfigurieren.
Versuche nicht, den notwendigen Programmen suid-Attribute zu geben. Erstens ist diese Aufgabe sehr schwer, und zweitens handelt man sich damit ein riesiges Sicherheitsloch ein, denn wenn diese Programme erstmal offen sind, lassen sich auch andere unerwünschte Dinge damit tun.
Einem einzelnen Skript suid-Attribute zu geben, ist unter Linux ebenfalls verboten.
Wer es dennoch unbedingt machen will, der benutze ein Paket
wie z.B. sudo
. Damit lassen sich für einzelne Benutzer
bestimmte Kommandos definieren, die diese dann als Benutzer
root
ausführen dürfen.
Hier ein einfaches Beispiel:
sudo
installieren.visudo
die Konfigurationsdatei editieren, z.B.
soll der Benutzer kfr
das Programm
/usr/local/bin/dial
ausführen dürfen:
# Angabe der privilegierten Benutzer
kfr ALL=/usr/local/bin/dial
Benutze nur das Kommando visudo
, um
die Konfigurationsdatei /etc/sudoers
zu
verändern.
dial
könnte z.B. so aussehen:
#!/bin/sh
DEVICE=ippp0
if test $UID -ne 0; then
exec sudo $0 $*
fi
case "$1" in
stop)
echo stop
isdnctrl hangup $DEVICE
;;
*)
echo dial
isdnctrl dial $DEVICE
;;
esac
Wird es nicht als User root
aufgerufen, startet es sich
selbst mit sudo
neu. Mit dial
wird gewählt,
mit dial stop
wird aufgelegt.sudo
fragt beim ersten Start und danach von Zeit
zu Zeit das Paßwort des aufrufenden Benutzers ab.NOPASSWD
mit angegeben werden, z.B.
kfr ALL=NOPASSWD:/usr/local/bin/dial