Bei dieser Variante kann das der Linux Distribution beiliegende Standard "pppd"-Paket verwendet werden; d.h. es brauchen keinerlei Veränderungen am standardmäßig installierten Linux-System gemacht werden !
Für den Anwahlvorgang wird ein einfaches Skript verwendet, das den
"pppd
"-Prozess startet.
#!/bin/sh # Aufbau einer PPP Verbindung zu einem Windows NT Server /usr/sbin/pppd 38400 connect '/usr/sbin/chat -v -f $HOME/win_nt.chat' lock
Parameterbeschreibung Datei dial_win_nt
:
38400 : setzt die zu verwendende Portgeschwindigkeit connect '...' : Herstellung der Modemverbindung und Einloggen über das Programm 'chat', wobei die zum Verbindungs- aufbau notwendigen Informationen aus der über den Parameter -f angegebenen Datei entnommen werden. Der 'chat'-Parameter -v bewirkt eine Protokollierung des Verbindungsaufbaus über 'syslogd' (Datei /var/log/messages) lock : Verwendung einer "UUCP-konformen" Lockdatei (unter /var/lock/LCK..ttyS0)
Die Parameter für das "chat
"-Programm sind in einer eigenen Datei
hinterlegt:
TIMEOUT 60 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT ERROR "" +++ATZ OK ATE1Q0&C1&S0DT555222 CONNECT ""
Auffallend an dieser Datei ist das Fehlen des üblichen
"Login:/Password:
"-Schemas, das von Windows NT nicht verwendet wird. Ein
Warten auf die "Login:
"-Aufforderung nach der "CONNECT
"-Meldung ist sinnlos !!
Es wird stattdessen einfach auf eine "CONNECT
"-Meldung gewartet und die
Steuerung an den "pppd
" übergeben.
Um eine Verbindung mit Windows NT herzustellen muß das
PAP-Authentifizierungsschema verwendet werden. Die dazu benötigten
Parameter und Kennungen erwartet der "pppd
" in der Datei /etc/ppp/pap-secrets
:
# Secrets for authentication using PAP # client server secret IP addresses my_login win_nt my_passw
Typischerweise sollte diese Datei für eine PPP-Verbindung eine Zeile (ohne
führende Blanks) enthalten, obwohl fast immer erwähnt wird, daß für eine
PPP-Verbindung zwei Einträge (mit gespiegelten "server
"/"client
"
Parametern) notwendig sind.
Wie es sich jedoch herausstellt, genügt bei einer Windows NT-Verbindung ein Parametersatz (Authentifizierung von Linux an Windows NT Server), da eine Authentifizierung des Windows NT Rechners nicht stattfindet, bzw. eine Aufforderung dazu mit "Authentication refused" durch Windows NT abgelehnt wird.
Als "server
" wird der Windows NT Rechner bezeichnet, bei dem angerufen wird;
das "secret
" enthält das der unter "client
" eingetragenen Windows
NT-Userkennung zugeordnete Paßwort im Klartext. Unter "client
" ist
bezeichnenderweise nicht der lokale Rechnername, sondern die Windows-Userkennung
anzugeben.
Um die Kombination PAP/PPP in Verbindung mit Windows NT zu nutzen, ist dem
"pppd
" über die Option "remotename
" der Systemname des betreffenden Windows
NT Servers mitzuteilen, damit der entsprechende pap-secrets-Eintrag
verwendet werden kann. Microsoft NT Systeme senden beim Aufbau der
PPP/PAP-Verbindung ihren Systemnamen leider nicht; deshalb muß dieser per
Option definiert werden.
Als lokaler Systemname ("pppd
"-Option name
) wird die Windows NT-Userkennung
vereinbart.
Der verwendete "pppd
"-Optionssatz besteht aus folgenden Parametern und liegt
in der Datei /etc/ppp/options
.
/dev/ttyS0 crtscts 152.3.60.1:152.3.60.2 defaultroute debug modem name my_login remotename win_nt
Parameterbeschreibung Datei /etc/ppp/options
:
/dev/ttyS0 : Port an dem das Modem angeschlossen ist ( ttyS0 = COM1 ) crtscts : Verwendung der Hardwareflusskontrolle (RTS/CTS) um den Datenverkehr am seriellen Port zu kontrollieren 152.3.60.1:152.3.60.2 : Definition der zu verwendenden IP-Adressen in der Form <local_ip_addr>:<remote_ip_addr> defaultroute : Verwendung des Remotehosts als Standardroute- verbindung: die PPP-Verbindung wird als Default in die Routingtabelle des Kernels eingetragen debug : aktiviert den Debugmodus; die anfallenden Informationen werden in die Datei /var/log/messages geschrieben modem : gibt an, daß es sich um eine Modemverbindung handelt name <username> : setzt laut man-Page den lokalen Systemnamen für Authentifizierungszwecke; es wird aber die zu verwendende Windows NT-User- kennung angegeben !!! remotename <systemname> : setzt den Systemnamen des angewählten Windows NT Servers für Authentifizierungszwecke
Die bis hier erfolgten Definitionen sollten ausreichen, die erstmalige Verbindungsaufnahme mit dem Windows NT Server zu wagen.
Die Transaktionen des "chat
"- als auch des "pppd
"-Programmes können durch
tail -f /var/log/messages
beim Verbindungsaufbau am Bildschirm mitprotokolliert werden.
Ein -unkommentiertes- Protokoll einer erfolgreichen PPP-Verbindungsaufnahme via PAP-Authentifizierung sieht folgendermaßen aus:
kernel: PPP: version 2.2.0 (dynamic channel allocation) kernel: PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. kernel: PPP line discipline registered. kernel: registered device ppp0 pppd: pppd 2.2.0 started by root, uid 0 chat: timeout set to 60 seconds chat: abort on (NO CARRIER) chat: abort on (BUSY) chat: abort on (NO DIALTONE) chat: abort on (ERROR) chat: send (+++ATZ^M) chat: expect (OK) chat: +++ATZ^M^M chat: OK -- got it chat: send (ATE1Q0&C1&S0DT555222^M) chat: expect (CONNECT) chat: ^M chat: ATE1Q0&C1&S0DT555222^M^M chat: CONNECT -- got it chat: send (^M) pppd: Serial connection established. pppd: Using interface ppp0 pppd: Connect: ppp0 <--> /dev/ttyS0 pppd: sent [LCP ConfReq id=0x1 <mru 1500> <magic 0x9df1a72> <pcomp> <accomp>] pppd: sent [LCP ConfReq id=0x1 <mru 1500> <magic 0x9df1a72> <pcomp> <accomp>] pppd: rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth chap msoft> \ <magic 0x3e6f> <pcomp> <accomp>] pppd: sent [LCP ConfNak id=0x0 <auth chap md5>] pppd: rcvd [LCP ConfAck id=0x1 <mru 1500> <magic 0x9df1a72> <pcomp> <accomp>] pppd: rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <auth 0xc027 01 00 00 01> \ <magic 0x3e6f> <pcomp> <accomp>] pppd: sent [LCP ConfNak id=0x1 <auth chap md5>] pppd: rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth 0xc123 01 00 00 01> \ <magic 0x3e6f> <pcomp> <accomp>] pppd: sent [LCP ConfNak id=0x2 <auth chap md5>] pppd: rcvd [LCP ConfReq id=0x3 <asyncmap 0x0> <auth pap> <magic 0x3e6f> \ <pcomp> <accomp>] pppd: sent [LCP ConfAck id=0x3 <asyncmap 0x0> <auth pap> <magic 0x3e6f> \ <pcomp> <accomp>] pppd: sent [PAP AuthReq id=0x1 user="my_login" password="my_passw"] pppd: rcvd [PAP AuthAck id=0x1msg=""] pppd: Remote message: pppd: sent [IPCP ConfReq id=0x1 <addr 152.3.60.1> <compress VJ 0f 01>] pppd: rcvd [CCP ConfReq id=0x4 < 12 06 00 00 00 01>] pppd: sent [CCP ConfReq id=0x1] pppd: sent [CCP ConfRej id=0x4 < 12 06 00 00 00 01>] pppd: rcvd [proto=0x803f] 01 06 00 17 03 05 00 05 01 02 0e 00 01 00 01 \ 00 00 52 32 30 30 32 00 pppd: Unknown protocol (0x803f) received pppd: sent [LCP ProtRej id=0x2 80 3f 01 06 00 17 03 05 00 05 01 02 0e \ 00 01 00 01 00 00 52 32 30 30 32 00] pppd: rcvd [IPCP ConfAck id=0x1 <addr 152.3.60.1> <compress VJ 0f 01>] pppd: rcvd [CCP ConfAck id=0x1 < fe 02>] pppd: rcvd [CCP TermReq id=0x7 00 00 02 dc] pppd: sent [CCP TermAck id=0x7] pppd: sent [IPCP ConfAck id=0xd <compress VJ 0f 01>] pppd: local IP address 152.3.60.1 pppd: remote IP address 152.3.60.2 pppd: sent [CCP ConfReq id=0x1] pppd: rcvd [CCP TermAck id=0x1] pppd: sent [CCP TermReq id=0x2] pppd: rcvd [CCP TermAck id=0x2] ... ... Beginn der Verbindung ... Warten auf Verbindungsende ... pppd: Terminating on signal 2. pppd: sent [LCP TermReq id=0x3] pppd: rcvd [LCP TermAck id=0x3] pppd: Connection terminated. pppd: Exit. kernel: PPP: ppp line discipline successfully unregistered
Interessant ist hierbei die Reaktion des Clients auf den Request der PAP-Authentifizierung
pppd: rcvd [LCP ConfReq ... <auth pap> ... ]
Dieser Request wird prompt beantwortet mit
pppd: sent [LCP ConfAck ... <auth pap> ... ]
pppd: sent [PAP AuthReq user="my_login" password="my_passw"]
Dies führt schließlich zum erfolgreichen Verbindungsaufbau.
Wie aus dem Protokoll ersichtlich ist, wird beim PAP-Authentifizierungsschema neben der Userkennung auch das Paßwort im Klartext übertragen, was unter Umständen als Sicherheitsrisiko angesehen werden kann. Um den Sicherheitsstandard zu heben, wird zusätzlich zumindest eine Verschlüsselung des Paßwortes gefordert.