Schriftliche Projektarbeit zur Abschlussprüfung zum. Fachinformatiker Systemintegration



Ähnliche Dokumente
Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Installation Messerli MySQL auf Linux

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

OP-LOG

Windows 2008R2 Server im Datennetz der LUH

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

Update Messerli MySQL auf Linux

EASYINSTALLER Ⅲ SuSE Linux Installation

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Benutzerhandbuch für Debian Server mit SAMBA. Rolf Stettler Daniel Tejido Manuel Lässer

Datensicherung. Beschreibung der Datensicherung

SSH Authentifizierung über Public Key

Windows 2008 Server im Datennetz der LUH

" -Adresse": Geben Sie hier bitte die vorher eingerichtete Adresse ein.

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

-Bundle auf Ihrem virtuellen Server installieren.

Leitfaden zur Installation von Bitbyters.WinShutdown

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Beschreibung Installation SSH Server für sicher Verbindung oder Bedienung via Proxyserver. (Version 5.x)

BEDIENUNGSANLEITUNG. ba76147d01 04/2013. MultiLab User PC SOFTWARE ZUR BENUTZERVERWALTUNG

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Warenwirtschaft Handbuch - Administration

Clientkonfiguration für Hosted Exchange 2010

Wissenswertes über LiveUpdate

14.2 Einrichten der Druckserverfunktionen

Installation Collax Server mit Sage New Classic

HTBVIEWER INBETRIEBNAHME

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

FTP-Leitfaden RZ. Benutzerleitfaden

Installation DataExpert Paynet-Adapter (SIX)

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Verwendung des IDS Backup Systems unter Windows 2000

ICS-Addin. Benutzerhandbuch. Version: 1.0

ecall Anleitung Outlook Mobile Service (OMS)

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL

Anleitung zur Mailumstellung Entourage

eduroam mit SecureW2 unter Windows 7 Stand: 27. Januar 2015

Anleitung Captain Logfex 2013

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Leitfaden Installation des Cisco VPN Clients

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

How to install freesshd

Collax VPN. Howto. Vorraussetzungen Collax Security Gateway Collax Business Server Collax Platform Server inkl. Collax Modul Gatekeeper

FrogSure Installation und Konfiguration

meine-homematic.de Benutzerhandbuch

Clients in einer Windows Domäne für WSUS konfigurieren

Collax Archive Howto

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Verwendung des Mailservers

Anleitungen zum KMG- -Konto

Handbuch USB Treiber-Installation

I. Travel Master CRM Installieren

Umzug der Datenbank Firebird auf MS SQL Server

Outlook - CommuniGate Pro Schnittstelle installieren. Outlook - Elemente freigeben. Outlook - Freigegebene Elemente öffnen

Netzwerk einrichten unter Windows

Eine Anleitung, wie Sie Mozilla Thunderbird 2 installieren und konfigurieren können. Installation Erstkonfiguration... 4

Ihr Benutzerhandbuch AVIRA ANTIVIR EXCHANGE

SFTP SCP - Synology Wiki

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Windows 2000 mit Arktur als primärem Domänencontroller (PDC)

Grundlagen 4. Microsoft Outlook 2003 / 2007 / Apple Mail (ab Version 4.0) 9. Outlook 2011 für Mac 10. IOS (iphone/ipad) 12

Einrichtung Konto Microsoft Outlook 2010

Datensicherung. Mögliche Vorgehensweisen:

TeamSpeak3 Einrichten

STRATO Mail Einrichtung Microsoft Outlook

Dokumentation IBIS Monitor

1 Konto für HBCI/FinTS mit Chipkarte einrichten

Cisco AnyConnect VPN Client - Anleitung für Windows7

So richten Sie Ihr Postfach im Mail-Programm Apple Mail ein:

Einführung... 3 MS Exchange Server MS Exchange Server 2007 Jounraling für Mailboxdatabase... 6 MS Exchange Server 2007 Journaling für

WEKA Handwerksbüro PS Mehrplatzinstallation

Firmware-Update, CAPI Update

Installationshilfe VisKalk V5

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

-Konten für Studierende und Zugriffswege auf die Mail-Systeme der Hochschule Rhein-Waal

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Anleitung Zugang Studenten zum BGS-Netzwerk Drucker und WLAN (Windows 7) BGS - Bildungszentrum Gesundheit und Soziales Gürtelstrasse 42/44.

Diese Anleitung beschreibt das Vorgehen mit dem Browser Internet Explorer. Das Herunterladen des Programms funktioniert in anderen Browsern ähnlich.

Windows Server 2008 für die RADIUS-Authentisierung einrichten

Installation Messerli MySQL auf MAC OS X

FastViewer Remote Edition 2.X

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

PowerWeiss Synchronisation

Installation OMNIKEY 3121 USB

zur WinIBW Version 2.3

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

1. Laden Sie sich zunächst das aktuelle Installationspaket auf herunter:

Anleitung öffentlicher Zugang einrichten

Transkript:

Schriftliche Projektarbeit zur Abschlussprüfung zum Fachinformatiker Systemintegration Thema Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Datum der Fertigstellung 20.03.2003 Auszubildender Karsten Reineck Bonner Logsweg 15 53123 Bonn Ausbildungsbetrieb Fraunhofer-Gesellschaft e.v. Schloss Birlinghoven 53754 Sankt Augustin

Kurzdarstellung Die Fraunhofer-Gesellschaft e.v. (FhG) betreibt ein Netz für eine Arbeitsgruppe, in dem Linux- und Windows-Clients neben zwei Linux- und einem Windows 2000 Server verwaltet werden. Diese Server dienen unter anderem als Mail- und Datei-Server, wobei Freigaben sowohl auf Linux-Seite mittels NFS als auch auf Windows-Seite mittels Samba zur Verfügung gestellt werden. Die Benutzerverwaltung, die von mehreren Administratoren ausgeübt wird, fand dabei nicht nur auf Seite des Servers für Mail- und Sambabenutzer sondern auch dezentral auf den Clients für die lokale Systemanmeldung statt. Projektziel war es, mit Hilfe eines Verzeichnisdienstes eine zentrale Benutzerverwaltung und Authentifizierungsstelle zu schaffen, um dadurch die Administration zu vereinfachen und die Fehleranfälligkeit zu vermindern. In der Planungsphase wurde unter anderem ein Verzeichnisentwurf erstellt. Während des Projekts wurden der POP3-Dienst, die lokale Systemanmeldung und die Freigaben auf den Verzeichnisdienst umgestellt. Zur vereinfachten Migration bestehender Benutzerkennungen in den Verzeichnisdienst wurde ein Skript geschrieben. Des Weiteren ist der Verzeichnisdienst als wichtiger Systemdienst in die automatisierte Systemüberwachung integriert worden. In der Abschlussphase des Projekts wurden Tests zur Qualitätssicherung durchgeführt, die erfolgreich verliefen. Seite 1

Inhaltsverzeichnis 1 Projektdefinition... 1 1.1 Motivation und Zielsetzung... 1 1.2 Projektumfeld... 1 1.3 Projektschnittstellen... 1 1.4 Umfang des Projekts... 2 2 Grundlagen Verzeichnisdienst... 2 2.1 Einsatzgebiete... 2 2.2 Lightweighted Directory Access Protocol (LDAP)... 2 2.2.1 Der Aufbau eines Verzeichnisses... 3 2.2.2 Der Zugriff auf ein Verzeichnis via LDAP... 4 3 Projektplanung... 4 3.1 Ist-Analyse... 4 3.2 Soll-Konzept... 4 3.3 Feinkonzept... 5 3.3.1 Projektphasen und Vorgangsliste... 5 3.3.2 Kosten- und Ressourcenplanung... 5 4 Projektdurchführung... 6 4.1 Vorbereiten des Servers... 6 4.2 Aufsetzen des Verzeichnisdienstes... 6 4.3 Verzeichnisentwurf... 7 4.4 Einspeisen von Daten in das Verzeichnis... 8 4.5 Einrichten der Systemüberwachung Gossip... 8 4.6 Exemplarische Durchführung der Client-Konfiguration an einem Test-Client 9 4.7 Konfiguration von Samba... 10 4.8 Umstellen der Clients auf den verzeichnis-orientierten Login... 11 5 Qualitätssicherung... 11 5.1 Funktionstest der kompilierten OpenLDAP-Dateien... 12 5.2 Funktionstest: Verzeichnisdienst... 12 5.3 Funktionstest: Gossip... 13 5.4 Belastungstest: Verzeichnisdienst... 13 Seite 2

6 Abweichungen vom Projektantrag... 13 7 Soll-Ist-Vergleich... 14 8 Alternativen und Entscheidungen... 14 9 Reflexion, Fazit und Ausblick... 15 10 Anhang... i 10.1 Dokumentation für Administratoren... i 10.2 Perl-Skript zur LDAP-Benutzerverwaltung... ii 10.3 Projektphasen, Vorgangsliste und Zeitvergleich... v 10.4 Kosten- und Ressourcenplanung... vi 10.4.1 Verwendete Hard- und Software... vi 10.4.2 Arbeitszeiten... vi 10.5 Auszug aus dem Verzeichnisbaum... vii 10.6 Konfigurationsdateien... viii 10.6.1 Konfigurationsdatei des OpenLDAP-Servers... viii 10.6.2 Konfigurationsdatei der LDAP-Clients... viii 10.6.3 Konfigurationsdatei der Systemanmeldung... viii 10.6.4 Konfigurationsdateien des Automounters... ix 10.7 Systemüberwachungstool Gossip... ix 10.7.1 Python-Skript zum Testen des Verzeichnisdienstes... ix 10.7.2 Screenshots der Gossip-Webseite... x 10.8 Ergebnis einer Suchanfrage mit ldapsearch... xi 10.9 Testprotokoll... xii 10.10 Abnahmeprotokoll... xiii 11 Glossar... xiv 12 Quellenverzeichnis... xviii Seite 3

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung 1 Projektdefinition 1.1 Motivation und Zielsetzung Die bisherige Benutzerverwaltung auf den eingesetzten Linux-Systemen ist aus Administratorsicht aufwendig und fehleranfällig. Änderungen müssen mehrfach an Server und Client durchgeführt werden; eine zentrale Benutzerverwaltung vergleichbar mit einer Windows-Domäne existiert auf diesen Systemen nicht. Ziel des Projektes ist es, durch einen Verzeichnisdienst eine zentrale Authentifizierungsstelle für Benutzer und deren Eigenschaften zu schaffen, um den Administrationsaufwand und die durch redundante Einträge bedingte Fehleranfälligkeit zu minimieren. 1.2 Projektumfeld Von dem Projekt direkt betroffen sind acht Client Computer auf denen parallel Windows XP und SuSE Linux gefahren wird und ein SuSE Linux 8.1 Server, der als E-Mail und Datei-Server fungiert. Diese Computer befinden sich in einem Klasse-C-Netz (129.26.233.0/24) der Fraunhofer-Gesellschaft, das über einen Linux-Router an das Hauptnetz der FhG (129.26.0.0/16) gekoppelt ist. Dieses ist durch eine Firewall vom Internet getrennt. 1.3 Projektschnittstellen Der neu aufgesetzte Verzeichnisdienst soll in die Dienst- und Systemüberwachungssoftware Gossip eingebunden werden, die für die Überwachung von wichtigen Computern der FhG am Standort Birlinghoven eingesetzt wird. Dazu muss der Betreuer des Gossip Wolfgang Strobl ein Skript schreiben, das die Funktionalität des Dienstes prüft. Da das Projekt ausschließlich Computer betrifft, die bereits in Betrieb sind, entfällt das Einbinden aller für die Netzinfrastruktur zuständigen Personen wie z. B. des Backup- Beauftragten. Seite 1

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung 1.4 Umfang des Projekts In dem Projekt ist die Planung, Installation und Konfiguration eines Verzeichnisdienstes, der zukünftig die Benutzerkennungen sowie deren Passwörter und Eigenschaften beinhalten soll, vorgesehen. Des Weiteren soll die Systemanmeldung an den Clients und die Authentifizierung der Benutzer des POP3-Dienstes und der Samba-Freigaben über den Verzeichnisdienst abgewickelt werden. Während und nach dem Projekt soll die Betriebssicherheit gewährleistet sein. Ferner werden ein Skript ( Anhang Punkt 10.2, Seite ii ff.) und die dazugehörige Dokumentation ( Anhang Punkt 10.1, Seite i) erstellt, welche die Migration von Benutzerkennungen in den Verzeichnisdienst ermöglichen bzw. zukünftigen Administratoren dessen Funktion und Bedienung erläutern. 2 Grundlagen Verzeichnisdienst 2.1 Einsatzgebiete Generell bietet ein Verzeichnis die Möglichkeit, Daten zu speichern und diese anhand bestimmter Kriterien zu durchsuchen. Es kann als spezialisierte Datenbank angesehen werden. Im Vergleich zu einer klassischen Datenbank die in der Lage sein muss, komplexe Transaktionen konsistent durchzuführen ist ein Verzeichnisdienst hauptsächlich darauf ausgelegt, eine schnelle Suche zu ermöglichen. Dies liegt an den Anwendungsgebieten und der damit verbundenen Art der Daten, die in der Regel ein Verzeichnisdienst beherbergt, wie z. B. personenbezogene Kontaktinformationen. So wird in der Regel eine Änderung der Telefonnummer oder der Adresse seltener vorkommen als eine diesbezügliche Anfrage. Eine weitere Spezialisierung ist, dass Verzeichnisdienste durch das Hinzufügen von Attributen flexibel und leicht erweiterbar sind. Auch der Aspekt der Sicherheit wird bedacht, denn es lassen sich detailliert Lese- und Schreibrechte auf z. B. einzelne Attribute vergeben. 2.2 Lightweighted Directory Access Protocol (LDAP) LDAP ist die leichtgewichtigere Alternative zum 1990 veröffentlichten überladenen und umständlich zu implementierenden Directory Access Protocol (DAP) und gilt heute als der gebräuchlichste Standard zum Zugriff auf einen Verzeichnisdienst. Seite 2

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Da es direkt auf TCP aufsetzt und man davon ausgeht, dass auf den gängigen Systemen (wie PC, Apple oder SUN) TCP implementiert ist, kann LDAP als plattformübergreifend bezeichnet werden. LDAP als Protokoll betrachtet definiert Operationen, mit denen auf das Verzeichnis zugegriffen werden kann; die so genannten LDAP-Modelle regeln unter anderem den strukturellen Aufbau eines Verzeichnisses und die Namensgebung. 2.2.1 Der Aufbau eines Verzeichnisses Die Daten in einem Verzeichnisdienst sind hierarchisch organisiert. Die Art dieser Daten und die Basis-Informationseinheiten, die der Verzeichnisdienst beinhaltet, werden im LDAP-Informations-Modell definiert. Die Basis-Informationseinheit ist das so genannte Objekt, das eine Sammlung von Daten darstellt. Oft beschreibt ein Objekt Dinge aus der realen Welt wie z. B. eine Person, einen Computer oder eine Abteilung. Abbildung 2.1 zeigt einen typischen Auszug eines Verzeichnisses. Abbildung 2.1: Auszug aus einem Verzeichnis Organisation dc=firma, dc=de Abteilungen Person ou=personen ou=server ou=verwaltung ou=vertrieb cn=daniela Achtmann Ein Objekt (auch Eintrag genannt) besteht aus einer Sammlung von Attributen, die bestimmte Eigenschaften des Objekts beschreiben. Jedes Attribut seinerseits hat dabei einen Typ und in der Regel einen oder mehrere Werte. Dabei gibt der Typ die Art der vom Attribut speicherbaren Daten an, während der Wert die eigentlichen Daten enthält. Abbildung 2.2 zeigt ein typisches Objekt mit Attributstypen und -werten. Abbildung 2.2: Verzeichnisobjekt Attributstyp Attributswert cn: Daniela Achtmann Dany Achtmann sn: Achtmann telephonenumber: 02241 / 14-2512 mail: achtmann@firma.de Seite 3

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Das LDAP-Namens-Modell sorgt dafür, dass jeder Eintrag in einem Verzeichnis eindeutig referenziert werden kann. Dies geschieht bei LDAP über den so genannten distinguished name (DN), der ungefähr vergleichbar mit einer absoluten Pfadangabe zu einer Datei den Weg durch das Verzeichnis bis zum gesuchten Objekt zeigt. Der DN für das Objekt aus Abbildung 2.1 lautet demnach: dn: cn=daniela Achtmann, ou=verwaltung, ou=personen, dc=firma, dc=de. 2.2.2 Der Zugriff auf ein Verzeichnis via LDAP Die drei wichtigen Zugriffs-Operationen von LDAP werden im Funktions-Modell definiert und gliedern sich in Abfragen, Aktualisierungen und Kontrollzugriffe. Die Abfrage-Operationen erlauben das Durchsuchen des Verzeichnisses und das Empfangen von Verzeichnisdaten. Über die Aktualisierungs-Operationen lassen sich Einträge hinzufügen, löschen oder ändern; mittels der Kontroll-Operationen erfolgen die Identifikation am Verzeichnisdienst und die Fehlerübermittlung. 3 Projektplanung 3.1 Ist-Analyse Die Benutzerverwaltung unter Linux erfolgt z. Zt. an drei verschiedenen Stellen: Auf dem Linux-Server müssen lokale Benutzer angelegt werden, die für die Authentifizierung des POP3-Dienstes zuständig sind. Des Weiteren müssen diese Benutzer in die Samba-eigene Benutzerverwaltung eingetragen werden, um die Heimlaufwerke von Windows-Maschinen aus zugreifbar zu machen. Gesondert davon müssen auf allen acht Linux-Clients die Benutzer für die lokale Systemanmeldung und den Zugriff auf die Heimlaufwerke via NFS angelegt werden, da die Zugriffsrechte bei NFS-Freigaben über die lokale Linux User-ID geregelt werden. Diese mehrfachen Einträge bringen die üblichen Probleme bei Redundanzen mit sich. Zum einen ist es zeitaufwendig an mehreren Stellen Daten zu erfassen bzw. diese zu ändern, zum anderen können unerwartete Fehler bei sich widersprechenden oder unvollständigen Informationen auftreten. 3.2 Soll-Konzept Die Benutzerverwaltung soll auf einen Punkt konzentriert und dadurch ein so genannter Single Point of Administration geschaffen werden. Hierzu soll ein Verzeichnisdienst Seite 4

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung eingerichtet werden, der alle Benutzerdaten beinhaltet. Dadurch entfallen die redundanten Benutzerkonten an den oben genannten Stellen. Die Clients sollen so konfiguriert werden, dass sie den Verzeichnisdienst als zentrale Authentifizierungsstelle nutzen. Zur Vereinfachung der Migration bereits bestehender Benutzerkennungen soll ein Skript geschrieben werden. Schlusseffekte wären eine Verminderung des Zeitaufwands für die Administratoren und der Fehleranfälligkeit der Benutzerverwaltung. Da es sich bei dem Verzeichnisdienst in der oben beschriebenen Form um einen wichtigen Dienst handelt, ohne den die Anmeldung an den Clients, der POP3-Zugriff und die Freigaben nicht mehr funktionieren würden, soll der Dienst noch in die automatisierte Systemüberwachung integriert werden, damit Fehler schnell erkannt und entsprechende Maßnahmen ergriffen werden können. 3.3 Feinkonzept 3.3.1 Projektphasen und Vorgangsliste - Aufbau des Verzeichnisdienstes - Integration des Dienstes in die Systemüberwachung - Erstellung eines Skripts zur Migration von Benutzern - Umstellung der Dienste auf den Verzeichnisdienst - Vornehmen der Client-Konfiguration - Testen verschiedener Szenarien - Erstellen der Projektdokumentation - Übergabe und Abnahme des Projekts Die detaillierte Auflistung der Projektphasen und ihrer Reihenfolge ist dem Anhang ( Punkt 10.3, Seite v) zu entnehmen. 3.3.2 Kosten- und Ressourcenplanung Da das Projekt ausschließlich bereits im Betrieb befindliche Computer betrifft und Softwareprodukte aus dem Open Source Bereich verwendet werden, entstehen auf dieser Ebene des Projekts keine Kosten. Eine ausführliche Auflistung der verwendeten Hard- und Software ist im Anhang ( Punkt 10.4.1, Seite vi) dargestellt. Als unterstützende Person wird Herr Wolfgang Strobl eingebunden, der bei der Integration des Verzeichnisdienstes in die automatisierte Systemüberwachung hilft und in die- Seite 5

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung sem Zuge unter anderem ein Python-Skript schreibt. Die detaillierte Kostenplanung der Arbeitszeiten ist im Anhang ( Punkt 10.4.2, Seite vi) einzusehen. 4 Projektdurchführung 4.1 Vorbereiten des Servers Bevor mit der Installation des Verzeichnisdienstes begonnen werden konnte, mussten zunächst einige Vorbereitungen am Server getroffen werden. Obwohl der Server in das betriebsinterne Backup aufgenommen war, wurde zu Beginn eine aktuelle Sicherung durchgeführt, um im Notfall den letzten betriebsfähigen Status wieder herstellen zu können. Der OpenLDAP-Verzeichnisdienst stellt einige Anforderungen was bereits installierte Software betrifft. Unter anderem werden die Pakete NSS_LDAP und PAM_LDAP benötigt, die später die Schnittstelle zwischen dem Verzeichnisdienst und den Authentifizierungsroutinen des POP3- und Anmeldedienstes und den Freigaben bilden. Des Weiteren ist eine Datenbank erforderlich, in der die Daten des Verzeichnisses gespeichert werden. Das Zusammenspiel dieser Pakete ist eine komplizierte Angelegenheit, bei der die Verwendung möglichst aktueller Versionen empfohlen wird. Daher wurde ein Systemupdate auf die neuste SuSE Linux Version 8.1 durchgeführt, und die Quellcodedatei der z. Zt. aktuellsten als stabil bekannten Version des OpenLDAP-Servers 2.1.12 vom 07.01.2003 heruntergeladen. 4.2 Aufsetzen des Verzeichnisdienstes Nachdem die Sourcen entpackt waren, wurden mittels der darin enthaltenen Makefiles die Abhängigkeiten geprüft; anschließend wurde der Quellcode kompiliert. Vor der eigentlichen Installation wurde noch ein Funktionstest der kompilieren Quellen durchgeführt. Der Verlauf dieses Tests ist im Abschnitt 5.2 Funktionstest der kompilierten OpenLDAP-Dateien beschrieben. Nachdem der Verzeichnisdienst installiert war, musste noch die Konfigurationsdatei angepasst werden, in der unter anderem die Schemadateien, Datenbankinformationen und die Wurzel des Verzeichnisbaumes bekannt gemacht werden musste. Die vollständige und kommentierte Datei (slapd.conf) ist dem Anhang ( Punkt 10.6.1, Seite viii) zu entnehmen. Damit der Verzeichnisdienst bei einem Neustart ordnungsgemäß beendet bzw. gestartet werden kann, wurde ein Skript geschrieben; dieses wurde über die Para- Seite 6

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung meter start und stop ausführbar in die entsprechenden Runlevel-Verzeichnisse eingetragen (siehe Datei: /etc/rc.d/slapd ). Datei: /etc/rc.d/slapd #! /bin/bash # Fallabfrage des Kommandozeilen-Parameters mit den Fällen start, stop # oder default case "$1" in start) echo "Starting SLAPD" # Starten des OpenLDAP-Daemons /usr/local/libexec/slapd ;; stop) echo "Shutting down SLAPD" # Beenden des Prozesses durch den Befehl kill, der als Argument # die aktuelle Prozess-ID (PID) bekommt, die zuvor mittels des # Befehls cat ausgelesen wurde. cat /usr/local/var/slapd.pid xargs kill ;; *) # Ausgabe des richtigen Programmaufrufs bei falscher Eingabe echo "Usage: $0 {start stop}" exit 1 ;; esac # Ende der Fallabfrage 4.3 Verzeichnisentwurf Bevor ein Verzeichnis mit Daten gefüllt werden kann, sollte man sich zunächst einige Gedanken über das so genannte Directory Design, unter anderem also auch die Struktur des Baumes, machen. Hier stellt sich die Frage, ob man den Baum z. B. nach örtlichen Gegebenheiten oder logisch nach Abteilungen strukturiert. Dabei sollte darauf geachtet werden, eine zukünftige Erweiterung des Baumes zu ermöglichen. Orientiert an den für Verzeichnisse üblichen Richtlinien stand die Wurzel des Verzeichnisbaums anhand der DNS-Domäne mit dc=fhg, dc=de schon fest. Da das in diesem Projekt betroffene Subnetz der Windows 2000 Domäne matrix angehört, wurde zunächst ein weiterer Container unterhalb der Wurzel namens dc=matrix angelegt. Falls in Zukunft weitere Domänen in das Verzeichnis integriert werden sollten, so wäre dies problemlos möglich. Unterhalb dieses Containers wurden zwei Organisationseinheiten angelegt: eine für Benutzergruppen (ou=auth_group) und eine für Benutzer (ou=auth_user). Seite 7

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Alle Container und Organisationseinheiten wurden mit Hilfe von LDIF-Dateien in das Verzeichnis integriert. Ein Auszug des Baumes ist im Anhang ( Punkt 10.5, Seite vii) dargestellt. 4.4 Einspeisen von Daten in das Verzeichnis Um die Migration bestehender Benutzerkonten so einfach wie möglich zu gestalten, fiel die Entscheidung dafür ein Programm zu schreiben. Als Programmiersprache bot sich die Skriptsprache Perl an. Hier gibt es Module, nach deren Einbindung vordefinierte Funktionen und Objekte zur Handhabung von Verzeichnisdienstobjekten zur Verfügung stehen. Daher ist es für diese Zwecke in Perl möglich, mit recht einfachen Mitteln und in kurzer Zeit leistungsstarke Programme zu entwickeln. Da die Installation des Verzeichnisdienstes mehr Zeit als geplant beansprucht hatte, wurde beschlossen zunächst ein rein funktionelles Skript zu schreiben, das keine Fehlerbehandlung bzw. eine vollständige Benutzerverwaltung vorsieht. Das kommentierte Skript ist im Anhang ( Punkt 10.2, Seite ii ff.) nachzulesen. Als Testkandidat diente ein Test-User, der dafür auf dem Server wie ein normaler Benutzer eingetragen wurde. Dieser User wurde anschließend mittels des Skripts in das Verzeichnis eingetragen, ebenso wie alle bereits existierenden Benutzer, die dadurch kurzfristig sowohl in den alten Benutzerverwaltungen als auch im Verzeichnis eingetragen waren. Diese mehrfache Datenhaltung diente dazu, später einen möglichst flüssigen Übergang in der kritischen Phase zu ermöglichen, damit die Benutzer in gewohnter Weise weiterarbeiten können und keinen Ausfall der gewohnten Dienste wahrnehmen. 4.5 Einrichten der Systemüberwachung Gossip Bei Gossip handelt es sich um ein in der ehemaligen GMD entworfenes Tool zur Überwachung von Diensten auf Basis von Python-Skripten. Die Ergebnisse der einzelnen Tests auf den verschiedenen Maschinen können über eine zentrale Webseite abgefragt werden. Gossip besteht vereinfacht dargestellt aus den Testskripten an sich und einem Programm, das auf einer Maschine ausgeführt bei Anfragen die entsprechenden Rückmeldungen der Tests ausgibt. Damit das Programm beim Booten automatisch gestartet wird, muss es in einem Startskript in den entsprechenden Runlevel- Verzeichnissen eingetragen werden. Für das eigentliche Python-Skript, welches den Test ausführt, wurde der zuständigen Verwalter des Gossip und Python-Programmierer Herr Wolfgang Strobl hinzugezogen. Dieser erstellte ein Skript zur Überwachung des Seite 8

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Dienstes, das entsprechend vorgegebener Angaben eine Suchanfrage via LDAP an den Server stellt und die Antwort nach einer bestimmten Zeichenkette durchsucht. Dieses Python-Skript und ein Screenshot der Webseite können im Anhang ( Punkt 10.7, Seite ix ff.) eingesehen werden. 4.6 Exemplarische Durchführung der Client- Konfiguration an einem Test-Client Erste Tests des Dienstes wurden nicht an einem normalen Client-PC sondern an einem Test-Client unter SuSE Linux durchgeführt, der für zwei Tage dem Projekt zur Verfügung stand. An diesem Client wurden folgende Schritte durchgeführt, die eine Systemanmeldung am Verzeichnisdienst ermöglichen sollten. Diese Konfiguration ist detailliert auch im Anhang in der Dokumentation für Administratoren ( Anhang Punkt 10.1, Seite i) nachzulesen. 1. In Yast müssen die benötigten Pakete pam_ldap und nss_ldap nachinstalliert werden. 2. Anschließend können ebenfalls über Yast in den erweiterten Netzwerkeigenschaften die Einstellungen für den lokalen LDAP-Client vorgenommen werden. Hier müssen der LDAP-Server und die Such-Basis (Search base) angegeben werden. 3. Nun müssen noch die Konfigurationsdateien /etc/nsswitch.conf und /etc/openldap/ldap.conf angepasst werden. In der ersten Datei wird der LDAP- Server als Authentifizierungsstelle den Systemdiensten bekannt gemacht; in der zweiten wird beschrieben, wo im Verzeichnis nach den Anmeldeinformationen gesucht werden soll. Beide Dateien sind im Anhang ( Punkte 10.6.2, 10.6.3, Seite viii) aufgeführt. 4. Damit auch das Heimlaufwerk automatisch gemountet wird, müssen noch zwei Dateien des Automounters konfiguriert werden ( Anhang Punkt 10.6.4, Seite ix: /etc/auto.master und /etc/auto.home ). Abschließend muss dafür gesorgt werden, dass dieser beim Systemstart automatisch gestartet wird. Um sicher zu stellen, dass die Anmeldung nicht über die Server-seitige oder lokale /etc/passwd -Datei geschieht, wurde der Test-Benutzer hieraus jeweils gelöscht. Nach einem Neustart des Test-Systems war eine Anmeldung über den Verzeichnisdienst möglich, und das Heimlaufwerk wurde gemountet. Auch konnte der Test-Benutzer in gewohnter Weise seine E-Mails abrufen. Dies war zunächst überraschend, da von einer Seite 9

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung zeitaufwendigen Änderung der Konfiguration des POP3-Dienstes ausgegangen wurde. Dieser verwendet zur Authentifizierung jedoch Routinen der normalen Systemdienste, deren Konfiguration bereits geändert wurde. Auf der Seite der Linux-Clients waren damit die erforderlichen Änderungen exemplarisch durchgeführt. 4.7 Konfiguration von Samba Damit die freigegebenen Heimlaufwerke auch von Windows aus erreichbar sind, musste Samba neu konfiguriert werden. Um jedoch die Möglichkeit der Authentifizierung über den Verzeichnisdienst zu nutzen, hätte Samba bereits vor der Installation mit bestimmten Parametern übersetzt werden müssen, was nicht geschehen war; daher war eine erneute Übersetzung und Installation nötig. Da auch hier empfohlen wird, eine möglichst neue Version zu nutzen, wurde die Version 2.2.7a von www.samba.org heruntergeladen. Beim Ausführen des Configure-Skripts zur Erstellung der Makefiles wurde der Parameter --with_ldap angegeben. Bevor Samba installiert werden kann, muss das Verzeichnis darauf vorbereitet werden, die neu hinzukommenden Attribute, die von Samba benötigt werden, aufzunehmen. Dazu muss eine Schemaerweiterung durchgeführt werden, wozu in der Konfigurationsdatei von OpenLDAP die samba.schema -Datei eingebunden werden muss, die unter anderem erlaubt, Attribute wie ntpassword und lmpassword zu setzen, in denen später die verschlüsselten Passwörter gespeichert werden. Nun beginnt eine kritische Phase, in der die alte Samba-Installation entfernt und die neue installiert werden muss. In dieser Phase ist der Server-Betrieb beeinträchtigt, da ein Zugriff auf die Freigaben von Windows aus nicht möglich ist. Daher wurden hier zum einen vorher die Benutzer per E-Mail über den Ausfall informiert und zum anderen wurde dieser Schritt nach 18.00 Uhr durchgeführt. Im Gegensatz zur Installation des Verzeichnisdienstes traten bei Samba keine Schwierigkeiten während der Installation auf. Um die Verzeichniseinträge und die von Samba benötigten Attribute zu erweitern, wäre es möglich, diese von Hand über das Perl-Skript hinzuzufügen. Einfacher ist es jedoch, das von Samba mitgelieferte Tool smbpasswd zu benutzen. Hat man Samba mit LDAP-Unterstützung kompiliert, unterstützt dieser Befehl einen weiteren Parameter, über den die Samba-Tools das Passwort des Verzeichnisdienst-Administrators mitgeteilt Seite 10

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung bekommen. Anschließend ist es möglich, über smbpasswd dem Verzeichnisdienst Benutzer hinzuzufügen. Trotz dieser Schritte blieben die Freigaben von Windows aus unerreichbar. Eine Echtzeit-Analyse der Log-Dateien Sambas lieferte folgendes Ergebnis: Auszug aus Log-Datei: /usr/local/samba/var/log.smbd [2003/03/12 18:26:30, 0] passdb/pdb_ldap.c:pdb_getsampwnam(859) LDAP search "(&(uid=test)(objectclass=sambaaccount))" returned 0 entries. Wie aus dem Auszug der Log-Datei ersichtlich, konnte der LDAP-Server angesprochen werden und die beiden Suchparameter des Benutzernamens test und der Objektklasse sambaaccount wurden erkannt und verwendet. Ein entsprechender Eintrag konnte jedoch nicht gefunden werden ( returned 0 entries ), obwohl dieser vorhanden war. Da also auf Client-Seite kein Fehler erkennbar war, beschränkte sich die Fehlersuche auf die Konfigurationsdateien des Servers. Hier sind in der Konfigurationsdatei des Open- LDAP-Servers zur schnelleren Suche Indizes auf bestimmte Attribute gesetzt worden, so auch auf das Attribut uid. Nachdem diese Zeile auskommentiert wurde war auch ein Zugriff von Windows-Maschinen aus möglich. Ein Zusammenhang war zwar nicht direkt erkennbar, jedoch ist dieses Problem mittlerweile bekannt und wird derzeit in Internet-Foren diskutiert. 4.8 Umstellen der Clients auf den verzeichnisorientierten Login Nachdem auch der Zugriff von Windows aus erfolgreich getestet wurde, konnte die Umstellung der Client-Rechner beginnen. Dazu hätten die in Punkt 4.6 bereits beschriebenen Schritte durchgeführt werden können. Da sich allerdings die Konfigurationsdateien des einzurichtenden LDAP-Clients, der Systemanmeldung und des Automounters von Client zu Client nicht unterscheiden, wurden diese auf einer öffentlichen Freigabe zur Verfügung gestellt und konnten einfach in die entsprechenden Verzeichnisse auf den jeweiligen Client kopiert werden. 5 Qualitätssicherung Einschalt- und Funktionstests wurden bereits in der praktischen Phase des Projekts durchgeführt und bei Fehlschlag an entsprechender Stelle mit den Lösungsansätzen und Lösungen dokumentiert. Seite 11

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Zur Qualitätssicherung wurden abschließend erneut alle Tests durchgeführt, um die Funktionalität während des Betriebes sicher zu stellen. Alle Tests mit Ihren Ergebnissen sind im Testprotokoll im Anhang ( Punkt 10.9, Seite xii) einzusehen. Exemplarisch sind im Folgenden die Durchführungen der Funktionstests für den Verzeichnisdienst, dessen kompilierte Dateien und Gossip beschrieben. 5.1 Funktionstest der kompilierten OpenLDAP-Dateien Vor der Installation des OpenLDAP-Servers wurde ein Test der kompilierten Dateien durchgeführt, der leider fehlschlug. Die erste Fehlersuche konzentrierte sich auf die bereits angesprochenen Kompatibilitäts-Probleme zwischen der Datenbank und OpenLDAP. Daraufhin wurde die Entscheidung getroffen, die neuste Version der Berkeley-Datenbank herunter zu laden und deren Quellen dem Kompiliervorgang von OpenLDAP zur Verfügung zu stellen. Leider erwies sich dieser Ansatz als falsch. Auch ein Patch der Sourcen, der evtl. das Problem beheben könnte, führte zu keinem Ergebnis, da er für eine ältere Version geschrieben worden war. Erst nach einer weiteren, recht zeitintensiven Suche ließ sich der Fehler darauf zurückführen, dass der Kompiliervorgang auf einem DNS-Server durchgeführt wurde. Dadurch wurden Bibliotheken der DNS-Software bind eingebunden, die eine zu dieser Version des OpenLDAP-Servers inkompatible Funktion beinhalten (konkret handelt es sich um die C-Funktion getaddrinfo, die für die DNS-Namensauflösung zuständig ist). Nachdem das Einbinden der bind-bibliotheken durch Manipulation des Configure-Skripts verhindert wurde, wurden stattdessen die Linux-eigenen verwendet, die zu OpenLDAP kompatible Funktionen beinhalten. Nach diesen Veränderungen verlief der Test erfolgreich. 5.2 Funktionstest: Verzeichnisdienst Um die grundlegenden Funktionen des Verzeichnisdienstes zu testen, wurden mittels des Kommandozeilen-Tools ldapsearch Anfragen an den Verzeichnisdienst gestellt und deren Ausgabe geprüft. Mit Hilfe der Tools ldapadd und ldapdelete wurde geprüft, ob Schreibrechte richtig vergeben wurden und der Schreibzugriff auf das Verzeichnis generell funktioniert. Eine Anfrage mittels ldapsearch und entsprechendem Ergebnis kann im Anhang beispielhaft ( Punkt 10.8, Seite xi) eingesehen werden. Bei diesen Tests traten keinerlei Probleme auf. Seite 12

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung 5.3 Funktionstest: Gossip Das Systemüberwachungstool Gossip verfügt über eine Telnet-Schnittstelle, anhand derer sich die Funktion von Gossip überprüfen lässt. Mitschnitt der Telnet-Verbindung Z:\>telnet neo.matrix.bi.fhg.de 11090 Gossip@neo.matrix.bi.fhg.de help err - show error messages mes - show messages mesp - send messages pickled tests - show tests test <Name> - make test reload - reload tests and systems doc test - display file./doc/test doc - list documentation files within./doc <empty> - disconnect test Verzeichnisdienst mes ['2003-03-17 15:06:29', 'neo.matrix.bi.fhg.de', 'Verzeichnisdienst'] ok neo.matrix.bi.fhg.de, objectclass=organization, o: Fraunhofer Gesellschaft Wie aus dem Mitschnitt der Telnet-Verbindung erkennbar ist, ist die Telnet- Schnittstelle von Gossip ansprechbar und dieser über die entsprechenden Befehle test Verzeichnisdienst und mes bedienbar. Der Test verlief problemlos: Gossip meldet ordnungsgemäß den Status des zu testenden Verzeichnisdienstes mit ok. 5.4 Belastungstest: Verzeichnisdienst Eine Systemanmeldung am Client inklusive Verbindungsaufbau zum Verzeichnisdienst, Übermitteln und Überprüfen der Anmeldeinformationen und Verbindungsab- bau geschieht in weniger als 0,5 Sekunden. Da im Normalbetrieb durchschnittlich von maximal zwei Anmeldungen pro Stunde ausgegangen wird, sind Belastungstests des Verzeichnisdienstes für dieses Projekt irrelevant. 6 Abweichungen vom Projektantrag Es wurden keine Änderungen des Projektantrags vorgenommen; lediglich in der Zeitplanung der Projektphasen traten einige Verschiebungen auf. Als Grundlage für die Beschreibung dieser Abweichungen dient die detaillierte Tabelle der Projektphasen, in der die geplante Zeit der tatsächlich benötigten Zeit gegenübergestellt ist ( Anhang Punkt 10.3, Seite v). Seite 13

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung Wie bereits in der Durchführung erwähnt bereitete die Installation des Verzeichnisdienstes Schwierigkeiten und verlängerte diese Projektphase um zwei Stunden, wofür das Skript zum Anlegen von Benutzern etwas einfacher ausfallen musste. Die in der Summe zuviel benötigte Zeit von einer Stunde konnte in der abschließenden Testphase ausgeglichen werden, da hier keine Fehler auftraten. 7 Soll-Ist-Vergleich Die in Punkt 1.1 Motivation und Zielsetzung genannten Ziele wurden erreicht. Der Verzeichnisdienst wurde erfolgreich installiert und ist sowohl für die Freigaben als auch für die für die Zwecke der Systemanmeldung und der Authentifizierung des POP3- Dienstes konfiguriert. Die Benutzerverwaltung konzentriert sich somit auf einen zentralen Punkt: das Verzeichnis. Auch das Skript zur Migration der Benutzerkennungen wurde erfolgreich getestet und eingesetzt. Die Benutzerverwaltung wird dadurch erheblich einfacher und übersichtlicher und ist weniger fehleranfällig als zuvor. Die automatisierte Systemüberwachung meldet erfolgreich den Status des Verzeichnisdienstes auf der Webseite. 8 Alternativen und Entscheidungen Neben dem verwendeten OpenLDAP-Server existieren noch weitere Verzeichnisdienste auf dem Markt. Die bekanntesten sind das Active Directory von Microsoft, das edirectory (vormals NDS) von Novell und der Netscape Directory Server. Das Active Directory hätte den Vorteil, dass es bereits auf dem Windows 2000 Domänen-Controller installiert ist, jedoch den Nachteil, dass die Windows-Maschinen von einem anderen Administratorkreis verwaltet werden, und der aufgesetzte Verzeichnisdienst von den Administratoren verwaltet werden sollte, die auch die Hoheit über die in diesem Projekt geänderten Linux-Dienste haben. Die Konkurrenzprodukte von Netscape und Novell überzeugen mit zusätzlichen Tools wie z. B. einer grafischen Bedienoberfläche auf Java-Basis, auf die aber verzichtet werden kann, da die spätere Benutzerverwaltung ohnehin über ein eigenes Perl-Skript abläuft. Die Entscheidung fiel auf den OpenLDAP-Server, da dieses Produkt nicht so umfangreich ist, wie die Pendants aus dem kommerziellen Bereich und dadurch leichter zu Seite 14

Aufsetzen eines OpenLDAP Verzeichnisdienstes zur zentralen Linux-Benutzerverwaltung handhaben und einfacher zu verstehen ist. Des Weiteren bedeuten zusätzliche Funktionen auch zusätzliche Fehlerquellen, sei es in der Funktionsweise, als auch in der Bedienung des Servers. Daher reicht dieser vergleichbar kleine Server für dieses Projekt vollkommen aus. Ein Kostenvergleich der letzen drei Produkte erwies sich als unnötig, da im hier vorhandenen nicht kommerziellen Bereich keine Kosten anfallen, wenn eine bestimmte Anzahl von mehreren tausend Verzeichniseinträgen nicht überschritten wird. 9 Reflexion, Fazit und Ausblick Rückblickend kann über das Projekt gesagt werden, dass die vorgenommenen Projektziele erreicht und die Schwächen des alten Systems behoben wurden. Die Administration hat sich erheblich vereinfacht und ist weniger fehleranfällig. Innerhalb der Projektphasen traten zwar geringe Zeitverschiebungen auf, jedoch konnte die für dieses Projekt geplante Zeit von 35 Stunden eingehalten werden. Die Administratoren kamen mit der für sie geschriebenen Anleitung zurecht, so dass von dieser Seite aus positive Rückmeldungen kamen, was das neue Verwaltungssystem und dessen Handhabung angeht. Auch von Seiten der Benutzer kamen bei Nachfragen keine Beschwerden über nicht funktionierende Dienste oder zu lange Anmeldezeiten. Zusammenfassend sind alle beteiligten Personen mit dem Gesamtergebnis des Projekts zufrieden. Auch haben sich die geplante Reihenfolge und Vorgehensweise in diesen Projektphasen bewährt. Eine Fortsetzung des Projekts ist durchaus möglich: Vor allem das Skript zur Benutzermigration kann zur Benutzerverwaltung erweitert werden, wenn hier noch entsprechende Punkte zum Anlegen neuer Benutzer und eine Gruppenverwaltung programmiert werden. Der Grundstein für diese Möglichkeit wurde bereits während des Projekts durch Anlegen der entsprechenden Verzeichniscontainer gelegt. Des Weiteren besteht die Möglichkeit bei den Benutzereinträgen auch Zertifikate, Mail-Adressen und die dazugehörigen öffentlichen Schlüssel zu verwalten, sodass die E-Mail-Clients bei Eingabe eines Namens automatisch das Verzeichnis nach der passenden Mailadresse durchsuchen und die erstellte Mail anschließend verschlüsselt und digital signiert verschicken. Denkbar ist auch eine Fortsetzung mit Blick auf die Windows-Welt. Hier ist z. B. ein Datenabgleich mit dem Active Directory möglich. Mit diesem Schritt lässt sich die Zusammenlegung der Benutzerverwaltung beider Plattformen realisieren. Seite 15

Anhang 10 Anhang 10.1 Dokumentation für Administratoren Diese Dokumentation beschreibt in einer Schritt-für-Schritt Anleitung die Arbeitsabläufe, die auf dem Client-PC (SuSE Linux) durchzuführen sind, um eine bestehende Benutzerkennung in das Verzeichnis zu migrieren und den Client in die zentrale Benutzerverwaltung aufzunehmen. 1. Nachinstallation der Pakete pam_ldap und nss_ldap, z. B. in Yast. 2. Über Yast in den erweiterten Netzwerkeigenschaften die Einstellungen für den lokalen LDAP-Client anpassen: a. LDAP-Server: neo.matrix.bi.fhg.de b. LDAP Such-Basis dc=matrix, dc=fhg, dc=de 3. Kopieren der Konfigurationsdatei ldap.conf in das Client-Verzeichnis /etc/openldap und der Konfigurationsdateien nsswitch.conf, auto.master und auto.home in das Client-Verzeichnis /etc. Die Dateien befinden sich in der öffentlichen Freigabe des Servers neo.matrix.bi.fhg.de im Verzeichnis ldap. 4. Eintragen des Automounters in die entsprechenden Runlevel-Verzeichnisse. 5. Starten des Perl-Skripts ldapuser.pl, welches sich auch in der bekannten Freigabe neos befindet. Für das gesamte Skript gilt, dass vordefinierte Eingabemöglichkeiten in eckigen Klammern [] vorgeschlagen und diese angenommen werden, wenn keine andere Eingabe stattfindet. a. Eingabe der Administratorkennung und des Passworts für den Verzeichnisdienst b. Menüpunkt 2 Benutzer migrieren auswählen c. Eingabe der erforderlichen Benutzerdaten d. Nach der Eingabe können über Menüpunkt 1 Benutzer anzeigen zur Kontrolle alle eingetragenen Benutzer ausgegeben werden. Bei Tippfehlern kann über Menüpunkt 3 Benutzer löschen der Benutzer aus dem Verzeichnis entfernt werden. e. Beenden des Programms mit leerer Eingabe. Seite i

Anhang 10.2 Perl-Skript zur LDAP-Benutzerverwaltung #! /usr/bin/perl -w # Einbinden der Perl LDAP-Module ############################################# # Die Module enthalten vordefinierte Funktionen und Objekte, mit denen # einfacher auf ein Verzeichnis zugegriffen werden kann. use Net::LDAP; use Net::LDAP::Entry; # Erstellen eines LDAP-Objektes ############################################## # Hier wird der Maschinenname und die zu verwendende LDAP-Version bekannt # gemacht. Die Versionsangabe ist wichtig, weil damit neuere Funktionen zum # Verzeichniszugriff (Lese- und Schreiboperationen) verwendet werden können. $ldap = Net::LDAP->new('neo.matrix.bi.fhg.de', version => 3) or die "$@"; # Einlesen der Verbindungsinformationen ###################################### # Einmalig muss eine Verbindung zum LDAP-Server hergestellt werden. Dazu muss # der DN des Directory-Admins mit dem zugehörigen Passwort eingegeben werden. $rec_ldapadmin = "cn=admin, dc=fhg, dc=de"; print "Bitte geben Sie den DN des Directory-Admin ein [$rec_ldapadmin]: "; $new_ldapadmin = <STDIN>; chomp ($new_ldapadmin); if ($new_ldapadmin eq "") { $new_ldapadmin = $rec_ldapadmin; } # Aus Sicherheitsgründen wird das Echo während der Eingabe des Passworts # deaktiviert, sodass es nicht auf dem Bildschirm erscheint print "Bitte geben Sie Passwort des Directory-Admin ein: "; system ("stty -echo"); $new_ldappasswd = <STDIN>; system ("stty echo"); print ("\n"); chomp ($new_ldappasswd); # Verbindungsaufbau zum LDAP-Server ########################################## # Schlägt diese grundlegende Funktion fehl, wird das Programm mit der Ausgab # einer Fehlermeldung und der dazugehörigen Begründung beendet. $mesg = $ldap->bind ( dn => "$new_ldapadmin", password => "$new_ldappasswd" ); die("verbindung fehlgeschlagen: ",$mesg->error,"\n") if $mesg->code(); print "Verbindung erfolgreich\n"; # Auswahlmenü ausgeben und Eingabe auswerten ################################# do { print "\n"; print "1 - Benutzer anzeigen\n"; print "2 - Benutzer migrieren\n"; print "3 - Benutzer loeschen\n"; print "NULL beendet das Programm\n"; print ":"; $menu = <STDIN>; chomp ($menu); print "\n"; # Ausgabe aller im Verzeichnis enthaltenen Benutzer ########################## # mit den Attributen uid und cn ( common name, also vollständiger Name). Seite ii

Anhang if ($menu eq "1") { $mesg = $ldap->search ( base => "dc=matrix, dc=fhg, dc=de", filter => "(uid=*)" ); foreach $entry ($mesg->all_entries) { $tmp_cn=$entry->get_value('cn'); $tmp_uid=$entry->get_value('uid'); print "uid: $tmp_uid, cn: $tmp_cn\n"; } # Migration eines Benutzers ################################################## # Dazu werden alle nötigen Personeninformationen eingelesen. } elsif ($menu eq "2") { print "Bitte geben Sie den Nachnamen des neuen Benutzers ein: "; $new_sn = <STDIN>; # surname chomp ($new_sn); print "Bitte geben Sie den Vornamen des neuen Benutzers ein: "; $new_gn = <STDIN>; # given name chomp ($new_gn); print "Bitte geben Sie das Passwort des neuen Benutzers ein: "; system ("stty -echo"); $new_userpassword = <STDIN>; system ("stty echo"); print ("\n"); chomp ($new_userpassword); print "Bitte geben Sie die User ID des neuen Benutzers ein: "; $new_uidnumber = <STDIN>; chomp ($new_uidnumber); $rec_uid = $new_gn; # recommended login name $rec_uid =~ tr/a-z/a-z/; print "Bitte geben Sie den login-namen ein [$rec_uid]: "; $new_uid = <STDIN>; chomp ($new_uid); if ($new_uid eq "") { $new_uid = $rec_uid; } $rec_gidnumber = 10; # recommended group ID print "Bitte geben Sie die Group ID ein [$rec_gidnumber]: "; $new_gidnumber = <STDIN>; chomp ($new_gidnumber); if ($new_gidnumber eq "") { $new_gidnumber = $rec_gidnumber; } $rec_homedirectory = "/home/$new_uid"; # recommended home directory print "Bitte geben Sie das Heimverzeichnis ein [$rec_homedirectory]: "; $new_homedirectory = <STDIN>; chomp ($new_homedirectory); if ($new_homedirectory eq "") { $new_homedirectory=$rec_homedirectory; } $rec_loginshell = "/bin/bash"; # recommended login shell print "Bitte geben Sie die Login-Shell ein [$rec_loginshell]: "; $new_loginshell = <STDIN>; chomp ($new_loginshell); if ($new_loginshell eq "") { $new_loginshell = $rec_loginshell; } $rec_ldapbase = "o=auth_user, dc=matrix, dc=fhg, dc=de"; print "Bitte geben Sie die LDAP-Base ein [$rec_ldapbase]: "; $new_ldapbase = <STDIN>; chomp($new_ldapbase); if ($new_ldapbase eq "") { $new_ldapbase = $rec_ldapbase; } # Erzeugen des neuen DN (distinguished name) $dn = "uid=$new_uid, $new_ldapbase"; Seite iii

Anhang # Erzeugen des neuen CN (common name) $cn = "$new_gn $new_sn"; # Hinzufügen des neuen Eintrags in das Verzeichnis ########################### # Schlägt dieser Schritt fehl, so wird die Fehlermeldung Hinzufügen nicht # möglich mit der dazugehörigen Begründung ausgegeben. $mesg = $ldap->add ( "$dn", attrs => [ 'uid' => "$new_uid", 'cn' => "$cn", 'objectclass' => ['account', 'posixaccount', 'top', 'shadowaccount'], 'userpassword' => "$new_userpassword", 'shadowlastchange' => "11472", 'shadowmax' => "99999", 'shadowwarning' => "7", 'uidnumber' => "$new_uidnumber", 'gidnumber' => "$new_gidnumber", 'homedirectory' => "$new_homedirectory", 'loginshell' => "$new_loginshell" ] ); $mesg->code && print "Hinzufuegen nicht moeglich: ",$mesg->error; print "Benutzer erfolgreich hinzugefuegt.\n"; # Hinzufügen der Samba-Verzeichniseinträge in das Verzeichnis ################ # Dazu wird der Befehl smbpasswd ausgeführt, der dem Verzeichniseintrag # automatisch die benötigten Samba-Attribute hinzufügt. print "Bitte geben Sie Ihr Samba-Passwort ein:\n"; system ("/usr/local/samba/bin/smbpasswd -a $new_uid"); # Löschen eines Benutzers #################################################### # Bei Fehlschlag wird eine Fehlermeldung mit entsprechender Begründung aus- # gegeben } elsif ($menu eq "3") { print "Bitte geben Sie die LDAP-uid des zu loeschenden Benutzers ein:"; $deluid = <STDIN>; chomp ($deluid); } $rec_delbase = "o=auth_user, dc=matrix, dc=fhg, dc=de"; print "Bitte geben Sie die LDAP-Base an [$rec_delbase]:"; $delbase = <STDIN>; chomp ($delbase); if ($delbase eq "") { $delbase = $rec_delbase; } $mesg = $ldap->delete ("uid=$deluid, $delbase"); $mesg->code && print "Loeschen nicht moeglich:",$mesg->error; print "Benutzer erfolgreich geloescht.\n"; # Abbruchbedingung der Menü-Schleife ######################################### } while ($menu ne ""); # Abbau der Verbindung zum LDAP-Server und Beenden des Programms ############# print "Ende.\n"; $ldap->unbind; exit (0); Seite iv

Anhang 10.3 Projektphasen, Vorgangsliste und Zeitvergleich Nr. Projektphasen Vorgänger Zeit in Stunden geplant benötigt 1 Aufbau des Verzeichnisdienstes - 7 9 2 Backup des bestehenden Systems - 3 Nachinstallation benötigter Softwarepakete 2 4 Systemupdate auf SuSE Version 8.1 2 5 Installation des Verzeichnisdienstes 4 6 Planung der Verzeichnisstruktur - 7 Konfiguration des Verzeichnisdienstes 5 8 Integration des Verzeichnisdienstes in die automatisierte 1 1 1 Systemüberwachung 9 Benutzerverwaltung 1 4 3 10 Erstellen eines Perl-Skripts zur Benutzermigration - 11 Migrieren der Benutzerkennungen über das Skript 1 12 Konfiguration des Servers 1 5 5 13 Umstellen der System-Anmeldung auf den Ver- 1 zeichnisdienst 14 Ändern des POP3-Dienstes auf den Verzeichnis- 1 dienst 15 Neuinstallation und Konfiguration von Samba 1 16 Konfiguration der Clients 1,9,12 3 3 17 Nachinstallieren benötigter Softwarepakete - 18 Anpassen der Konfigurationsdateien 1,9,12 19 Testen verschiedener Szenarien 8,16 3 2 20 Erstellen der Einweisungsdokumentation 16 1 1 21 Erstellen der Projektdokumentation 1-20 10 10 22 Übergabe bzw. Abnahme des Projekts 21 1 1 Summe 35 35 Seite v

Anhang 10.4 Kosten- und Ressourcenplanung Für Miete, Strom, Wasser und Ähnliches ist keine detaillierte Kostenaufstellung nötig, da diese Punkte bereits im Stundensatz inbegriffen sind. 10.4.1 Verwendete Hard- und Software Hardware Begründung der Kosten Preis Verzeichnisdienst-Server neo DNS-Name: neo.matrix.bi.fhg.de CPU: Pentium III, 500 MHz RAM: 256 MB HDD 1: 9 GB SCSI (System) HDD 2: 30 GB IDE (Daten) Betriebssystem: SuSE Linux 8.1 Der Server besteht bereits, und es musste keine weitere Hardware beschafft werden. 0 EUR Arbeitsplatz-Computer rei DNS-Name: rei.matrix.bi.fhg.de CPU: Pentium III, 800 MHz RAM: 512 MB HDD 1: 40 GB IDE (Systeme) HDD 2: 40 GB IDE (Daten) Betriebssysteme: Windows XP, SuSE Linux 8.1 Test-Client dirtest DNS-Name: dirtest.matrix.bi.fhg.de CPU: Pentium III, 500 MHz Betriebssystem: SuSE Linux 8.1 Der Arbeitsplatz-PC gehört zur Grundausstattung und ist im Stundensatz enthalten. Der Test-Client wurde dem Projekt für zwei Tage zur Verfügung gestellt. 0 EUR 0 EUR Software Begründung der Kosten Preis SuSE Linux 8.1 Open Source Software 0 EUR OpenLDAP Open Source Software von 0 EUR www.openldap.org Samba Open Source Software von 0 EUR www.samba.org NSS- und PAM-Module Open Source Software von 0 EUR www.padl.com Summe 0 EUR 10.4.2 Arbeitszeiten Personen Kosten pro Stunde Arbeitszeit Preis Karsten Reineck 35 EUR 35 Std. 1225 EUR Wolfgang Strobl 95 EUR 1 Std. 95 EUR Summe 1320 EUR Seite vi

Anhang 10.5 Auszug aus dem Verzeichnisbaum de FhG dn: dc=fhg, dc=de dc: fhg o: Fraunhofer Gesellschaft objectclass: dcobject objectclass: organization matrix dn: dc=matrix, dc=fhg, dc=de dc: matrix ou: Matrix objectclass: dcobject objectclass: organization admin dn: cn=admin, dc=fhg, dc=de cn: admin objectclass:organizationalrole dn: ou=auth_user, dc=matrix, dc=fhg, dc=de ou: auth_user objectclass: organization auth_group auth_user steffi irenaeus mareike kai karsten christian daniel michael dn: uid=karsten, ou=auth_user, dc=matrix, dc=fhg, dc=de uid: karsten cn: Karsten Reineck objectclass: account objectclass: posixaccount objectclass: top objectclass: shadowaccount userpassword: <verdeckt> shadowlastchange: 11472 shadowmax: 99999 shadowwarning: 7 uidnumber: 500 gidnumber: 10 homedirectory: /home/karsten loginshell: /bin/bash Seite vii

Anhang 10.6 Konfigurationsdateien 10.6.1 Konfigurationsdatei des OpenLDAP-Servers Datei: slapd.conf # Einbinden der Schemata include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/nis.schema include /usr/local/etc/openldap/schema/inetorgperson.schema include /usr/local/etc/openldap/schema/samba.schema # Festhalten der Prozess-ID in einer Datei pidfile /usr/local/var/slapd.pid argsfile /usr/local/var/slapd.args allow bind_v2 database bdb # Datenbank: Berkeley Database (BDB) suffix "dc=fhg, dc=de" # Wurzel des Baumes rootdn rootpw directory "cn=admin, dc=fhg, dc=de" # Administrator-Account {SSHA}JcuJAdur+MVkfsQRJnQg9624jf/dzpWQ /usr/local/var/openldap-data index objectclass eq # Folgende Zeile wurde auskommentiert, damit Samba die entsprechenden index uid pres,eq # Einträge findet. 10.6.2 Konfigurationsdatei der LDAP-Clients Datei: /etc/openldap/ldap.conf # LDAP-Server. Der DNS-Name muss ohne LDAP-Server auflösbar sein. HOST neo.matrix.bi.fhg.de # Der DN der Such-Basis. BASE dc=matrix, dc=fhg, dc=de # Gibt die Attribute an, nach denen gesucht werden soll. pam_filter objectclass=posixaccount # Das Attribut, in denen der login-name steht pam_login_attribute uid # Informationen für die NSS-Module, an welcher Stelle im Verzeichnisdienst # nach den Benutzerdaten gesucht werden soll. nss_base_passwd ou=auth_user,dc=matrix,dc=fhg,dc=de?one nss_base_shadow ou=auth_user,dc=matrix,dc=fhg,dc=de?one nss base group ou=auth group,dc=matrix,dc=fhg,dc=de?one 10.6.3 Konfigurationsdatei der Systemanmeldung Auszug aus Datei: /etc/nsswitch.conf passwd: files ldap # Festlegung der Such-Reihenfolge an welchen Stellen group: files ldap # bei der Systemanmeldung und den Systemdiensten shadow: ldap files # nach Benutzerinformationen gesucht werden soll. Seite viii

Anhang 10.6.4 Konfigurationsdateien des Automounters Datei: /etc/auto.master # Hier wird festgelegt, wo der Automounter im lokalen Dateisystem greifen # soll (/home) und wo die genauere Beschreibung zu dieser Freigabe zu # finden ist (/etc/auto.home). /home /etc/auto.home --timeout 60 Datei: /etc/auto.home # Hier wird festgelegt, mit welchen Optionen die Freigabe gemountet werden # soll, so z.b. das Dateisystem (NFS) und Schreib- und Lesemöglichkeit # (rw). Letzter Parameter ist die Quelle der Freigabe, also Computer (neo) # und Freigabename (home). Das schließende & dient als Variable für den # Benutzernamen. * -fstype=nfs,rw,soft,intr,rsize=8192,wsize=8192 neo.matrix.bi.fhg.de:/home/& 10.7 Systemüberwachungstool Gossip 10.7.1 Python-Skript zum Testen des Verzeichnisdienstes Datei: ldaptest.py # Wolfgang Strobl 2003-03-11 import os, string # params[0]: host # params[1]: filter # params[2]: vergleich def main(params): message = [] cmd = "/usr/local/bin/ldapsearch -x -h %s '%s' 2>&1" % (params[0], params[1]) f = os.popen(cmd) ret = f.readlines() exit = f.close() if exit : message.append(params[0]) message.extend(ret) else: for line in ret: if string.rstrip(line) == params[2]: break else: message.append("'%s' bei %s nicht gefunden" % (params[1], params[0])) if len(message) == 0: return ["ok", string.join(params, ", ")] else: return message Seite ix