MSDatec Leitseite
HandelswareHandelsware
Entwicklung und ProduktionEntwicklung
Netzwerke aufbauen und unterhaltenNetzwerke
Netzwerke aufbauen und unterhaltenkleines LAN
Netzwerke aufbauen und unterhaltenLinux-Server
Wählverbindungsverwaltung über Webseiten IN-Verwaltung
Windows-NetzwerkinstallationNetz-Windows
Support: Einrichtung, Pflege, Wartung und Reparaturen von EDV-Komponenten und NetzwerkenSupport
Seminare, denn man/frau lernt nie aus...Seminare
FirmeninfosÜber uns
Forum: Hier können Sie sich mit uns und anderen Besuchern austauschenForum

IN-Verbindungsverwaltung via Web-Seiten

Wie kann ich bestimmten Benutzern eines Intranets ermöglichen, über den Linux-Server eine Wählverbindung in das Internet herzustellen bzw. zu beenden?

Paßwortschutz über .htaccess-Dateien

Zunächst zum ersten Teil der Frage: Bei Einsatz des Apache-Servers können die Dateien .htaccess verwendet werden, um eine Identifikation und Authentifikation zu verlangen. Dazu habe ich unterhalb von documentroot ein Verzeichnis namens secure mit den Zugriffsrechten 755 angelegt (der Eigentümer spielt bei diesen Zugriffsrechten keine Rolle). In diesem Unterverzeichnis befindet sich eine Datei namens .htaccess mit folgenden Inhalt:
AuthUserFile /etc/httpd/user
require user lehrer admin ms
AuthType Basic
AuthName office.msdatec.de
Das heißt, daß nun nur noch die drei Benutzer lehrer, admin und ms Zugriff auf das Verzeichnis haben. Der angegebene Domänenname office.msdatec.de wird dabei im Paßwortdialog angezeigt (wobei dort auch Hallo Welt stehen könnte).
Was noch fehlt, sind die Paßwortdefinitionen dieser Benutzer in /etc/httpd/user:
lehrer:jHd635KJMsjd9
admin:jU75Fgal7Jd
ms:KjF5dJh84gJzF
Dies sind AFAIK die durch die "Falltür-Funktion" crypt verschlüsselten Paßwörter aus /etc/shadow. Wer mutig ist, kann AuthUserFile auf /etc/passwd setzen und dann den Webserver zum Besitzer von /etc/shadow machen, wovon die Apache-FAQ aber dringendst abrät. In einem Schulungsnetz, das meistens offline ist, habe ich da aber keine Bedenken. :-) Der Vorteil besteht dabei darin, daß bei Paßwortänderungen AuthUserFile nicht geändert werden braucht.

Zu beachten ist noch, daß die besondere Bedeutung der .htaccess-Dateien nicht etwa in /etc/httpd/httpd.conf durch einen Eintrag wie etwa AllowOverride None für das entsprechende Verzeichnis deaktiviert ist.

Nun sollte der Zugriff auf das Verzeichnis nur noch bei Kenntnis von Benutzerkennung und Paßwort gelingen.

Weitere Infos zur Paßwortverwaltung mit Apache gibt es unter http://httpd.apache.org/docs/misc/FAQ.html#user-authentication [1].

zum Inhaltsverzeichnis Kapitelanfang


Steuerung des Verbindungsauf- und -abbaus

Wie kann nun die Verbindung auf- und abgebaut werden? In einer HTML-Datei befindet sich der Verweis auf ein Shell-Script:
<HTML>
  <HEAD>
    <TITLE>Administration</TITLE>
  </HEAD>
  <BODY>
    <H1>Administration</H1>
    <H2>Internetverbindung</H2>
    (Öffnet ein neues Browserfenster)
    <A HREF="/cgi-bin/ppp-up.sh" TARGET="_new">Verbindung herstellen</A><P>
    <A HREF="/cgi-bin/ppp-down.sh" TARGET="_new">Verbindung beenden</A>
  </BODY>
</HTML>
Das CGI-Verzeichnis muß in der Apache-Konfigurationsdatei /etc/httpd/httpd.conf richtig konfiguriert sein, was in einer Apache-Standardkonfiguration gegeben ist. Desweiteren müssen die Shell-Scripte natürlich das Attribut ausführbar aufweisen.
Der Inhalt des in der HTML-Datei angegebenen Shell-Scripts /cgi-bin/ppp-up.sh:
#!/bin/bash

BASENAME=/usr/bin/basename
SU1=/usr/bin/su1
PING=/bin/ping
CAT=/bin/cat

$CAT << EOT
Content-type: text/html


<HTML>
  <HEAD>
    <META HTTP-EQUIV=\"expires\" content=\"0\">
    <TITLE>Internetverbindung verwalten</TITLE>
  </HEAD>
<BODY>
EOT

SCRIPTNAME=$($BASENAME $0)


if [ "$SCRIPTNAME" == "ppp-up.sh" ]; then
  echo "Stelle Internet-Verbindung her. Die Ausgabe des Scripts\
        ist<BR><HR><PRE>"
  $SU1 /etc/ppp/ppp-up
  echo "</PRE><HR>"
  echo "Teste auf Netzwerkverbindung...<BR /><PRE>"
  $PING -c 2 129.70.4.55
  LASTERROR=$?
  echo "</PRE><BR>"
  if [ "$LASTERROR" == "0" ] ; then
    echo "Ok, Internetverbindung hergestellt, Verbindung steht<BR>\
      Sofern innerhalb der angegebenen Timeout-Zeit keine \
      Internet-Anforderung durchgeführt wird, legt der Server wieder \
      auf. Oder der Provider trennt die Leitung schon vorher.<P>\
      <A HREF="/cgi-bin/ppp-down.sh">\
      Internetverbindung wieder trennen</A>"
  else
    echo "keine Netzwerkverbindung?!"
  fi
else
  echo "Beende Internet-Verbindung. Die Ausgabe des Scripts lautet:<BR>\
  <HR><PRE>"
  $SU1 /etc/ppp/ppp-down
  echo "</PRE><HR>"
fi
echo -e "</BODY></HTML>\n"
Wie man bereits erahnt, ist /cgi-bin/ppp-down.sh nur ein (Soft- oder Hard-)link auf /cgi-bin/ppp-up.sh.
Zum eigentlichen Verbindungsaufbau sind root-Rechte erforderlich, die durch su1 ([2]) vermittelt werden. su1 ist ein erweitertes superuser-Programm, bei dem Benutzer, Kommando und Parameter in /etc/su1.priv genau festgelegt werden können:
logfile /var/log/su1.log
syslog all
# passwort handling:
ask never
allow wwwrun prefix /etc/ppp/ppp-up
allow wwwrun prefix /etc/ppp/ppp-down
Dabei wird unterstellt, daß der httpd (also Apache) mit der Benutzerkennung wwwrun aktiv ist.

Das war's dann schon...

zum Inhaltsverzeichnis Kapitelanfang


Literatur/Verweise

1)Frequently Asked Questions (FAQ) und ihre Antworten zum Apache-Server: http://httpd.apache.org/docs/misc/FAQ.html
2)su1 - ein erweitertes superuser-Programm: ftp://sunsite.unc.edu/pub/Linux/system/admin/su/

zum Inhaltsverzeichnis Kapitelanfang


Letzte inhaltliche Änderung: 12. Aug 2001Kontakt: