111 lines
5.2 KiB
TeX
111 lines
5.2 KiB
TeX
\subsection{LDAP}
|
|
\label{sub:ldap}
|
|
|
|
\begin{sloppypar}
|
|
Wir haben uns für den OpenLDAP-Server entschieden. Dazu haben wir als Basis-\emph{dn}:
|
|
\begin{center}
|
|
\emph{dc=zotac,dc=lctp}
|
|
\end{center} festgelegt.
|
|
Die Benutzer legten wir unter
|
|
\begin{center}
|
|
\emph{dn: ou=users,dc=zotac,dc=lctp},
|
|
\end{center}
|
|
die Gruppen unter
|
|
\begin{center}
|
|
\emph{dn: ou=groups,dc=zotac,dc=lctp}
|
|
\end{center}
|
|
ab. Für den Import dieser \emph{dn}s haben wir eine Datei
|
|
\emph{/etc/openldap/base.ldif} (siehe \emph{aufgabe3.5/base.ldif}) erstellt. An
|
|
verfügbaren Schemen haben wir \emph{core, cosine, inetorgperson, nis}
|
|
eingestellt (siehe \emph{aufgabe3.5/slapd.conf}).
|
|
|
|
\end{sloppypar}
|
|
|
|
\subsubsection{Absicherung und Zugriff}
|
|
|
|
Wir haben die Zugriffsrechte so konfiguriert, dass jeder Benutzer sein eigenes
|
|
Passwort ändern, aber niemand das Passwort auslesen darf (darf nur zur
|
|
Authentifizierung abgerufen werden). Alle anderen Attribute dürfen von allen
|
|
Users gelesen werden. (siehe \emph{aufgabe3.5/slapd.conf})
|
|
|
|
Damit auf den Verzeichnisdienst zugegriffen werden kann, haben wir eine Datei
|
|
\emph{/etc/ldap.secret} mit dem Passwort für den Administrator-Account in LDAP
|
|
angelegt, die nur durch \emph{root} zugreifbar ist (\emph{chmod 600}).
|
|
|
|
\subsubsection{Client-Konfiguration (Headnode und Computenode)}
|
|
|
|
\begin{sloppypar}
|
|
Hierfür haben wir die Variablen \emph{BASE, URI, TIMEOUT, NETWORK\_TIMEOUT} in
|
|
\emph{/etc/openldap/ldap.conf} entsprechend konfiguriert (siehe \emph{aufgabe3.5/ldap.conf}).
|
|
\end{sloppypar}
|
|
|
|
\paragraph{nsswitch}
|
|
|
|
Damit die Standard-Unix-Dienste auf die Benutzer aus LDAP zurückgreifen können,
|
|
haben wir \emph{/etc/nss\_ldap.conf} entsprechend konfiguriert (siehe
|
|
\emph{aufgabe3.5/nss\_ldap.conf}), sowie in \emph{/etc/nsswitch.conf} unter
|
|
\emph{files, shadow, group} jeweils noch \emph{ldap} hinzugefügt (siehe \emph{aufgabe3.5/nsswitch.conf}).
|
|
|
|
Dabei mussten wir darauf achten, dass in der \emph{nss\_ldap.conf} die
|
|
Bind-Policy auf \emph{soft} gesetzt wird, da es andernfalls beim Boot zu einer Race-Condition kommen kann, wenn der LDAP-Server noch nicht gestartet ist und das System dennoch versucht, über LDAP User-Daten abzufragen.
|
|
|
|
\paragraph{PAM}
|
|
|
|
Um die PAM-Authentifizierung nutzen zu können, haben wir unter \emph{/etc/pam.d}
|
|
folgende Dateien geändert (siehe Dateien in \emph{aufgabe3.5/pam.d}):
|
|
\begin{itemize}
|
|
|
|
\item \emph{system-auth}:
|
|
\begin{lstlisting}
|
|
auth sufficient pam_ldap.so
|
|
session required pam_exec.so /usr/local/bin/first-login
|
|
\end{lstlisting}
|
|
|
|
\item \emph{sudo} und \emph{su}:
|
|
\begin{lstlisting}
|
|
auth sufficient pam_ldap.so
|
|
\end{lstlisting}
|
|
|
|
\item \emph{passwd}:
|
|
\begin{lstlisting}
|
|
password sufficient pam_ldap.so
|
|
\end{lstlisting}
|
|
|
|
\end{itemize}
|
|
|
|
\begin{sloppypar}
|
|
Damit ist sichergestellt, dass sich die LDAP-Benutzter authentifizieren können,
|
|
sowie \emph{sudo} und \emph{su} benutzen und ihr Passwort mit \emph{passwd} ändern können.
|
|
|
|
Durch die Zeile mit \emph{pam\_exec.so} wird bei jedem Login das Script
|
|
\emph{first-login} (siehe \emph{aufgabe3.5/first-login}) ausgeführt; das ist faktisch das Script aus Aufgabe 2.3, nur angepasst für die Einbindung in PAM. Dieses wird generell nur ausgeführt, wenn das Home-Verzeichnis des Nutzers noch nicht existiert.
|
|
|
|
Das Script erstellt das Home-Verzeichnis des Nutzers, ändert den Besitzer und
|
|
die Gruppe des Verzeichnisses entsprechend, erzeugt ein Public-Private-Key-Paar
|
|
für SSH, kopiert eine Beispiel-SSH-Konfiguration in sein Home-Verzeichnis und
|
|
trägt den eigenen Public-Key in die \emph{authorized\_keys} ein, so dass der Benutzer sich fortan auf allen Nodes einloggen kann.
|
|
\end{sloppypar}
|
|
|
|
\paragraph{Anlegen und Löschen von Benutzern}
|
|
|
|
Zum Anlegen und Löschen von Benutzern aus einer Text-Datei (wie in der Aufgabe
|
|
gefordert) haben wir die Scripte \emph{ldap-users2ldif} (erstellt einen
|
|
\emph{.ldif} Output anhand der Text-Datei), \emph{ldap-add-ldif} (fügt die im
|
|
\emph{.ldif} Format vorliegenden Benutzerbeschreibungen zur LDAP-Datenbank
|
|
hinzu) und \emph{ldap-delete-users} (löscht die in einer Text-Datei
|
|
aufgelisteten Benutzer aus der LDAP-Datenbank) geschrieben (siehe Dateien in
|
|
\emph{aufgabe3.5/ldap-tools}).
|
|
|
|
Für eine Datei, z.B. \emph{user.txt}, die die hinzuzufügenden Benutzernamen zeilenweise enthält:
|
|
|
|
\begin{itemize}
|
|
\item \emph{sudo ldap-users2ldif user.txt > user.txt.ldif} \\
|
|
erstellt eine \emph{.ldif}-Datei; erstellt außerdem \emph{user.txt.passwords}, die die Benutzernamen und Passwörter zeilenweise enthält; die Benutzernamen werden escaped (nur Kleinbuchstaben, Zahlen und »\_«, invalide Zeichen durch »\_« ersetzt, »\_« am Anfang und am Ende gestript); Passwörter zufällig erzeugt (mindestens jeweils ein Großbuchstabe, Kleinbuchstabe, Sonderzeichen und mindestens eine Zahl, zwischen 10 und 16 Zeichen lang); bereits existierende Benutzer oder doppelt vorkommende Nutzer werden mit einer Warnmeldung quittiert und ignoriert
|
|
|
|
\item \emph{sudo ldap-add-ldif user.txt.ldif} \\
|
|
fügt die \emph{.ldif}-Datei zu LDAP hinzu
|
|
|
|
\item \emph{sudo ldap-delete-users user.txt.passwords} \\
|
|
löscht die in der erzeugten Datei \emph{user.txt.passwords} zeilenweise aufgelisteten Benutzer und entfernt ihr Home-Verzeichnis (diese Datei ist notwendig, weil die Benutzernamen unter Umständen escaped wurden)
|
|
\end{itemize}
|