<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>linux-blog - Fa. anracon - Dr. Mönchmeyer</title>
	<link>http://linux-blog.anracom.com</link>
	<description>Linux im Einsatz - Erfahrungsberichte, Tipps, Beispiele</description>
	<pubDate>Fri, 11 May 2012 15:28:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>Opensuse 12.1 - LDAP III</title>
		<link>http://linux-blog.anracom.com/2012/05/11/opensuse-121-ldap-iii/</link>
		<comments>http://linux-blog.anracom.com/2012/05/11/opensuse-121-ldap-iii/#comments</comments>
		<pubDate>Fri, 11 May 2012 15:28:13 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[LDAP]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/05/11/opensuse-121-ldap-iii/</guid>
		<description><![CDATA[In den letzten zwei Beiträgen zur LDAP-Installation unter Opensuse 12.1 hatte ich auf einem Testsystem &#8220;vms2.anracona.de&#8221; einen LDAP-Server installiert und diesen TLS-fähig gemacht. 
Ferner hatte ich auf diesem Server die YaST2-Clients zur Anwenderverwaltung eingerichtet. In diesem Zusammenhang hatten wir neben der Konfigurationsdatei 
&#8220;/etc/openldap/ldap.conf&#8221; 
auch die wichtige Konfigurationsdatei 
&#8220;/etc/ldap.conf&#8221; 
für PAM und NSS betrachtet. Allerdings haben [...]]]></description>
			<content:encoded><![CDATA[<p>In den letzten zwei Beiträgen zur LDAP-Installation unter Opensuse 12.1 hatte ich auf einem Testsystem &#8220;vms2.anracona.de&#8221; einen LDAP-Server installiert und diesen TLS-fähig gemacht. </p>
<p>Ferner hatte ich auf diesem Server die YaST2-Clients zur Anwenderverwaltung eingerichtet. In diesem Zusammenhang hatten wir neben der Konfigurationsdatei </p>
<p><strong>&#8220;/etc/openldap/ldap.conf&#8221;</strong> </p>
<p>auch die wichtige Konfigurationsdatei </p>
<p><strong>&#8220;/etc/ldap.conf&#8221;</strong> </p>
<p>für PAM und NSS betrachtet. Allerdings haben wir die User- und Gruppenverwaltung bislang nur lokal auf dem LDAP-Server selbst durchgeführt und getestet. Server- und Client-System waren also identisch. </p>
<p>In diesem Beitrag erinnern wir deshalb an die Skizze am Anfang des LDAP II-Artikels. Unser nächstes Ziel ist es, einen Zugriff auf den LDAP-Server von einem echten Opensuse 12.1-Client-System aus zu realisieren. Dieser Client sei im lokalen Testnetz unter der Adresse &#8220;vms1.anracona.de&#8221; erreichbar.     </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_vms1_vms2.png' alt='LDAP_vms2_vms1' /></p>
<p>Wir wollen auf dem System &#8220;vms1&#8243; natürlich auch wieder die YaST2-Tools zur Anlage von User- und Gruppenaccounts benutzen. Diese Accounts sollen aber nicht lokal, sondern auf dem LDAP-Server hinterlegt werden. Wir benötigen also einen TLS-geschützten Zugriff von LDAP-Clients des Systems &#8220;vms1&#8243; auf den LDAP-Server &#8220;vms2&#8243;. </p>
<p>Die im letzten Beitrag bereits durchgeführte Einrichtung der YaST2-LDAP-Client-Module sowie der YaST2-User- und Gruppen-Verwaltung auf dem Server sah sehr generisch aus. Wir vermuten daher zu Recht: </p>
<p>Auf dem System &#8220;vms1&#8243; können wir im Prinzip ähnlichen Schritten zur Einrichtung der YaST2-LDAP-Module folgen wie bei der Einrichtung des YaST2-LDAP-Clients und der YaST2-Benutzerverwaltung auf dem LDAP-Server selbst. </p>
<p>Damit wir dabei aber auch etwas Neues kennenlernen, werden wir uns in diesem Beitrag zusätzlich folgende Punkte genauer ansehen: </p>
<ul>
<li>Templateartige und opensuse-spezifische Vorgaben für die Anlage von Usern- und Gruppen. Zentrale Hinterlegung der Vorgaben auf dem LDAP-Server und Ort der entsprechenden Einträge im LDAP-Verzeichnisbaum. Änderung der Vorgaben per YaST2.</li>
<li style="margin-top:10px;">LDAP-Einträge in den Konfigurationsdateien für PAM und NSS</li>
</ul>
<p>Ein später nachfolgender Beitrag &#8220;LDAP IV&#8221; widmet sich dagegen einer zentralen Passwort-Politik, die wir auf dem LDAP-Server einrichten sowie Fragen der Absicherung des Servers gegenüber Logins von beliebigen Usern, die im LDAP-System hinterlegt wurden.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Konfiguration des YaST-LDAP-Clients auf dem externen System &#8220;vms1&#8243;</p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 1: Beschaffung des CA-Zertifikats</p>
<p>Wir gehen hier unter YaST2 völlig analog zu den Schritten vor, die ich im Beitrag LDAP I unter dem Schritt 4 und im Beitrag  LDAP II unter dem dortigen Schritt 3 beschrieben habe. Im Unterschied zur Ersteinrichtung der LDAP-Clients auf dem Server (s. LDAP I) berücksichtigen wir hier aber von vornherein die Nutzung von TLS. </p>
<p>Die auszufüllenden Masken geben wir hier nicht erneut vollständig wieder. Wir betrachten nur die wichtigsten:  </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_47.png' alt='ldap 47' /></p>
<p>Unser Server ist in unserem Beispiel natürlich nach wie vor das System &#8220;vms2.anracona.de&#8221; (und nicht &#8220;vms1&#8243; !). Auch die &#8220;LDAP Base DN&#8221; ist natürlich identisch zu der, die wir bei der Client-Einrichtung auf dem Server eingetragen hatten.  </p>
<p>Eine wichtige Ausnahme zum bisherigen Vorgehen gibt es allerdings auf der Maske </p>
<p><strong>&#8220;Advanced Configuration &gt;&gt; Reiter Administration Settings&#8221; </strong></p>
<p>des LDAP-Clients:  </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_46.png' alt='Ldap 46' /></p>
<p><strong>Wichtiger Hinweis 1:</strong><br />
Der Haken bei &#8220;Home Directories on This Machine&#8221; ist unbedingt erforderlich. Wir wollen ja, dass die Home-Verzeichnisse definitiv auf dem System &#8220;vms1&#8243; angelegt werden - und nicht sonst wo (etwa auf dem LDAP-Server &#8220;vms2&#8243;) oder evtl. gar nicht. </p>
<p><strong>Wichtiger Hinweis 2:</strong><br />
Wir setzen <strong>keinen</strong> Haken beim Punkt &#8220;Create Default Configuration Objects&#8221; ! Dadurch würden wir auf dem Server &#8220;vms2&#8243; bereits durchgeführte Konfigurationen zur Anlage von User- und Gruppen Accounts ggf. überschreiben. Was das bedeutet, werden ich weiter unten (s. Schritt 1.4) beschreiben. </p>
<p>Erwartungsgemäß  benötigen wir für den Aufbau von TLS-Verbindungen der YaST2-LDAP-Clients und der  PAM/NSS-Komponenten vom System &#8220;vms1&#8243; zum Server &#8220;vms2&#8243; auch Kopien von Zertifikaten. Der Ablageort dieser Zertifikate muss natürlich auch auf dem System &#8220;vms1&#8243; in die Konfigurationsmasken eingetragen werden. Wir nehmen der Einfachheit halber auch hier das lokale Verzeichnis &#8220;/etc/openldap&#8221; (auf &#8220;vms1&#8243;): </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_48.png' alt='ldap 48' /></p>
<p>Welche Art von Zertifikatsdateien benötigen wir? Brauchen wir überhaupt mehrere? </p>
<p>Ohne großes Nachdenken tippen wir mal darauf, dass uns der LDAP-Server im Rahmen des TLS- Verschlüsselungsdialogs sein eigenes Server-Zertifikat übermitteln wird, damit wir auf &#8220;vms1&#8243; seine Authentizität überprüfen können. In unserem Beispiel liegt das Server-Zertifikat auf dem Server &#8220;vms2&#8243; - und dort in der Datei &#8220;/etc/openldap/vms2_cert.pem&#8221;. Dieses Zertifikat wird auf dem Client-System nicht benötigt. </p>
<p>Für die Überprüfungsprozesse, die LDAP-Client-Module auf &#8220;vms1&#8243; bzgl. des Server-Zertifikats von &#8220;vms2&#8243; durchführen, müssen wir jedoch angeben, welchen CA-Authorities (bis hin zu Root-CA) das System &#8220;vms1&#8243; dabei vertrauen soll. </p>
<p><strong>Hinweis:</strong><br />
 Dies ist in unserem Testbeispiel umso wichtiger, als es sich bei &#8220;vms2_cert.pem&#8221; im Kern ja um ein &#8220;self-signed&#8221; Zertifikat für den LDAP-Server handelt. Denn es wurde ja gerade von einer Root-CA ausgestellt, die auf dem LDAP-Server &#8220;vms2&#8243; beheimatet ist. </p>
<p>Dieser Root-CA muss unser Client-System im Testnetz also explizit vertrauen. Wodurch identifizieren wir auf dem Client aber die CA? Natürlich durch ihr eigenes Zertifikat! Wir benötigen also das Zertifikat &#8220;anracona_vms2.pem&#8221; unserer Root-CA. Genauer müsste man eigentlich sagen: Die Zertifikate der für das Serverzertifikat &#8220;vms2_cert.pem&#8221; des LDAP-Server ausschlaggebenden CA-Authorities. Wären in einem realistischeren Beispiel mehrere hierarchische CAs involviert gewesen, so würden wir alle Zertifikate der CA-Kette benötigen! </p>
<p>In unserem einfachen Fall müssen wir also die Datei &#8220;/etc/openldap/anracona_vms2.pem&#8221; vom Server auf unser Clientsystem kopieren. Wir können dies z.B. mit &#8220;scp&#8221; erledigen, wenn wir openssh auf beiden Systemen installiert haben. </p>
<p>Auf dem Server &#8220;vms2&#8243;: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">vms2:~ # scp /etc/openldap/anracona_vms2.pem   root@vms1.anracona.de:/etc/openldap/</p>
<p>Im realen Leben würden wir das Zertifikat der Root-CA dagegen für unseren Client von einem LDAP-Server herunterladen. Danach versehen wir die Zertifikatsdatei auf dem Clientsystem &#8220;vms1&#8243; mit passenden Zugriffsrechten:   </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms1:~ #: chown ldap.ldap /etc/openldap/anracona_vms2.pem<br />
vms1:~ #: chmod 644 /etc/openldap/anracona_vms2.pem</p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 2: Die Datei &#8220;/etc/openldap/ldap.conf&#8221;</p>
<p>Wir erinnern uns, dass die Einstellungen, die YaST2 bei der Einrichtung der LDAP-Client-Fähigkeit vornimmt, sich an mehreren Stellen auf die Konfiguration des Opensuse-Systems auswirken (u.a. in den Dateien &#8220;/etc/openldap/ldap.conf&#8221; und &#8220;/etc/ldap.conf&#8221;).  </p>
<p>Zunächst sehen wir uns mal die benötigten Einträge in der Datei &#8220;/etc/openldap/ldap.conf&#8221; des Clients &#8220;vms1&#8243; an. </p>
<p>Diese Datei steuert systemweit Standard-LDAP-Zugriffsverfahren (vergl. mit dem Beitrag LDAP II). Hier Auszüge aus dem Datei-Inhalt für das System &#8220;vms1&#8243;: </p>
<p><strong>/etc/openldap/ldap.conf</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
base	dc=anracona,dc=de<br />
uri	ldap://vms2.anracona.de<br />
ldap_version	3<br />
ssl	start_tls<br />
TLS_CACERTDIR	/etc/openldap<br />
TLS_CACERT	/etc/openldap/anracona_vms2.pem<br />
TLS_REQCERT	allow<br /> 
</p>
<p>Über den Parameter &#8220;uri&#8221; wird die Adresse des LDAP-Servers angegeben. Einen speziellen Port geben wir dabei nicht an. Stattdessen sorgt die Zeile </p>
<p style="margin-top:8px; margin-left:20px;"> ssl start_tls&#8221; </p>
<p>dafür, dass eine TLS-geschützte Verbindung über den Standard-LDAP-Port 389 initialisiert wird. Bzgl. der übrigen Parameter werfen wir zur Vervollständigung unseres Wissens auch mal einen Blick in die man-Seiten. Es folgen Ausschnitte: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
<strong>URI <ldap[si]://[name[:port]] ...></strong><br />
               <span style="margin-left:20px;">Specifies  the  URI(s)  of an LDAP server(s) to which the LDAP library should con-<br />
              nect.  The URI scheme may be any of ldap, ldaps or ldapi, which refer to LDAP over<br />
              TCP,  LDAP  over  SSL (TLS) and LDAP over IPC (UNIX domain sockets), respectively.<br />
              Each server&#8217;s name can be specified as a domain-style name or an IP  address  lit-<br />
              eral.  Optionally, the server&#8217;s name can followed by a &#8216;:&#8217; and the port number the<br />
              LDAP server is listening on.  If no port number is provided, the default port  for<br />
              the  scheme  is used (389 for ldap://, 636 for ldaps://).</span><br />
&nbsp;<br />
<strong>TLS_CACERT <filename></strong><br />
              <span style="margin-left:20px;">Specifies  the  file  that contains certificates for all of the Certificate<br />
              Authorities the client will recognize.</span><br />
&nbsp;<br />
<strong>TLS_CACERTDIR
<path></strong><br />
              <span style="margin-left:20px;">Specifies the path of a directory that contains Certificate Authority  cer-<br />
              tificates  in  separate  individual  files.  The  TLS_CACERT is always used<br />
              before TLS_CACERTDIR.  This parameter is ignored with GnuTLS.</span><br />
&nbsp;<br />
<strong>TLS_REQCERT <level></strong><br />
              <span style="margin-left:20px;">Specifies  what  checks to perform on server certificates in a TLS session,<br />
              if any. The <level> can be specified as one of the following keywords:</span><br />
&nbsp;<br />
              <strong>never</strong>  The client will not request or check any server certificate.<br />
&nbsp;<br />
              <strong>allow</strong>  The server certificate is requested. If no certificate is  provided,<br />
                     the  session proceeds normally. If a bad certificate is provided, it<br />
                     will be ignored and the session proceeds normally.<br />
&nbsp;<br />
             <strong> try</strong>    The server certificate is requested. If no certificate is  provided,<br />
                     the session proceeds normally. If a bad certificate is provided, the<br />
                     session is immediately terminated.<br />
&nbsp;<br />
             <strong> demand | hard</strong><br />
                     These keywords are equivalent. The server certificate is  requested.<br />
                     If no certificate is provided, or a bad certificate is provided, the<br />
                     session is immediately terminated. This is the default setting.</span>
</p>
<p>Aha, an den Werten für den Parameter &#8220;TLS_REQCERT&#8221; erkennen wir, dass es durchaus unterschiedliche &#8220;Level&#8221; für den Umgang mit dem Zertifikat des Servers gibt. Wir können in unser Testkonfiguration nun durchaus mal die Einstellung <strong>&#8220;demand&#8221;</strong> ausprobieren und sehen, ob auf dem Client &#8220;vms1&#8243; das Absetzen eines Kommandos der Art: </p>
<p style="margin-left:20px; width:600px; background-color:#DDD;">vms1:~ # ldapsearch -b  dc=anracona,dc=de uid=* -x -D &#8220;cn=Administrator,dc=anracona,dc=de&#8221; -W  -xLLL -ZZ</p>
<p>funktioniert. Bzgl. der Parameter siehe die man-Seiten zu &#8220;ldapsearch&#8221;. (Zitat: &#8220;-Z[Z]  Issue  StartTLS (Transport Layer Security) extended operation. If you use -ZZ, the command will require the operation to be successful.&#8221; / Zum Beobachten des Zertifikatsaustausches kann man die Option -d2 anschließen.)</p>
<p>Die Durchführung des &#8220;ldapsearch-Kommandos&#8221; sollte in unserer Testkonfiguration anstandslos Ergebnisse für die bereits eingetragenen User liefern. Damit haben wir auch gleich unseren ersten Test für die Client-Anbindung hinter uns gebracht. Normale LDAP-Operationen funktionieren zwischen unseren Opensuse-Systemen bereits.    </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 3: Die Datei &#8220;/etc/ldap.conf&#8221;</p>
<p>Wir erinnern uns daran (siehe Beitrag &#8220;LDAP II), dass diese Datei unter Opensuse 12 für die Anbindung von PAM und NSS an LDAP zu steuern. Wir sehen uns nur die Parameter an, die von Standardeinstellungen abweichen. Weitere Informationen zu den einzelnen Parametern liefern die man-Seiten zu &#8220;/etc/ldap.conf&#8221;.    </p>
<p><strong>/etc/ldap.conf</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
# The distinguished name of the search base.<br />
base	dc=anracona,dc=de<br />
&nbsp;<br />
# Reconnect policy:<br />
#  soft:      return immediately on server failure<br />
bind_policy	soft<br />
&nbsp;<br />
# Search the root DSE for the password policy (works<br />
# with Netscape Directory Server). Make use of<br />
# Password Policy LDAP Control (as in OpenLDAP)<br />
pam_lookup_policy	yes<br />
&nbsp;<br />
# Use the OpenLDAP password change<br />
# extended operation to update the password.<br />
pam_password	exop<br />
&nbsp;<br />
# returns NOTFOUND if nss_ldap&#8217;s initgroups() is called<br />
# for users specified in nss_initgroups_ignoreusers <br />
# (comma separated)<br />
nss_initgroups_ignoreusers	root,ldap<br />
&nbsp;<br />
# Enable support for RFC2307bis (distinguished names in group<br />
# members)<br />
nss_schema	rfc2307bis<br />
&nbsp;<br />
# configure &#8211;enable-nds is no longer supported.<br />
# NDS mappings<br />
nss_map_attribute	uniqueMember member<br />
&nbsp;<br />
# OpenLDAP SSL mechanism<br />
# start_tls mechanism uses the normal LDAP port, LDAPS typically 636<br />
ssl	start_tls<br />
uri	ldap://vms2.anracona.de<br />
ldap_version	3<br />
pam_filter	objectClass=posixAccount<br />
&nbsp;<br />
# OpenLDAP SSL options<br />
# Require and verify server certificate (yes/no)<br />
# Default is to use libldap&#8217;s default behavior, which can be configured in<br />
# /etc/openldap/ldap.conf using the TLS_REQCERT setting.  The default for<br />
# OpenLDAP 2.0 and earlier is &#8220;no&#8221;, for 2.1 and later is &#8220;yes&#8221;.<br />
#tls_checkpeer yes<br />
&nbsp;<br />
# CA certificates for server certificate verification<br />
# At least one of these are required if tls_checkpeer is &#8220;yes&#8221;<br />
tls_cacertdir	/etc/openldap<br />
tls_cacertfile	/etc/openldap/anracona_vms2.pem
</p>
<p>Einige Einträge sind offenkundig ganz ähnlich zu den Einträgen in der &#8220;/etc/openldap/ldap.conf&#8221;. Einige sind jedoch auch spezifisch: </p>
<p>Die Einstellung &#8220;soft&#8221; des Parameters &#8220;bind_policy&#8221; bedeutet nach den man-Seiten und der Quelle &#8220;<a href="http://linux.die.net/man/5/nss_ldap">http://linux.die.net/man/5/nss_ldap</a>&#8220;, dass kein Reconnect (mit erheblicher Zeitverzögerung) versucht wird, wenn ein (initialer) Connect-Versuch gemäß der NSS-Anweisungen fehlschlägt.  </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;"><strong>bind_policy <hard_open|hard_init|soft></strong><br />
Specifies the policy to use for reconnecting to an unavailable LDAP server. The default is hard_open, which reconnects if opening the connection to the directory server failed. By contrast, hard_init reconnects if initializing the connection failed. Initializing may not actually contact the directory server, and it is possible that a malformed configuration file will trigger reconnection. If soft is specified, then nss_ldap will return immediately on server failure. All &#8220;hard&#8221; reconnect policies block with exponential backoff before retrying.</p>
<p>&#8220;Hard&#8221;-Einstellungen für diesen Parameter können also problematisch werden; siehe auch :<br />
<a href="http://www.held.org.il/blog/2008/09/ldap-default-bindhard-policy-is-problematic/">http://www.held.org.il/blog/2008/09/ldap-default-bindhard-policy-is-problematic/</a><br />
<a href="http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2008-02/msg01126.html">http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2008-02/msg01126.html</a><br />
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=502072">https://bugzilla.redhat.com/show_bug.cgi?id=502072</a></p>
<p>Ganz unten sehen wir wieder die Einstellungen für die Zertifikate, denen zu vertrauen ist. Bzgl. des &#8220;tls_cacertdir&#8221;-Wertes siehe die entsprechenden Ausführungen im früheren Beitrag LDAP II. </p>
<p>Die Bedeutung des Parameters &#8220;<strong>tls_checkpeer</strong>&#8221; ergibt sich aus der in der Datei unmittelbar darüber stehenden Erläuterung. Wir können das Kommentarzeichen vor diesem Parameter in unserer Testumgebung auch mal versuchsweise entfernen und den Wert auf &#8220;yes&#8221; setzen. Das sollte zu keinen Problemen führen. </p>
<p>Interessanter sind die Parameter <strong>&#8220;pam_password&#8221;</strong> und <strong>&#8220;pam_lookup_policy&#8221;</strong>.   </p>
<p>Unter der Web-Adresse <a href="http://karmak.org/archive/2003/02/ldap/ldap-linux.htm">http://karmak.org/archive/2003/02/ldap/ldap-linux.htm</a></p>
<p>lesen wir: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">&#8220;The directive <strong>&#8220;pam_password exop&#8221;</strong> tells pam-ldap to change passwords in a way that allows OpenLDAP to apply the hashing algorithm specified in /etc/ldap/slapd.conf, instead of attempting to hash locally and write the result directly into the database.&#8221;</p>
<p>Tja, nun hatten wir ja schon früher gesehen, dass es die &#8220;slapd.conf&#8221;-Konfigurationsdatei unter Opensuse gar nicht mehr gibt! </p>
<p>Jetzt könnte man unbedarft versuchen, auf dem Opensuse LDAP-Server in dessen modularen Konfigurationsdateien einen Eintrag für ein Standard-Hash-Verfahren des LDAP-Servers zu finden. Also einen Eintrag der Art &#8220;password-hash {SHA},{SSHA}&#8221;, wie es ihn früher in der guten alten &#8220;slapd.conf&#8221; gab. </p>
<p>Eine Suche der Art </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">vms2:/etc # grep  -d recurse hash /etc/openldap/</p>
<p>liefert aber nur  Kommentarzeilen aus diversen Schema-Dateien. Deshalb stellen sich jetzt folgende Fragen:  </p>
<ul>
<li>Woher wissen die Yast2-Userverwaltung auf &#8220;vms1&#8243; und der LDAP-Server eigentlich, welches Passwort-Verschlüsselungsverfahren bei der Anlage der Userdaten auf einem LDAP-Server angewendet werden soll? </li>
<li style="margin-top:8px;">Woher kennt die YaST-Userverwaltung für LDAP auf &#8220;vms1&#8243; eigentlich die nächste lfd. UID-Nummer, die bei der Anlage eines neuen Users verwendet werden soll, wenn die Nummern der bisher angelegten User doch auf dem LDAP-Server liegen?</li>
<li style="margin-top:8px;">Woher erfährt das YaST2-Modul zur Anlage von Usern eigentlich das Skeleton-Verzeichnis oder andere Standarddaten, die bei der Neuanlage eines Users berücksichtigt werden sollen? </li>
<li style="margin-top:8px;">Wie zentralisiert man eigentlich die Standarddaten für die Anlage von Useracounts über mehrere Systeme hinweg? </li>
<li style="margin-top:8px;">Wo wurde eigentlich festgelegt, dass User-Daten auf unserem Testsystem im LDAP-Baum unter &#8220;ou=people,dc=anracona,dc=de&#8221; angelegt werden sollen ?</li>
</ul>
<p>Vielleicht ist man nun durch diese Fragen verunsichert worden und bezweifelt, dass die YaST2-Benutzerverwaltung auf dem System &#8220;vms1&#8243; überhaupt funktioniert. Höchste Zeit also für die testweise Anlage einiger Testuser auf dem System &#8220;vms1&#8243;. </p>
<p>Die Möglichkeit zur YaST2-gestützten Useranlage unter Hinzuziehung des LDAP-Servers erhalten wir, wie in den früheren Beiträgen beschrieben, auch auf dem System &#8220;vms1&#8243; über folgende Maske der YaST2-Benutzerverwaltung und die Wahl des Filters &#8220;LDAP-Users&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/05/ldap_on_vms2_500_56.png' alt='ldap_56' /></p>
<p>Dort drücken wir auf den Button &#8220;Add&#8221; und nehmen in den nachfolgenden Masken die erforderlichen Einträge vor. Auf der Maske &#8220;Details&#8221; erkennen wir dabei übrigens, dass auf wundersame Weise automatisch die nächste freie Nummer für den Testuser gewählt wird. </p>
<p>Ohne hier alle Schritte vorzuführen, endet unser Test der Useranlage mit YaST2 auch auf &#8220;vms1&#8243; erfolgreich: </p>
<ul>
<li>die Kommunikation unserer YaST2-Benutzerverwaltung auf &#8220;vms1&#8243; mit dem LDAP-Server &#8220;vms2&#8243; funktioniert, </li>
<li style="margin-top:8px;">unter dem Zweig &#8220;ou=people,dc=anracona,dc=de&#8221; werden im LDAP-Verzeichnis auf &#8220;vms2&#8243; die erforderlichen User-Einträge angelegt, </li>
<li style="margin-top:8px;">auf &#8220;vms1&#8243; (und nicht etwa auf vms2) werden die Home-Verzeichnisse für die neuen User korrekt angelegt und </li>
<li style="margin-top:8px;">jeder neu mit YaST2 von &#8220;vms1&#8243; aus angelegt User kann sich auf &#8220;vms1&#8243; auch einloggen.</li>
</ul>
<p>Offenbar haben wir &#8220;vms1&#8243; richtig konfiguriert. Ein Blick mit dem LDAP-Browser auf &#8220;vms2&#8243; zeigt denn auch die angelegten Testuser an: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/05/ldap_on_vms2_500_57.png' alt='ldap_57' /></p>
<p>Studiert man nun die User-Einträge unter dem Ast &#8220;ou=people,dc=anracond,dc=de&#8221; des LDAP-Verzeichnisses genauer, so findet man bzgl. der Passwortverschlüsselung Feldeinträge der Form: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">userPassword {ssha}dMU9M69W&#8230;&#8230;&#8230;</p>
<p>Es wurde also SSHA als Hash-Verfahren für die Passwortverschlüsselung herangezogen. Gehen wir dagegen auf die Passworteinstellungen der YaST2-Userverwaltung (Expert-Options &gt;&gt; Password Encryption) auf dem System &#8220;vms1&#8243;, so finden wir dort überraschenderweise jedoch Folgendes: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_49.png' alt='ldap 49' /> </p>
<p>Opensuses&#8217;s YaST ist nach einer Standardinstallation eigentlich auf MD5 als Hashverfahren eingestellt! Unseer Fragenkatalog von obeen erweiter sich also um die Frage: </p>
<ul>
<li>Woher also kommt also die SSHA-Einstellung für das LDAP-System?</li>
</ul>
<p>Um diese Frage und auch die anderen offen gebliebenen Fragen zu  beantworten, müssen wir auf einen Punkt aus dem Beitrag &#8220;LDAP I&#8221; zurückkommen, der SuSE-spezifisch ist und auf den wir bislang nicht eingegangen sind.  </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 4: Opensuse-spezifische Konfigurationsvorgaben und Templates für die Anlage von Usern und Gruppen</p>
<p>Im Beitrag &#8220;LDAP I&#8221; hatten wir in folgender Maske zur Einrichtung der YaST2-LDAP-Clients auf &#8220;vms2&#8243;  </p>
<p><a href='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_11.png' title='ldap_11'><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_11.png' alt='ldap_11' /></a> </p>
<p>die Option <strong>&#8220;Create Default Configuration Objects&#8221;</strong> gesetzt. </p>
<p>Läßt man dies bei der Einrichtung eines anderen LDAP-Servers testweise weg und legt später User an, so wird man u.a. feststellen, dass die User Accounts dann keineswegs unter dem LDAP-Verzeichniszweig </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">&#8220;ou=people,dc=anracona,dc=de&#8221;</p>
<p>angelegt werden. Diesen Zweig gibt es dann nicht einmal !  Im LDAP-Baum würde die Anlage von Informationen zu User Accounts in einer solchen Situation vielmehr direkt unter der Base-DN erfolgen, was aus einer Reihe von Gründen natürlich nicht erstrebenswert wäre. </p>
<p>Die Option &#8220;Create Default Configuration Objects&#8221; bei der Konfiguration des LDAP-Clients scheint also dazu zu führen, dass YaST2 während der Einrichtung des LDAP-Clients auf dem LDAP-Server (!) einige Standardeinstellungen vornimmt und dabei auch bestimmte Äste des LDAP-Baums einrichtet. </p>
<p>Ein Blick mit dem YaST2-LDAP-Browser offenbart denn auch, was so alles während unserer LDAP-Einrichtung angelegt wurde:   </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_51.png' alt='ldap 51' /></p>
<p>Zunächst stellen wir fest, dass es drei interessante &#8220;ou-Zweige&#8221; gibt: </p>
<ul>
<li>ou=people</li>
<li style="margin-top:8px;">ou=ldapconfig</li>
<li style="margin-top:8px;">ou=group </li>
</ul>
<p>(Der darüber liegende Eintrag &#8220;cn=Default Policy&#8221; ist übrigens kein Standardeintrag. Wie dieser Eintrag auf meinem Testsystem &#8220;vms2&#8243; entstanden ist, bespreche ich im Beitrag &#8220;LDAP IV&#8221;.)   </p>
<p>Unter dem Zweig <strong>&#8220;ou=people&#8221;</strong> hinterlegt die YaST-Userverwaltung offenbar die Informationen zu User Accounts, unter <strong>&#8220;ou=group&#8221;</strong> die Informationen zu Group Accounts. Für die User hatten wird dies im Beitrag &#8220;LDAP II&#8221; bereits explizit gesehen. Dass das auch für Gruppen gilt, kann jeder selbst durch Anlegen entsprechender Test-Accounts für Gruppen verifizieren. </p>
<p>Von größerem Interesse ist aber der Bereich <strong>&#8220;ou=ldapconfig&#8221;</strong>. Dort wurden von YaST2 bei unserer initialen Konfiguration des &#8220;LDAP-Clients&#8221; auf dem System &#8220;vms2&#8243; (s. LDAP I) offenbar schablonen- und templateartige Informationen als <strong>Vorgaben für die Anlage von User- und Group-Accounts</strong> angelegt. Ein Blick auf die Felder der &#8220;cn&#8221;-Einträge </p>
<ul>
<li>cn=groupconfiguration</li>
<li style="margin-top:8px;">cn=grouptemplate</li>
<li style="margin-top:8px;">cn=userconfiguration</li>
<li style="margin-top:8px;">cn=usertemplate </li>
</ul>
<p>ist wirklich ganz instruktiv. Man erkennt sofort, dass die Inhalte tatsächlich in etwa den Informationen entsprechen, die man bei einer manuellen Verwendung von  &#8220;useradd&#8221; bzw. &#8220;usermodify&#8221; auf Standardsystemen auch anlegen bzw. modifizieren würde. </p>
<p>U.a. finden wir in den genannten LDAP-Einträgen auch die vorhin gesuchte Vorgabe zur Verwendung von SSHA als Hash-Verfahren für die User-Passwörter sowie eine Vorgabe für das Skeleton-Verzeichnis. </p>
<p>Auch die zuletzt benutzte UID-Nr und GID-Nr. werden bei der Anlage neuer Accounts auf dem LDAP-System in Feldern der Einträge &#8220;userconfiguration&#8221; und &#8220;groupconfiguration&#8221; neu eingetragen. </p>
<p>Die Struktur der Einträge entspricht übrigens einem spezifischen LDAP-Schema, das bei der Einrichtung des LDAP-Servers von YaST2 mit angelegt wurde, nämlich dem <strong>&#8220;yast&#8221;-Schema</strong>. </p>
<p>Dies bestätigen ein Blick in das Konfigurationsverzeichnis &#8220;/etc/openldap/slapd.d/ &#8221;  </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_54.png' alt='ldap 54' /></p>
<p>sowie zusätzliche Blicke in die Dateien </p>
<ul>
<li>/etc/openldap/slapd.d/cn=config/cn=schema/cn={4}yast.ldif&#8221; und</li>
<li style="margin-top:8px;>/etc/openldap/schema/yast.schema</li>
</ul>
<p>Was sagt uns das alles ? </p>
<ul>
<li>Opensuses&#8217; YaST erstellt schablonenartige Vorgaben zur Erstellung von User- und Group-Accounts. Während der Einrichtung der YaST2-LDAP-Clients für die User-Verwaltung werden diese Vorgaben im LDAP-System selbst unter dem Zweig <strong>&#8220;ou=ldapconfig&#8221;</strong> unterhalb der Base-DN hinterlegt! Dies ist der Sinn der oben erwähnten Option  &#8220;Create Default Configuration Objects&#8221;. </li>
<li style="margin-top:8px;">Die YaST2-Client-Anwendungen zur Userverwaltung holen sich diese Daten im Vorfeld einer Account-Einrichtung oder -Änderung also vom LDAP-Server selbst ab. (Faktisch geschieht dies bei der Setzung des Filters für das Account-Backend auf &#8220;LDAP User&#8221; oder &#8220;LDAP Group&#8221; (Button &#8220;Set Filter&#8221; in den Masken zur User- und Gruppenverwaltung).</li>
</ul>
<p>Die Antworten auf die oben gestellten Fragen liegen also in den Tiefen von YaST2 und den dort in ycp-Scripts verankerten Ideen von Opensuse zur Account-Verwaltung und einem spezifischen &#8220;yast&#8221;-LDAP-Schema. </p>
<p>YaST&#8217;s ycp-Scripts fragen im Zuge der User- und Gruppen-Verwaltung im LDAP-System dort hinterlegte Instruktionen zur User- und Gruppen-Anlage ab. Bei der Konfiguration des YaST2-LDAP-Clients hingegen werden durch ycp-Scripts auf dem LDAP-Server bestimmte Verzeichnis-Zweige angelegt und Einträge mit Vorgaben zur User- und Gruppen-Anlage hinterlegt.       </p>
<p>Tatsächlich findet man nach ein wenig Recherche in der Datei &#8220;/usr/share/YaST2/modules/Ldap.ycp&#8221; auch die Codezeilen für diejenigen Informationen, die bei der initialen Anlage der Vorgaben zu User- und Gruppenaccounts unter &#8220;ou=ldapconfig&#8221; von den YaST2-Konfigurationsskripts herangezogen werden: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_52.png' alt='ldap 52' /> </p>
<p>Nun fragt man sich als nächstes, ob und wo man diese Standardeinstellungen für die account-bezogenen Configuration- und Template-Vorgaben ändern kann. </p>
<p>Auch dies geschieht natürlich über YaST2 und zwar im YaST2-Modul &#8220;LDAP-Client&#8221;. </p>
<p>Auf der Einstiegsmaske &#8220;LDAP Client Configuration&#8221; nutzt man den Button &#8220;Advanced Configuration&#8221;, geht auf der nächsten Maske in den Reiter &#8220;Administration Settings&#8221; und klickt dort auf den Button &#8220;Configure User Management Settings&#8221;. Auf der nachfolgenden Maske hat man alle Möglichkeiten zum Überschreiben der Werte für die User- und auch der Gruppenkonfiguration sowie der zugehörigen &#8220;Templates&#8221; : </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/04/ldap_on_vms2_500_53.png' alt='ldap 53' /></p>
<p>Diese Änderungen kann per YaST2 man von <strong>jedem</strong> System aus vornehmen, das den LDAP-Server als Backend für die User- und Gruppenverwaltung verwendet. </p>
<p>Inzwischen wird wohl auch ein wenig klar, wie man mittels YaST2 und LDAP eine (in diesem Stadium einfache!) systemübergreifende User- und Gruppenverwaltung hinbekommt, die zumindest elementaren Bedürfnissen ganz gut gerecht wird. </p>
<p>Grundsätzlich finde ich das Opensuse-Vorgehen zur User- und Gruppenverwaltung mit YaST2 und LDAP ja für eine Basisausstattung und einfache Situationen hinreichend und clever. Aber zwei Dinge stören mich doch ganz erheblich: </p>
<ul>
<li>Weder aus den YaST-Masken selbst noch aus den zugehörigen Hilfeseiten ist ersichtlich, was die &#8220;Default Configuration Objects&#8221; sind und wo sie hinterlegt werden. Die Bezeichnung &#8220;LDAP Client&#8221; verführt geradezu zu der Annahme, dass auch hierbei nur Einstellungen auf dem Client vorgenommen werden - was aber offenkundig falsch ist. </li>
<li  style="margin-top:8px;">Wenn man den LDAP-Server als Backend für die User- und Gruppenverwaltung von mehreren Systemen aus verwendet, so kann man mit dem YaST&#8221;-LDAP-Client-Modul von jedem System aus die Vorgaben unter &#8220;ou=ldapconfig&#8221; auf dem zentralen Server überschreiben.
<p>Blöderweise gilt dies auch während der initialen Konfiguration des YaST2 LDAP-Client Moduls auf einem jeden neuen System, das an den LDAP-Server angebunden werden soll. Setzt man hier versehentlich den Haken bei  der Option &#8220;Create Default Configuration Objects&#8221;, so werden die bisherigen, auf dem LDAP-Server gepflegten  User- und Gruppen-Konfigurationsoptionen erneut durch die Default-Einstellungen überschrieben. </p>
<p> <strong>Daher ist mein obiger Hinweis, diesen Haken bei der Einrichtung von &#8220;vms1&#8243; nicht zu setzen, wichtiger als man zunächst vielleicht meinen möchte!</strong></li>
</ul>
<p style="font-size:16px; font-weight:bold; margin-top:40px; margin-bottom:10px;">NSS und PAM auf dem System &#8220;vms1&#8243; und ihr  Zusammenspiel mit LDAP</p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">NSS-Konfigurationsdatei für LDAP</p>
<p>Bereits im Beitrag LDAP II hatten wir festgestellt, dass das YaST2-Module &#8220;LDAP Client&#8221; offenbar auch Einstellungen für PAM und NSS vornimmt. Bislang hatten wir nur die Datei &#8220;/etc/ldap.conf&#8221; betrachtet. Es ist aber auch ganz lehrreich, mal einen Blick in ein paar andere NSS- und PAM-spezifische Dateien auf dem System &#8220;vms1&#8243; zu werfen. </p>
<p>Sehen wir als erstes in die Datei &#8220;/etc/nsswitch.conf&#8221;: </p>
<p><strong>/etc/nsswitch.conf</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
passwd:	compat<br />
group:	files ldap<br />
&nbsp;<br />
hosts:	files mdns4_minimal [NOTFOUND=return] dns<br />
networks:	files dns<br />
&nbsp;<br />
services:	files ldap<br />
protocols:	files<br />
rpc:	files<br />
ethers:	files<br />
netmasks:	files<br />
netgroup:	files ldap<br />
publickey:	files<br />
&nbsp;<br />
bootparams:	files<br />
automount:	files nis<br />
aliases:	files ldap<br />
passwd_compat:	ldap
</p>
<p>Grundlegende Informationen zum Aufbau dieser Konfigurationsdatei zum NSS-Service findet man unter:  </p>
<p><a href="http://cims.nyu.edu/cgi-systems/man.cgi?section=4&#038;topic=nsswitch.conf">http://cims.nyu.edu/cgi-systems/man.cgi?section=4&#038;topic=nsswitch.conf</a><br />
<a href="http://serverfault.com/questions/289933/pam-nsswitch-and-ldap-configuration">http://serverfault.com/questions/289933/pam-nsswitch-and-ldap-configuration</a><br />
<a href="http://cims.nyu.edu/cgi-systems/man.cgi?section=4&#038;topic=passwd">http://cims.nyu.edu/cgi-systems/man.cgi?section=4&#038;topic=passwd</a>  </p>
<p>Wir stellen fest, dass Opensuse bereits (vorsorglich?) für einige der eingetragenen Punkte &#8220;ldap&#8221; vorgemerkt hat, obwohl z.T. noch gar keine entsprechenden Informationen im LDAP-Baum vorhanden sind. Dadurch lassen wir uns nicht beunruhigen. Wir kümmern uns zunächst um die Einträge </p>
<ul>
<li>passwd:	compat</li>
<li  style="margin-top:8px;">group:	files ldap</li>
<li  style="margin-top:8px;">passwd_compat:	ldap</li>
</ul>
<p>Hierzu ist zu sagen, dass Opensuse - vermutlich aus Rücksichtnahme auf Installationen mit vorhandenem NIS eine ältere Variante des Zugriffs auf &#8220;ldap&#8221; hinsichtlich der Passwörter über den Parameter <strong>&#8220;passwd: compat&#8221;</strong> und ein anschließendes <strong>&#8220;passwd_compat: ldap&#8221;</strong> vornimmt. </p>
<p>Der NSS-Service erwartet dann in der Datei <strong>&#8220;/etc/passwd&#8221;</strong> eine Zeile der Form</p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">+::::::</p>
<p>und in <strong>&#8220;/etc/shadow&#8221;</strong> eine Zeile </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">+</p>
<p>vorzufinden, was tatsächlich auch der Fall ist. </p>
<p>Die Platzhalter stehen für Einträge aus NIS und eben auch LDAP-Quellen. </p>
<p>Zur Prüfung, dass die Abfrage-Kette </p>
<ul>
<li>Durchsuche die Datei &#8220;/etc/passwd/&#8221; und </li>
<li  style="margin-top:8px;">gehe dann zusätzlich auf LDAP</li>
</ul>
<p>funktioniert,  bietet sich auf &#8220;vms1&#8243; das Absetzen des Befehls <strong>&#8220;getent passwd&#8221;</strong> an. Man bekommt dann alle passwd-Einträge aber auch alle Einträge auf dem LDAP-Server aufgelistet: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms1:~ # getent passwd<br />
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash<br />
&#8230;<br />
&#8230;<br />
&#8230;<br />
rmx:x:1000:100:rmx:/home/rmx:/bin/bash<br />
rmo:*:1004:100:rmo:/home/rmo:/bin/bash<br />
rmu:*:1005:100:rmu rmu:/home/rmu:/bin/bash<br />
rmv:*:1006:100:rmx rmx:/home/rmv:/bin/bash<br />
vms1:~ #</p>
<p>Der einzige auf dem Test-System regulär eingetragene User ist rmx, die anderen User-Einträge kommen vom LDAP-Server &#8220;vms2&#8243;. </p>
<p>Alternativ hätte es natürlich auch die etwas modernere Variante gegeben, in der Datei &#8220;nsswitch.conf&#8221; den LDAP-Zugriff für &#8220;passwd&#8221; zu gestalten, nämlich: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">passwd:	files ldap</p>
<p>Das funktioniert auf einem System ohne NIS genauso, nur sollte man dann auch die Platzhalterzeilen &#8220;+::::::&#8221; bzw. &#8220;+&#8221; in &#8220;/etc/passwd&#8221; bzw.  &#8220;/etc/shadow&#8221; eliminieren. Das mag jeder mal selbst ausprobieren. </p>
<p>Interessant ist, dass Opensuse im Gegensatz zu früheren Veröffentlichungen </p>
<p><a href="http://www.pks.mpg.de/~mueller/docs/suse10.0/suselinux-manual_de/manual/sec.ldap.yast.client.html">http://www.pks.mpg.de/~mueller/docs/suse10.0/suselinux-manual_de/manual/sec.ldap.yast.client.html</a> </p>
<p>oder</p>
<p><a href=" http://www.linuxtopia.org/online_books/suse_linux_guides/SLES10/suse_enterprise_linux_server_installation_admin/sec_ldap_yast_client.html"> http://www.linuxtopia.org/online_books/suse_linux_guides/SLES10/suse_enterprise_linux_server_installation_admin/sec_ldap_yast_client.html</a>) </p>
<p>für die Gruppen einen analoge &#8220;compat&#8221;-Politik nicht mehr verfolgt. Hier wird das modernere Verfahren eingesetzt.    </p>
<p>In professionellen Umgebungen mit vielen hundert Usern würde es laufend entsprechend viele Netzwerkzugriffe auf den LDAP-Server geben. Um das zu vermeiden, sollte man auf den Systemen den Daemon für den sog. <strong>&#8220;Name Service Cache&#8221;</strong>-Service - kurz <strong>&#8220;NSCD</strong>&#8221; - starten. Unter Opensuse ist das vorkonfiguriert. Die zugehörige Konfigurationsdatei findet man auf &#8220;vms1&#8243; unter &#8220;/etc/nscd.conf&#8221;. Ob der Dienst läuft, kann man mit &#8220;rcnscd status&#8221; prüfen. </p>
<p style="font-size:14px; font-weight:bold; margin-top:40px; margin-bottom:10px;">PAM-Konfigurationsdateien für LDAP auf &#8220;vms1&#8243;</p>
<p>Wir setzen nachfolgend ein Grundverständnis von PAM voraus. Eine erste Übersicht gibt<br />
<a href="http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlpam.html">http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlpam.html</a></p>
<p>Einen instruktiven Foliensatz findet man unter<br />
<a href="http://www.linuxcampus.net/component/remository/func-startdown/56/?Itemid=186">http://www.linuxcampus.net/component/remository/func-startdown/56/?Itemid=186</a></p>
<p>Für PAM allgemein und für die PAM-Konfiguration zu SSHD findet man erste Übersichtsinformationen unter<br />
<a href="http://www.mpipks-dresden.mpg.de/~mueller/docs/suse10.0/suselinux-manual_de/manual/cha.pam.html">http://www.mpipks-dresden.mpg.de/~mueller/docs/suse10.0/suselinux-manual_de/manual/cha.pam.html</a>   </p>
<p>Details zu einigen PAM-Modulen entnimmt man dem &#8220;Linux-PAM System Administrators&#8217; Guide&#8221;<br />
<a href="http://webapp5.rrz.uni-hamburg.de/SuSe-Dokumentation/packages/pam/pdf/Linux-PAM_SAG.pdf">http://webapp5.rrz.uni-hamburg.de/SuSe-Dokumentation/packages/pam/pdf/Linux-PAM_SAG.pdf</a></p>
<p>Die wichtigsten PAM-Konfigurationsdateien für sicherheitsrelevante Services findet man im Verzeichnis  <strong>&#8220;/etc/pam.d&#8221;</strong>. Welche dieser Konfigurationsdateien enthalten Einträge bzgl. LDAP? </p>
<p>Unter Opensuse werden einige zentrale Dateien in die Konfigurationsdateien der einzelnen sicherheitsrelevanter Services inkludiert. Diese zentralen Dateien (meist als Link auf eine weitere Datei ausgelegt) sind die folgenden: </p>
<ul>
<li>/etc/pam.d/common-auth </li>
<li  style="margin-top:8px;">/etc/pam.d/common-account</li>
<li  style="margin-top:8px;">/etc/pam.d/common-password</li>
<li  style="margin-top:8px;">/etc/pam.d/common-session</li>
</ul>
<p>Uns verwundert es daher nicht, dass LDAP-Module genau in diesen Dateien aufgerufen werden: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms1:~ # grep   -d recurse ldap /etc/pam.d/<br /> <br />
/etc/pam.d/common-auth:auth     required        pam_ldap.so     use_first_pass<br />
/etc/pam.d/common-auth-pc:auth  required        pam_ldap.so     use_first_pass<br />
/etc/pam.d/common-account-pc:account    required        pam_ldap.so     use_first_pass<br />
/etc/pam.d/common-password-pc:password  required        pam_ldap.so     try_first_pass use_authtok<br /> <br />
/etc/pam.d/common-password:password     required        pam_ldap.so     try_first_pass use_authtok<br />
/etc/pam.d/common-session-pc:session    optional        pam_ldap.so<br />
/etc/pam.d/common-session:session       optional        pam_ldap.so<br />
/etc/pam.d/common-account:account       required        pam_ldap.so     use_first_pass<br />
vms1:~ #
</p>
<p>Hier wird also an verschiedenen Stellen auf die Shared Object Library<strong> &#8220;pam_ldap.so&#8221;</strong> zurückgegriffen, die die erforderlichen Abfragen und die Kommunikation mit dem LDAP-System (auf Basis der &#8220;/etc/ldap.conf&#8221;-Regeln) für PAM erledigt.  </p>
<p>Die genannten zentralen PAM-Dateien des Opensuse-Systems unter &#8220;/etc/pam.d/&#8221; werden z.B. in der Konfigurationsdateien für den Login-Mechanismus (/etc/pam.d/login) oder SSH (/etc/pam.d/sshd) benutzt. Wir betrachten auf unserem Clientsystem als Beispiel mal die Datei &#8220;/etc/pam.d/login&#8221;: </p>
<p><strong>/etc/pam.d/login</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
#%PAM-1.0<br />
auth	 requisite	pam_nologin.so<br />
auth	 [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad]	pam_securetty.so<br />
auth	 include	common-auth<br />
account  include 	common-account<br />
password include	common-password<br />
session  required	pam_loginuid.so<br />	<br />
session	 include	common-session<br />
session  optional	pam_lastlog.so	nowtmp showfailed<br /> <br />
session  optional       pam_mail.so standard<br />
session	 optional	pam_ck_connector.so
</p>
<p>Opensuse wartet hier nicht mit besonderen Überraschungen auf. Eine kurze, prägnante Erklärung zum Aufbau einer PAM-Konfigurationsdatei für den Login-Mechanismus bietet etwa<br />
<a href="http://www.selflinux.de/selflinux/html/grundlagen_sicherheit05.html">http://www.selflinux.de/selflinux/html/grundlagen_sicherheit05.html</a></p>
<p>Man erkennt in unser Datei sofort Elemente der im gerade genannten Link beschriebenen Struktur wieder: </p>
<p>Zuerst wird überprüft, ob die Datei &#8220;/etc/nologin&#8221; existiert und nur root Zugang zum System haben darf. Danach wird der Root-Zugang über sichere TTYs geregelt. Anschließend wird die Authentizität des Users anhand seienr Credentials überprüft - dies geschieht durch die Elemente der Datei &#8220;common-auth&#8221;: </p>
<p><strong>/etc/pam.d/common-auth</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
auth	required	pam_env.so<br />
auth	optional	pam_gnome_keyring.so<br />
auth	sufficient	pam_unix2.so<br />
auth	required	pam_ldap.so	use_first_pass
</p>
<p>Man erkennt hier, dass die Anfrage an des LDAP-System gestartet wird, falls eine lokale Prüfung durch das &#8220;pam_unix2&#8243;-Modul nicht erfolgreich ist (Check Anmeldename und Passwort gegen &#8220;/etc/passwd&#8221; und &#8220;/etc/shadow&#8221;). Durch <strong>&#8220;use_first_pass&#8221;</strong> ist dafür gesorgt, dass das bereits eingegebene Password an das LDAP-Modul weitergereicht und nicht neu beim User abgefragt wird.  </p>
<p>Danach werden Zugangsberechtigungen untersucht, die mit dem Account zusammenhängen - u.a., ob keine Zeitbeschränkungen des Accounts verletzt sind. Die Schlüsselfrage ist: &#8220;Gibt es diesen Benutzer im System und darf er sich anmelden?&#8221; Ein Blick in &#8220;common-account&#8221; zeigt auch hier die Abfrage des LDAP-Systems an: </p>
<p><strong>/etc/pam.d/common-acount</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
account	requisite	pam_unix2.so<br />
account	sufficient	pam_localuser.so<br />
account	required	pam_ldap.so	use_first_pass
</p>
<p>Damit die erste Bedingung erfüllt wird, müssen die weiter oben erläuterten Verweis-Einträge im NIS-Format in den Dateien &#8220;/etc/passwd&#8221; und &#8220;/etc/shadow&#8221; vorhanden sein ! </p>
<p>LDAP ist im Zusammenhang mit der Account-Prüfung auch aus folgendem Grund interessant: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">The pam_ldap module provides the ability to specify a list of hosts a user is allowed to log into, in the &#8220;host&#8221; attribute in LDAP. The host attribute can be specified multiple times for each user. If any of the entries match the hostname (of the machine logging in to), login is succesful. Otherwise, login is denied.<br />
&nbsp;<br />
This feature is enabled by specifying pam_check_host_attr yes in /etc/pam_ldap.conf. When it is enabled, the account facility of pam_ldap will perform the checks and return an error when no proper host attribute is present. </p>
<p>Zitiert nach: <a href="http://wiki.debian.org/LDAP/PAM">http://wiki.debian.org/LDAP/PAM</a> </p>
<p>Das &#8220;pam_ldap.so&#8221;-Modul kann also untersuchen, ob im LDAP-System eingetragene User bestimmten Hosts zugeordnet sind. Hierdurch kann der Zugriff auf bestimmte Hosts verhindert werden. Mit diesem sicherheitsrelevanten Thema werden wir uns im Beitrag &#8220;LDAP - IV&#8221; genauer befassen. </p>
<p>Im Anschluss an PAM&#8217;s account- und Berechtigungs-Prüfungen kommen Bedingungen an Passwörter zu tragen, die dann von Bedeutung sind, wenn ein User im Login-Vorgang zur Änderung des Passworts gezwungen ist. Das genaue Studium und die Analyse der Bedingungen in  &#8220;common-password&#8221; überlassen wir dem interessierten Leser. </p>
<p><strong>/etc/pam.d/common-acount</strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
password	requisite	pam_cracklib.so	minlen=8<br />
password	optional	pam_gnome_keyring.so	use_authtok<br />
password	sufficient	pam_unix2.so	use_authtok nullok<br />
password	required	pam_ldap.so	try_first_pass use_authtok
</p>
<p>Die &#8220;Session&#8221;-Bedingungen sorgen für eine ordnungsgemäße Sitzungsabwicklung. Hier ein Auszug </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
session  optional	pam_mkhomedir.so<br />	<br />
session	required	pam_limits.so<br />
session	required	pam_unix2.so<br />
session	optional	pam_ldap.so<br />
session	optional	pam_umask.so<br />
session	optional	pam_systemd.so
</p>
<p>Wir erkennen an den Namen der Module bereits Aufgaben der involvierten Module: </p>
<p>Falls erforderlich kümmert sich zunächst &#8220;pam_mkhomedir.so&#8221; beim Login eines neuen Users um die Erzeugung eines Home-Dirs (oder aber um die   Umlenkung auf ein Ersatz-Verzeichnis). Pam_unix2 protokolliert in den Logfiles nicht nur den Beginn einer Sitzung, sondern auch deren Ende. Das Modul &#8220;limits.so&#8221;  begrenzt Systemressourcen-Anforderungen, u.a. Hauptspeicherbedarf, CPU-Zeit, Prozesse und Dateien für einzelne Benutzer bzw. Benutzergruppen. User- oder gruppen-spezifische Limit-Einstellungen können in der Konfigurationsdatei &#8220;/etc/security/limits.conf&#8221; vorgenommen werden. Hinweis: Systemweite Limit-Konfigurationen erfolgen unter Opensuse unter &#8220;/etc/sysconfig/ulimit&#8221; (s. auch: <a href="https://build.opensuse.org/package/show?package=ulimit&#038;project=openSUSE%3A12.1">https://build.opensuse.org/package/show?package=ulimit&#038;project=openSUSE%3A12.1</a>). </p>
<p>Danach werden LDAP-Einträge für Session-Bedingungen abgefragt. Diese Abfrage ist im Gegensatz zu anderen PAM-Bedingungen jedoch optional - das Ergebnis verhindert den Erfolg eines Einloggens in keinem Fall. Es folgen die Prüfung von umask-Regeln und unter Opensuse neuerdings auch von systemd-Regeln.     </p>
<p>Ich denke, der Leser hat nun ein gewisses Gefühl dafür bekommen, dass und in welcher Form PAM und LDAP ineinander greifen. Bei Opensuse ist das Ganze (vernünftigerweise?) so organisiert, dass bestimmte erfolgreiche lokale Prüfungen in der Regel hinreichend sind. Erst im negativen Fall wird auf die LDAP-Einträge zur Auth- und Account-Prüfung ausgewichen. Entsprechend Anfragen müssen dann aber auch zu einem positiven Ergebnis führen. Bzgl. der Login-Session-Handhabung sind LDAP-Einträgen nur optional.    </p>
<p>Zu beachten ist, dass es in der PAM-Konfiguration, die die YaST2-Module standardmäßig vornehmen, keine einzige &#8220;sufficient&#8221;-Bedingung im Zshg. mit LDAP-Anfragen gibt. </p>
<p>Nun kann man ja versucht sein, den Ergebnissen von LDAP-Abfragen ein höheres Gewicht zu geben als lokalen Bedingungen. Dies führt typischerweise zu Experimenten, bei denen man die Reihenfolge der PAM-Bedingungen für LDAP-Abfragen und lokale Abfragen umstellt. </p>
<p><strong><span style="color:#A90000;">Warnung:</span></strong> </p>
<p style="margin-left:20px;">Hierbei muss man wirklich genau wissen, was man tut. Im besonderen sind dann auch Kriterien wie &#8220;use_first_pass&#8221; und &#8220;use_authtok&#8221; nicht mehr unbedingt in der Zeile zum LDAP-Modul sondern bei den nachfolgenden PAM-Bedingungen anzugeben. Generell gilt, dass ein unvorsichtiges Vorgehen bei der PAM-Konfiguration zu erheblichen Schwierigkeiten bzgl. des Systemzugangs führen kann. Also seid bitte vorsichtig und experimentiert bzgl. PAM nicht an Produktivsystemen herum! </p>
<p>Ich persönlich finde übrigens an der Politik von Opensuse, lokalen Kriterien den Vorrang zu geben, nicht viel auszusetzen.      </p>
<p>Wer LDAP-Abfragen dennoch den Vorrang geben will, sollte sich unbedingt die von PADL vorgeschlagenen Standard-Konfigurationen für PAM ansehen </p>
<p><a href="http://oss.sgi.com/LDP/HOWTO/LDAP-Implementation-HOWTO/pamnss.html">http://oss.sgi.com/LDP/HOWTO/LDAP-Implementation-HOWTO/pamnss.html</a> , </p>
<p>gründlich analysieren und sich fragen, ob und wie das zum eigenen System passt. </p>
<p>Weniger gefährlich sind entsprechende Tests für die Einstellungen zu SSH in der Datei &#8220;/etc/pam.d/sshd&#8221;. Siehe hierzu: </p>
<p><a href="http://quark.humbug.org.au/publications/ldap/system_auth/sage-au/system_auth.html">(http://quark.humbug.org.au/publications/ldap/system_auth/sage-au/system_auth.html</a> </p>
<p>oder </p>
<p><a href="http://www.linuxlaboratory.org/articles/linux-ldap-client/">http://www.linuxlaboratory.org/articles/linux-ldap-client/</a></p>
<p style="font-size:16px; font-weight:bold; margin-top:40px; margin-bottom:10px;">Zusammenfassung und offene Punkte</p>
<p>Wir haben in diesem Beitrag gesehen, wie wir ein anderes System (hier &#8220;vms1&#8243;) an den LDAP-Server anbinden können. Dabei haben wir uns damit befasst, in welcher Form Opensuse auf dem LDAP-Server templateartige Vorgaben zur Anlage von Usern und Gruppen hinterlegt und wie man diese Vorgaben verändert. Ferner haben wir uns über die entsprechenden Konfigurationsdateien auf dem Testsystem ein paar Hinweise dazu geholt, wie das Zusammenwirken von NSS, PAM mit LDAP durch die von YaST2 automatisch vorgenommenen Einstellungen konfiguriert wird. </p>
<p>Im Ergebnis können wir nun mehrere Clientsysteme mit dem LDAP-Server TLS-gesichert verbinden und von jedem Client aus (per YaST2) neue User für die Benutzung des jeweiligen Clients anlegen. Damit haben wir aber immer noch keine wirklich tragfähige zentrale Authentifizierungsstruktur erreicht. </p>
<p>Folgende durchaus sicherheitskritische Fragen sind nämlich offen und sollten von einem verantwortungsbewußten Admin untersucht werden:  </p>
<ul>
<li>Wie kann ich unter Opensuse auf dem LDAP-Server eine zentrale Passwort-Politik hinterlegen, die für alle LDAP-User gleichermaßen gelten soll?</li>
<li>Können sich eigentlich User, die man von bestimmten Clientsystemen aus auf dem LDAP-Server (hier &#8220;vms2&#8243;) angelegt hat, auch auf dem Server &#8220;vms2&#8243; selbst einloggen? Oder auf anderen Client-Systemen? Per grafischer Oberfläche oder am Login-Prompt oder per ssh ? Ist ein Login möglich, selbst wenn auf dem System kein Home-Verzeichnis angelegt wurde?
</li>
<li>Wie schütze ich ggf. den Server oder auch andere Systeme gegen den Zugriff von x-beliebigen Usern, die wir im LDAP-Verzeichnis per YaST2 von irgendeinem bestimmten Client-System aus angelegt haben ? Wie begrenze ich den Zugriff eines im LDAP erfassten Users oder einer Gruppe auf bestimmte Hosts? </li>
</ul>
<p>Auf diese Fragen bietet der nächste Beitrag LDAP IV aus der LDAP-Reihe eine Antwort. Und dann werden wir auch einige Grenzen der Bordmittel von YaST2 zur Interaktion mit einem LDAP-Server erkennen.       </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/05/11/opensuse-121-ldap-iii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VMware WS 8.0.2 - CPU Spitzen und Systemhänger</title>
		<link>http://linux-blog.anracom.com/2012/04/23/vmware-ws-802-cpu-spitzen-und-systemhanger/</link>
		<comments>http://linux-blog.anracom.com/2012/04/23/vmware-ws-802-cpu-spitzen-und-systemhanger/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 07:45:39 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[VMware Workstation]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/04/23/vmware-ws-802-cpu-spitzen-und-systemhanger/</guid>
		<description><![CDATA[Ich habe seit längerem VMware Workstation 8.0.2 auf meinem Opensuse 12.1 (x86_64) - System installiert. In letzter Zeit habe ich VMware&#8217;s  Desktop-Virtualisierungsumgebung aber nicht häufig benutzt, da das Wesentliche bei mir inzwischen unter KVM abläuft. Am Wochenende gab es jedoch  Bedarf, mit dem unter VMware als Gast installierten Windows XP zu arbeiten. Parallel [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe seit längerem VMware Workstation 8.0.2 auf meinem Opensuse 12.1 (x86_64) - System installiert. In letzter Zeit habe ich VMware&#8217;s  Desktop-Virtualisierungsumgebung aber nicht häufig benutzt, da das Wesentliche bei mir inzwischen unter KVM abläuft. Am Wochenende gab es jedoch  Bedarf, mit dem unter VMware als Gast installierten Windows XP zu arbeiten. Parallel dazu war ich unter Linux intensiv mit Eclipse, Openoffice, Kontact und Kate tätig. </p>
<p>Dabei fiel mir auf, dass das gesamte System regelmäßig kurzzeitig hängen blieb - so etwa alle 2-3 Minuten für ca. 1-2 Sekunden, manchmal auch etwa länger. Damit einhergehend traten ungewöhnlich hohe Spikes in der CPU-Belastung mehrerer Prozessor-Cores auf. </p>
<p>Ein wenig Analyse mit &#8220;ksysguard&#8221; und &#8220;ps&#8221; zeigte, dass die CPU-Belastung tatsächlich vom Prozess &#8220;vmware-vmx&#8221; herrührten. Es half auch nichts, die Last mit &#8220;taskset&#8221; an bestimmte Cores zu binden. Das ziemlich ärgerliche Verhalten des Gesamtsystems war bis einschließlich der Version VMware 8.0.1 nicht aufgetreten.   </p>
<p>Nach etwas Recherche in VMwares&#8217;s Workstation Forum und anderen Foren schien es so, als ob es unter VMware WS 8.0.2 wohl Probleme mit externen Laufwerken gäbe:<br />
<a href="http://forums.techarena.in/windows-software/1431610-2.htm"><br />
http://forums.techarena.in/windows-software/1431610-2.htm</a></p>
<p>In Frage kamen in meinem Fall entweder das der virtuellen Maschine zugeordnete Floppy-Laufwerk oder aber eines der DVD-Laufwerke bzw. der DVD-Brenner. </p>
<p>Tatsächlich brachte ein völliges Entfernen der Ressource &#8220;Floppy Drive&#8221; vom Setup des virtuellen Gastes bei mir die Lösung. (Zusätzlich habe ich beim DVD-Laufwerk die Einstellung auf &#8220;autodetect&#8221; gesetzt. Das erwies sich aber nach mehreren Tests mit anderen Einstellungen aber als nicht ausschlaggebend.) </p>
<p>Danach verschwanden bei mir die CPU Spitzen und das Gesamtsystem lief wieder glatt und ohne Hänger. Hier hat VMware wohl noch etwas zu tun &#8230;..            </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/04/23/vmware-ws-802-cpu-spitzen-und-systemhanger/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Opensuse 12.1 - LDAP II</title>
		<link>http://linux-blog.anracom.com/2012/03/25/opensuse-121-ldap-ii/</link>
		<comments>http://linux-blog.anracom.com/2012/03/25/opensuse-121-ldap-ii/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 18:00:38 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[LDAP]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/03/25/opensuse-121-ldap-ii/</guid>
		<description><![CDATA[Aufgabenstellung
Im vorhergehenden Beitrag hatte ich dargestellt, wie man einen LDAP-Server ohne TLS unter Opensuse 12.1 mit YaST-Bordmitteln anlegt. Ferner hatte ich gezeigt, wie man danach die lokale YaST2-&#8221;User- und Gruppenverwaltung&#8221; auf dem Server für die Benutzung des LDAP-Systems einrichtet.     
Nun stellen wir den LDAP-Server auf unserem Server-Testsystem &#8220;vms2&#8243; auf eine TLS-Absicherung [...]]]></description>
			<content:encoded><![CDATA[<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Aufgabenstellung</p>
<p>Im vorhergehenden Beitrag hatte ich dargestellt, wie man einen LDAP-Server <em>ohne</em> TLS unter Opensuse 12.1 mit YaST-Bordmitteln anlegt. Ferner hatte ich gezeigt, wie man danach die lokale YaST2-&#8221;User- und Gruppenverwaltung&#8221; auf dem Server für die Benutzung des LDAP-Systems einrichtet.     </p>
<p>Nun stellen wir den LDAP-Server auf unserem Server-Testsystem &#8220;vms2&#8243; auf eine TLS-Absicherung der Kommunikation mit internen und externen Clients um. Danach passen wir zunächst die lokalen YaST2-Clients und PAM zur &#8220;User- und Gruppenverwaltung&#8221; für einen TLS-Zugriff auf das LDAP-Backend an. </p>
<p>Eine TLS-abgesicherte Kommunikation lokaler LDAP-Clients mit dem LDAP-Server auf ein und demselben System ist aber natürlich nicht das wirkliche Ziel unserer Arbeiten, sondern nur ein Zwischenschritt. Vielmehr wollen wir später von anderen Opensuse-Systemen aus den LDAP-Server zur systemübergreifenden Benutzerverwaltung heranziehen.  </p>
<p>Im nächsten Teil &#8220;LDAP III&#8221; dieser Beitragsserie werden wir deshalb die erforderlichen Client-Konfigurationsschritte auch auf einem anderen externen Opensuse 12.1-System (Testsystem namens &#8220;vms1&#8243;) vornehmen. Die Yast2-User und Gruppenverwaltung auf dem System &#8220;vms1&#8243; wird dann auf unseren LDAP-Server &#8220;vms2&#8243; zugreifen. Auch PAM-basierte Login-Versuche auf &#8220;vms1&#8243; werden dann über den LDAP-Server des Systems &#8220;vms2&#8243; autorisiert werden.  </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_vms1_vms2.png' alt='LDAP_vms2_vms1' /></p>
<p>Dadurch erreichen wir letztlich eine rechnerübergreifende Authentifizierung, und die UIDs und GIDs werden systemübergreifend eindeutig. Letzteres ist u.a. auch für Remote-Zugriffe auf Samba- oder NFS-Verzeichnisse wegen der UNIX-Rechtekämme durchaus von Bedeutung. Die Unix-Zugriffsrechte auf Verzeichnisse und Dateien orientieren sich ja an den UIDs und GIDs und nicht an Benutzer- oder Gruppennamen.   </p>
<p>Die Client-Konfiguration erfolgt auf einem externen System (hier &#8220;vms1&#8243;) übrigens völlig analog zu der Konfiguration der lokalen LDAP-Clients auf dem Serversystem &#8220;vms2&#8243;. Wenn wir die Inhalte dieses Beitrages hinter uns haben, haben wir uns also bereits eine schöne Schablone für das Vorgehen auf externen Systemen erarbeitet.        </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Kurzdarstellung von TLS / notwendige Zertifikate</p>
<p>TLS stellt ein Verfahren dar, bei dem ein Client mit einem Server zunächst ein asymmetrisches Verschlüsselungs-Verfahren (RSA, Diffie-Hellmann, andere) für eine verschlüsselte Vorkommunikation im Vorfeld eines verschlüsselten Datenaustausches nutzt. Danach ermitteln Client und Server auf Basis ausgetauschter Daten das Geheimnis eines weiteren, symmetrischen Verschlüsselungsverfahrens, welches schließlich für die eigentliche Datenaustausch-Session genutzt wird.  </p>
<p>Der Client bietet im ersten Schritt eine Reihe von asymmetrischen Verfahren an und der Server nimmt davon das stärkste. Der Server übermittelt seinen öffentlichen Schlüssel und ein digitales Server-Zertifikat. Der Client überprüft die Identität des Servers gegen eine <strong>Certificate Authority</strong> (<strong>CA</strong>), der er vertraut. Mit Hilfe des Public Keys des Servers berechnet der Client je nach gegenseitig vorgesehenem Verschlüsselungsverfahren Schlüssel-(Vor)-Informationen, auf deren Basis dann Server und Client den endgültigen symmetrischen Schlüssel für die Sitzung berechnen und festlegen. </p>
<p>Das Schöne dabei ist, dass man dabei den ganz gewöhnlichen LDAP-Port für die abgesicherte Kommunikation einsetzen kann. Das ist auch als <strong>Start-TLS</strong>-Verfahren bekannt.    </p>
<p>Welche verschlüsselungsrelevanten Daten müssen auf dem LDAP-Server und den LDAP-Clients vorliegen? </p>
<ul>
<li><strong>Server:</strong> Der LDAP-Server benötigt im einfachsten Fall das <strong>Zertifikat der CA</strong> als sog. <strong>&#8220;pem&#8221;-Datei</strong>. </li>
<li style="margin-top:8px;"><strong>Server:</strong> Der Server benötigt ferner sein eigenes TLS/SSL-<strong>Serverzertifikat</strong>, das ihm von der CA ausgestellt wurde. </li>
<li style="margin-top:8px;"><strong>Server:</strong> Erforderlich sind ferner der zum Serverzertifikat gehörige <strong>private Schlüssel</strong> und natürlich auch der <strong>öffentliche Schlüssel</strong>. </li>
<li style="margin-top:8px;"><strong>Server:</strong> Der private Schlüssel selbst muss unverschlüsselt in einer Datei vorliegen. Diese Datei muss gegen Zugriffe also über entsprechende Rechte des Filesystems abgesichert werden.</li>
<li style="margin-top:8px;"><strong>Client:</strong> Der Client benötigt im einfachsten konfigurierbaren Fall (Bind-Zugang zum LDAP-Server und entsprechende Autorisierung) nur das CA-Zertifikat. </li>
</ul>
<p style="margin-top:20px;">
Einige weitere Hinweise sind hierzu angebracht: </p>
<ol>
<li>Der erste Punkt müßte genauer eigentlich heißen: Es werden die Zertifikate der involvierten CA-Hierarchie von der für den Server zuständigen CA bis hin zur Root-CA benötigt. S. hierzu die Ausführungen weiter unten.  In unserem Test-Fall wird es aber nur genau eine CA, nämlich die Root-CA, geben.
</li>
<li style="margin-top:8px;">Bzgl. des letzten client-bezogenen Punktes sähe es übrigens dann anders aus, wenn man TLS nicht nur für die Verbindungsverschlüsselung, sondern auch für eine starke zertifikatsbasierte Authentifizierung des Clients gegenüber dem LDAP-Server nutzen wollte. Ein solches Vorgehen behandeln wir hier aber nicht.</li>
<li style="margin-top:8px;">Zertifikatsdateien beinhalten nur öffentliche Schlüssel und müssen daher nicht so stark abgesichert werden, wie die Datei mit dem privaten Server-Schlüssel.</li>
</ol>
<p>Zertifikate sind für TLS in jedem Fall essentiell und müssen durch geeignete Tools generiert werden. Wir spielen in unserem Fall (internes Netzwerk) selbst die Root-CA, die Zertifikate und Schlüssel ausstellt. In unserem einfachen Fall soll die CA auch noch auf unserem Testsystem &#8220;vms2&#8243; beheimatet sein, also auf dem System, das auch den LDAP-Server selbst beherbergt. </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 1: Erstellung der erforderlichen Zertifikate mit YaST2</p>
<p>Um Zertifikate für SSL/TLS zu erstellen, muss auf dem Opensuse-System &#8220;OpenSSL&#8221; installiert sein. Zur Zertifikats-Erstellung nutzen wir unter Opensuse folgendes YaST2-Modul: </p>
<p style="margin-left:20px; width:300px; background-color:#DDD;">yast2-ca-management.</p>
<p>Die zugehörigen RPM-Pakete sollten unbedingt auf den neuesten Stand gebracht werden. Das YaST-CA-Management hatte zumindest im Release Candidate zu Opensuse 12.1 noch Fehler.  Mit bestimmten neueren Versionen von openssl ließ es sich auch auf einem neu eingerichteten Systemen nicht starten. (Natürlich kann man alles auch über die Kommandozeile machen - aber ich bin überhaupt kein Feind grafischer Tools, wenn sie denn funktionieren). </p>
<p>Wir öffnen als User root unter Yast nun das CA-Management und drücken im Fenster auf &#8220;Create Root CA&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_21.png' alt='ldap_21' /></p>
<p>Wir füllen auf den nächsten Dialogfeldern die Daten passend aus und erhalten schließlich unser Root-CA-Zertifikat. . </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_22.png' alt='ldap_22' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_23.png' alt='ldap_23' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_24.png' alt='ldap_24' /></p>
<p>Hier handelt es sich nur um einen Test - in der Realität sollte man sich auch für kleinere Firmen die CA-Hierarchie gut überlegen. In einigen Fällen wird es unterhalb der Root CA für spezifische Bereich des Unternehmens weitere CA-Autoritäten geben.   </p>
<p>Hat man bereits eine mehrstufige CA-Hierarchie oder erstellt man eine solche, so müssen für ein funktionierendes TLS unter LDAP auf dem Server <strong>alle</strong> Zertifikate der CAs oberhalb derjenigen Instanz vorhanden sein, die das Serverzertifikat ausgestellt hat. In unserem Fall ist nur genau eine Zertifikatsdatei, nämlich die der Root-CA, erforderlich. </p>
<p>Nun müssen wir als nächstes eine Datei für das CA-Root-Zertifikat erstellen. Im nachfolgenden Dialog drücken wir deshalb auf &#8220;Enter CA&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_25.png' alt='ldap_25' /></p>
<p>Danach erkennen wir wieder uns Root-CA-Zertifikat. Wir exportieren dieses nun als Datei: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_26.png' alt='ldap_26' /></p>
<p>Als Ziel des Exports geben wir auf unserem Testsystem der Einfachheit halber das Verzeichnis <strong>&#8220;/etc/openldap/&#8221;</strong> an. </p>
<p>Man wird auf einem realen System möglicherweise einen anderen, zentraleren Ordner für die Unterbringung seines Zertifikats oder seiner Zertifikate wählen. Wichtig ist aber, dass man die hier besprochenen Zertifikate und Schlüssel für denjenigen User, unter dem der LDAP-Server (genauer der zugehörige Prozess) läuft, zugänglich macht. Siehe weiter unten. Auf das CA-Zertifikat dürfen übrigens auch andere User lesend zugreifen. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_27.png' alt='ldap_27' /> </p>
<p>Nun wollen wir das &#8220;Serverzertifikat&#8221; für unseren LDAP-Server erstellen. Hierzu gehen wir auf den Reiter &#8220;Certificates&#8221; und wählen &#8220;Add Server Certificate&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_28.png' alt='ldap_28' />  </p>
<p><strong>Wichtiger Hinweis:</strong> Auf der nächsten Seite ist dann der sogenannte <strong>&#8220;Common Name&#8221;</strong> von einiger Bedeutung: </p>
<p>Wie schon im ersten Teil zur LDAP-Einrichtung erwähnt, ist es hier sinnvoll bis notwendig, den <strong>FQDN</strong> des Servers anzugeben - also den Namen inklusive  Domain-Anteil. Der &#8220;Fully Qualified Domain Name&#8221; muss natürlich konsistent zu den Einträgen auf dem DNS-Server des lokalen Netzwerkes sein. </p>
<p>Der Grund für die Angabe des FQDN ist der Umstand, dass bei den von Opensuse vorgenommenen Standardeinstellungen des LDAP-Servers und der LDAP-Clients während des TLS-Aufbaus der &#8220;Common Name&#8221; des Server-Zertifikats mit dem Peer-Namen, unter dem der Server geführt ist, verglichen wird. </p>
<p>Typischerweise schlägt Opensuse bei einer Einrichtung lokaler Clients, die also auf dem gleichen System wie der LDAP-Server selbst beheimatet sind, statt des FQDN die Netzwerkadresse 127.0.0.1 vor. Das verführt leider dazu, auch bei echten Remote Clients für den Server IP-Adressen einzutragen. Solche LDAP Client-Einstellungen funktionieren ohne spezielle Zusatzeinstellungen des LDAP-Systems nicht mit TLS-Zertifikaten. </p>
<p>Der natürliche kleinste gemeinsame Nenner ist vielmehr FQDN des Servers. In unserem Fall also: &#8220;vms2@anracona.de&#8221;.       </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_29.png' alt='ldap_29' /></p>
<p>Wir gehen dann weiter, geben das zu verwendende Passwort für den Schlüssel an und erhalten schließlich unser &#8220;Server-Zertifikat&#8221; für den LDAP-Server. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_30.png' alt='ldap_30' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_31.png' alt='ldap_31' /></p>
<p>Dieses exportieren wir wieder als &#8220;pem&#8221;-File: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_33.png' alt='ldap_33' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_34.png' alt='ldap_34' /></p>
<p>Die Dateibezeichnung ist dabei unerheblich. Abschließend exportieren wir zum gerade noch geöffneten Serverzertifikat auch noch eine &#8220;pem&#8221;-Datei mit dem <strong>&#8220;Private Key&#8221;</strong>. Dieser muss unverschlüsselt exportiert werden. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_35.png' alt='ldap_35' /></p>
<p>Wir wechseln nun in das Verzeichnis &#8220;/etc/openldap/&#8221; und <strong>ändern den Owner und die Rechte der eben exportierten Dateien</strong> auf vernünftige Werte ab: </p>
<p>Auf dem Opensuse-System ist defaultmäßig der User &#8220;ldap&#8221; ind der Gruppe &#8220;ldap&#8221; eingerichtet. Unter diesem User läuft der LDAP-Daemon-Prozess: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms2:/etc/openldap # ls -l<br />
total 40<br />
-rw-r&#8211;r&#8211; 1 root root 1838 Mar 11 16:45 anracona_vms2.pem<br />
-rw-r&#8211;r&#8211; 1 root root  283 Mar 10 18:21 ldap.conf<br />
-rw-r&#8211;r&#8211; 1 root root  245 Oct 29 19:17 ldap.conf.default<br />
drwxr-xr-x 2 root root 4096 Mar 10 15:22 schema<br />
-rw-r&#8212;&#8211; 1 root ldap  979 Mar 10 18:21 slapd.conf<br />
-rw-r&#8212;&#8211; 1 root root 2538 Mar 10 18:21 slapd.conf.YaSTsave<br />
-rw-r&#8212;&#8211; 1 root ldap 2538 Oct 29 19:18 slapd.conf.default<br />
drwxrwx&#8212; 3 ldap ldap 4096 Mar 10 18:20 slapd.d<br />
-rw-r&#8211;r&#8211; 1 root root 1830 Mar 11 17:11 vms2_cert.pem<br />
-rw-r&#8211;r&#8211; 1 root root 1675 Mar 11 17:16 vms2_key.pem<br />
vms2:/etc/openldap # chown ldap.ldap anracona_vms2.pem vms2_*<br />
vms2:/etc/openldap # chmod 640 vms2_cert.pem<br />
vms2:/etc/openldap # chmod 640 anracona_vms2.pem<br />
vms2:/etc/openldap # chmod 600 vms2_key.pem
</p>
<p style="font-size:14px; font-weight:bold; margin-top:40px; margin-bottom:10px;">Schritt 2: Umstellung des LDAP-Servers auf TLS mit Hilfe von YaST</p>
<p>Nun haben wir zwar Zertifikate, aber der LDAP-Server muss noch für den Einsatz von TLS konfiguriert werden. </p>
<p>Wir wählen im graphischen Auswahlmenü von YaST2 nun den Punkt <strong>&#8220;LDAP Server&#8221;</strong> und wechseln dort im linken Menü zu den </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">&#8220;Global Settings&#8221; &gt; &#8220;TLS Settings&#8221;.</p>
<p>Der Punkte <strong>&#8220;Enable LDAP over SSL&#8221;</strong> wird automatisch angewählt. Für diese Art der SSL-Verbindung wird der Port &#8220;636&#8243; verwendet. </p>
<p>Auf unserem Testsystem lassen wir diese Einstellung. Auf einem realen System sollte man sich allerdings die Öffnung eines weiteren Ports aus Sicherheitsgründen gut überlegen. Denn dies ist nicht zwingend erforderlich:  </p>
<p>Moderne LDAP-Clients können in der Regel die &#8220;Start TLS&#8221;-Möglichkeit für den Standard-LDAP-Port 389 nutzen (siehe weiter unten). &#8220;ldaps&#8221; und Port 636 werden dann nicht benötigt.         </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_38.png' alt='ldap_38' /></p>
<p>Ferner geben wir in der obigen Maske die Informationen zu den Zertifikatsdateien ein. Danach drücken wir auf den &#8220;OK&#8221;-Button und starten zur Sicherheit unseren LDAP-Server per <strong>&#8220;rcldap restart&#8221;</strong> neu. </p>
<p>An dieser Stelle lohnt sich ein Blick in die Konfigurationsdatei &#8220;/etc/openldap/slapd.d/cn=config.ldif&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_39.png' alt='ldap_39' /> </p>
<p>Durch die Einträge </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
olcTLSCACertificateFile: /etc/openldap/anracona_vms2.pem<br />
olcTLSCertificateFile: /etc/openldap/vms2_cert.pem<br />
olcTLSCertificateKeyFile: /etc/openldap/vms2_key.pem
</p>
<p>wird der Server auf den Einsatz von TLS eingestellt, wenn der jeweilige Client dies nutzen will. </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 3: Einrichtung des YaST-LDAP-Clients für die TLS-Nutzung</p>
<p>Wir richten nun auf unserem Testsystem (im Moment noch der LDAP-Server) den YaST &#8220;LDAP-Client&#8221; für die Nutzung von TLS ein. Hierzu öffnen wir die entsprechend bezeichnete Maske aus dem graphischen Menü von YaST2 heraus:</p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_36.png' alt='ldap_36' /> </p>
<p>Man mag nun in der Tat ein wenig darüber rätseln, welcher &#8220;Client&#8221; hier denn eigentlich gemeint ist. Nun ja, SuSE meint wohl in erster Linie den YaST2-Client zur User und Gruppenverwaltung. Denn derselbe Dialog ist auch über Submenüs und Reiter der Yast2-User und Gruppenverwaltung zugänglich. </p>
<p>Andererseits sind die Einstellungen aber doch allgemeinerer Natur, denn sie werden in beiden zentralen Konfigurationsdateien des Opensuse-Systems für LDAP-Clients   </p>
<ul>
<li><strong>/etc/ldap.conf</strong></li>
<li style="margin-top:8px;"><strong>/etc/openldap/ldap.conf</strong></li>
</ul>
<p>hinterlegt. </p>
<p>Es stellt sich nun die Frage: Warum benötigt man eigentlich 2 Konfigurationsdateien für die von uns einzurichtenden LDAP-Clients? </p>
<p>Die Antwort liegt darin begründet, dass die nachfolgende Einrichtung &#8220;des Clients&#8221; vor allem das User- und Gruppen-Management betrifft. Hier geht auf aktuellen Linux-Systemen nichts mehr ohne PAM und NSS. </p>
<p>PAM dient der Authentifizierung von Usern gegenüber bestimmten Systemkomponenten. Die meisten Systemdienste sind heute PAM-&#8221;aware&#8221;, also PAM-fähig. Bei den entsprechenden Auth-Prozessen spielen User-Accounts des Systems die wesentliche Rolle. Solche Accounts können in mehreren Daten-Backends hinterlegt werden. Das entsprechende Regelwerk, ob und wann einen Authentifizierung über ein bestimmtes Backend notwendig oder hinreichend ist, kann pro Service sehr modular und unter Einbindung mehrerer Authentifizierungs-Backends konfiguriert werden. </p>
<p>PAM und NSS können unter mehreren abzufragenden Quellen auch LDAP als Authentifizierungs-Backends verwenden. Hierfür benötigt man schon aus Sicherheitsgründen spezielle Regeln - u.a. muss definiert werden, über welche Methodik oder welchen Account die PAM-Prozesse Zugang zum LDAP-Server erhalten, in welcher Weise Passwörter abgefragt oder gesetzt werden dürfen. Das Regelwerk, wie PAM und  NSS mit dem LDAP-System umgehen sollen, wird bei Opensuse für PAM und NSS in einer gemeinsamen Konfigurationsdatei &#8220;/etc/ldap.conf&#8221; festgelegt. </p>
<p>Der Unterschied zwischen den beiden unter Opensuse zu füllenden Konfigurationsdateien &#8220;/etc/ldap.conf&#8221; und &#8220;/etc/openldap/ldap.conf&#8221; lässt sich also wie folgt beschreiben: </p>
<ul>
<li>Die erste Datei &#8220;/etc/ldap.conf&#8221; wird von PAM/NSS im Rahmen der Autorisierung von Systemzugängen verwendet, um LDAP in geeigneter Weise als ein Authentifizierungs-Backend einzubinden. </li>
<li  style="margin-top:8px;">Die Datei &#8220;/etc/openldap/ldap.conf&#8221; ist dagegen die systemweite Einstellungsdatei, die für gewöhnliche Standard-OpenLDAP-Clients den Zugang und die Interaktion mit dem LDAP-Server regelt. U.a. wird diese letztere Datei von Tools wie &#8220;ldapadd, ldapmodify&#8221; etc. gelesen.</li>
</ul>
<p>Die LDAP-Client-Konfiguration über YaST nimmt im Hintergrund parallel die notwendigen Einstellungen sowohl für PAM- und NSS als auch für die &#8220;normalen&#8221; LDAP-Clients der OpenLDAP-Installation vor. </p>
<p>Wir erkennen in der obigen Abbildung die grundsätzlichen Einstellungen aus dem ersten Teil &#8220;LDAP I&#8221; wieder. Im Bild haben wir bereits den neuen Haken bei der Checkbox für &#8220;LDAP TLS/SSL&#8221; gesetzt.   </p>
<p>Nun gehen wir zum Punkt &#8220;Advanced Configuration&#8221;. Dort geben wir an, wo auf unserem Client-System (das bislang noch mit dem LDAP-Server identisch ist) das Zertifikat der Root-CA liegt. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_37.png' alt='ldap_37' /></p>
<p><strong>Achtung :</strong> Das hat nichts mit den Einstellungen des Servers zu tun. </p>
<p>Nur weil wir hier auf ein und demselben Testsystem arbeiten, auf dem auch unser LDAP-Server untergebracht ist, können wir das &#8220;/etc/openldap&#8221;-Verzeichnis nehmen. Auf anderen echten Remote-Client-Systemen mag das Root-CA-Zertifikat der Cert. Authority, der wir vertrauen, an anderer Stelle (mit der notwendigen Leseberechtigung) hinterlegt sein. Dann muss man die Pfade, die auf dem betreffenden Client gültig sind, angeben. </p>
<p>Noch ein Hinweis: Eigentlich sind die Einträge des Verzeichnisses und der CA-Datei Alternativen. </p>
<p>Ist eine Zertifikatsdatei explizit angegeben, wird diese beim Aufbau der TLS-Verbindung zum Server für die Verifikation seines Server-Zertifikates auch benutzt. Dies lohnt sich für lokale Netze, bei denen es genau eine Root-CA gibt, die alle Zertifikate ausstellt. (In unserem Fall handelt es sich bei dem ausgestellten Zertifikat auch noch um ein selbst signiertes Zertifikat ein und desselben Servers, dem der Client vertrauen soll). </p>
<p>Wenn der Client jedoch mehrere CAs kennen muss, weil er mehrere TLS-Verbindungen zu unterschiedlichen LDAP-Servern aufbauen muss, so gibt man alternativ <em>nur</em> den Pfad zu einem Verzeichnis an. Alle benötigten Zertifikate der CAs, denen der Client vertraut, müssen in diesem Verzeichnis untergebracht werden. Ein solches Verzeichnis muss zur korrekten Verwendung aber speziell gemanaged werden. Siehe hierzu die LDAP-Dokumentation: </p>
<p>&#8220;The specified directory must be managed with the OpenSSL c_rehash utility as well&#8221;. In unserem Beispiel würde dies das Absetzen folgender Befehle bedeuten:  </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms2:~ # cd /etc/openldap/<br />
vms2:/etc/openldap # c_rehash .<br />
Doing .<br />
anracona_vms2.pem => da108506.0<br />
anracona_vms2.pem => b2a65b68.0<br />
vms2_cert.pem => 1379254f.0<br />
vms2_cert.pem => 955c98c7.0<br />
WARNING: vms2_key.pem does not contain a certificate or CRL: skipping<br />
vms2:/etc/openldap #
</p>
<p>Wir können im Moment jedoch gut mit einer Installation leben, bei der unser Root-CA-File direkt angegeben wird. </p>
<p>Die Einstellungen unter dem Reiter &#8220;Administration Settings&#8221; hatten wir im einleitenden Teil &#8220;LDAP I&#8221; ja schon gesetzt. Hier müssen wir nichts verändern. </p>
<p>Wie gesagt, konfiguriert Opensuse die LDAP-Clients - u.a. die Name-Service-Switch-Dienste und die LDAP-Module vom PAM  - für den Einsatz von TLS (im Gegensatz zu Debian und Ubuntu) in ein und derselben Datei   &#8220;/etc/ldap.config&#8221;. Es lohnt sich, diese Datei und die dortigen Kommentare zu den Optionen einmal vollständig durchzuarbeiten. Die wichtigsten Einstellungen für eine elementare Konfiguration unter Opensuse sind: </p>
<p><strong>Wichtigste Inhalte der Datei &#8220;/etc/ldap.conf&#8221;: </strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
base	dc=anracona,dc=de<br />
bind_policy	&nbsp;&nbsp; soft<br />
pam_lookup_policy &nbsp;&nbsp; 	yes<br />
pam_password &nbsp;&nbsp; 	exop<br />
nss_initgroups_ignoreusers &nbsp;&nbsp; 	root,ldap<br />
nss_schema &nbsp;&nbsp; 	rfc2307bis<br />
nss_map_attribute &nbsp;&nbsp; 	uniqueMember &nbsp;&nbsp;  member<br />
&nbsp;<br />
ssl &nbsp;&nbsp; 		start_tls<br />
uri &nbsp;&nbsp; 		ldap://vms2.anracona.de<br />
ldap_version &nbsp;&nbsp; 		3<br />
pam_filter &nbsp;&nbsp; 		objectClass=posixAccount<br />
tls_cacertdir &nbsp;&nbsp; 		/etc/openldap<br />
tls_cacertfile &nbsp;&nbsp; 		/etc/openldap/anracona_vms2.pem
</p>
<p>Mit ein wenig Phantasie kann man einiges hiervon auch ohne Erläuterung einordnen. Bzgl. weiterer Optionen, ihrer Bedeutung und vieler Details muss man sich in der Fachliteratur und/oder im Internet kundig machen.   </p>
<p>Die wichtigsten Einstellungen in der Datei <strong>&#8220;/etc/openldap/ldap.conf&#8221;</strong> sind: </p>
<p><strong>Wichtigste Inhalte der Datei &#8220;/etc/openldap/ldap.conf&#8221;: </strong></p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
host	&nbsp;&nbsp; localhost<br />
base	&nbsp;&nbsp;  dc=anraona,dc=de<br />
uri &nbsp;&nbsp;  ldap://vms2.anracona.de/<br />
ldap_version &nbsp;&nbsp; 3<br />
ssl &nbsp;&nbsp; start_tls<br />
tls_cacert &nbsp;&nbsp; /etc/openldap/anracona_vms2.pem<br />
TLS_REQCERT &nbsp;&nbsp; allow<br />
tls_checkpeer &nbsp;&nbsp; yes
</p>
<p>Man erkennt die Ähnlichkeit der Einträge zur PAM-bezogenen Datei unmittelbar. </p>
<p>Die Option &#8220;tls_checkpeer yes&#8221; ist übrigens auch für PAM verbindlich, wenn sie in &#8220;/etc/openldap/ldap.conf&#8221; gesetzt ist. Sie sorgt dafür, dass das Serverzertifikat durch eine vertrauenswürdige CA verifiziert und auch mit dem Peer-Namen verglichen wird.   </p>
<p><strong>Hinweis zur Konfiguration von PAM und NSS für LDAP auf Nicht-Opensuse-Systemen</strong><br />
Unter anderen Linuxsystemen - vor allem Debian-basierten - werden zur Konfiguration statt einer einzigen Datei &#8220;/etc/ldap.conf&#8221; mehrere getrennte Dateien eingesetzt, die dann separat mit den notwendigen Informationen zu füllen sind. Einen Überblick liefert <a href="http://wiki.ubuntuusers.de/LDAP_Client_Authentifizierung">http://wiki.ubuntuusers.de/LDAP_Client_Authentifizierung</a>. Unter SuSE hat man es hier etwas einfacher.</p>
<p><strong>Hinweis zu weiteren LDAP-Clients</strong><br />
Das Muster, dass wir oben für PAM/NSS und die Standard-LDAP-Clients gesehen haben, setzt sich natürlich fort. SW-Module wie SAMBA, POSTFIX, CYRUS, SASL, autonome E-Mail-Clients (z.B.Thunderbird), etc. bringen in der Regel eigene Konfigurationsdateien  und/oder Konfigurationstools für die LDAP-Anbindung mit. Und natürlich haben auch die dortigen Konfigurationsparameter jeweils eigene Bezeichnungen und Bedeutungen. Eine Einstieg vermitteln etwa die Bücher  &#8220;LDAP System Administration&#8221; von Gerald Carter (O&#8217;Reilly) oder &#8220;OpenLDAP 2.4 - Das Praxisbuch&#8221; von O. Liebel, J. M. Ungar (Galileo Computing).    </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 4: Test der funktionierenden Einrichtung des lokalen LDAP-Clients mit YaST</p>
<p>Wir starten nun für einen ersten lokalen (!) Test der TLS-Fähigkeit den Yast2-LDAP-Browser, haken dort die TLS/SSL-Anforderung ab und geben unser LDAP-Administrator-Passwort ein.           </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_40.png' alt='ldap_40' /></p>
<p>Dabei beherzigen wir auch den bereits im ersten Teil angesprochenen Punkt, dass die Default-Einstellungen für den Eintrag &#8220;olcTLSVerifyClient&#8221; in der modularen LDAP-Konfiguration, nämlich  </p>
<p style="margin-left:20px; width:300px; background-color:#DDD;">olcTLSVerifyClient: allow</p>
<p>den &#8220;common name&#8221; des Servers in FQDN-Form erfordern kann und setzen testhalber nicht &#8220;localhost &#8221; oder &#8220;127.0.0.1&#8243; bei der Serveradresse ein, sondern den FQDN. (Die beiden anderen Varianten hätten auf dem lokalen System auch funktioniert; natürlich aber nicht auf echten Remote Clients. Auf einem Remote Client würde auch eine IP-Adress-Angabe zu einem Fehler führen.)     </p>
<p>Danach öffnet sich das Browserfenster und gibt den Blick auf die bislang gering besetzte LDAP-Hierarchie mit zwei Testusern frei:</p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_41.png' alt='ldap_41' /></p>
<p>Kenner sehen, dass die User-Objekte Felder aus mehreren Schemata beinhalten. TLS funktioniert offenbar schon lokal. </p>
<p>Als zweiten Test bemühen wir die Kommandozeile und durchsuchen unser Directory: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">vms2:~ # ldapsearch -x -b &#8216;dc=anracona,dc=de&#8217; -D &#8220;cn=Administrator,dc=anracona,dc=de&#8221; &#8216;(objectclass=*)&#8217; -Z -H ldap://vms2.anracona.de -W</p>
<p>Die Option &#8220;-Z&#8221; fordert eine TLS-gesicherte Verbindung an. Wir geben danach das Passwort ein und sollten schließlich einen Überblick über die Inhalte der LDAP-Datenbank erhalten.    </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms2:~ # ldapsearch -x -b &#8216;dc=anracona,dc=de&#8217; -D &#8220;cn=Administrator,dc=anracona,dc=de&#8221; &#8216;(objectclass=*)&#8217; -Z -H ldap://vms2.anracona.de -W<br />
Enter LDAP Password:<br />
# extended LDIF<br />
#<br />
# LDAPv3<br />
# base <dc=anracona,dc=de> with scope subtree<br />
# filter: (objectclass=*)<br />
# requesting: ALL<br />
#<br />
&nbsp;<br />
# anracona.de<br />
dn: dc=anracona,dc=de<br />
dc: anracona<br />
o: anracona<br />
objectClass: organization<br />
objectClass: dcObject<br />
<strong>&#8230;</strong><br />
<strong>&#8230;</strong>
</p>
<p>Zur Kontrolle: </p>
<p style="margin-left:20px; width:500px; background-color:#DDD;">
vms2:~ # ldapsearch -x -b &#8216;dc=anracona,dc=de&#8217; -D &#8220;cn=Administrator,dc=anracona,dc=de&#8221; &#8216;(objectclass=*)&#8217; -Z -H ldaps://vms2.anracona.de -W<br />
ldap_start_tls: Operations error (1)<br />
&nbsp; &nbsp;&nbsp; &nbsp;        additional info: TLS already started<br />
Enter LDAP Password:
</p>
<p>Die Fehlermeldung beweist, dass der ldaps-Kanal nicht mehr benutzt wird, weil start_tls aufgrund der &#8220;-Z&#8221;-Option bereits wunschgemäß aktiviert ist.  </p>
<p>Als letzten lokalen Test öffnen wir nun lokal die Yast-Benutzerverwaltung und geben als &#8220;Filter&#8221; das LDAP-Backend an: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_42.png' alt='ldap_42' /></p>
<p>Danach sollten wir angelegte LDAP-Testuser sehen - hier z.B. einen User namens &#8220;rmu&#8221;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_44.png' alt='ldap_44' />  </p>
<p>Parallel beobachten wir mit Wireshark den LDAP-bezogenen Traffic auf &#8220;vms2&#8243;: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_45.png' alt='ldap_45' /> </p>
<p>Wir erkennen sehr deutlich, wie das TLS-Protokoll eingeschaltet wird. </p>
<p>Damit sind wir erstmal zufrieden. Im nächsten Teil &#8220;LDAP 3&#8243; dieser Serie sehen wir uns die Sache aus der Perspektive eines externen Opensuse 12 Client-Systems namens &#8220;vms1&#8243; an.  </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/03/25/opensuse-121-ldap-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Opensuse 12.1 - LDAP I</title>
		<link>http://linux-blog.anracom.com/2012/03/11/opensuse-121-ldap-i/</link>
		<comments>http://linux-blog.anracom.com/2012/03/11/opensuse-121-ldap-i/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 23:42:30 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[LDAP]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/03/11/opensuse-121-ldap-i/</guid>
		<description><![CDATA[Hätte nie gedacht, dass es tricky sein kann, unter Opensuse 12.1 OpenLDAP für SSL/TLS mit YaST einzurichten. Ist es aber - und mir ist es in einem ersten naiven Anlauf sogar gelungen, die Yast2-Umgebung so zu ruinieren, dass die YaST-LDAP-Clients nicht mehr zur Kooperation zu bewegen waren. 
Interessanterweise habe ich für Opensuse 12 keine zusammenhängende [...]]]></description>
			<content:encoded><![CDATA[<p>Hätte nie gedacht, dass es tricky sein kann, unter Opensuse 12.1 OpenLDAP für SSL/TLS mit YaST einzurichten. Ist es aber - und mir ist es in einem ersten naiven Anlauf sogar gelungen, die Yast2-Umgebung so zu ruinieren, dass die YaST-LDAP-Clients nicht mehr zur Kooperation zu bewegen waren. </p>
<p>Interessanterweise habe ich für Opensuse 12 keine zusammenhängende Beschreibung im Internet gefunden, wie man ein elementares  LDAP-Setup zu vollziehen hat. Im Gegenteil fand ich in Foren und Blogs etliche Warnungen davor, das überhaupt mit den SUSE-Tools zu versuchen. Es geht aber doch &#8230;</p>
<p>Deshalb beschreibe ich nachfolgend die Schritte, die ich auf einem Testserver durchgeführt habe (der virtuell unter KVM lief). </p>
<p>Vorweg sollte ich ein paar Einschränkungen klarstellen:  </p>
<ul>
<li>Grundlagenkenntnisse zum Aufbau einer hierarchischen LDAP-Datenbank und zu LDAP-Schemata werden vorausgesetzt. So sollte bekannt sein, was &#8220;Distinguished Names&#8221; sind und was im besonderen eine Base-DN oder eine Root-DN ist. Eine Kurzseinführung bietet Wikipedia unter:<br /><a href="http://de.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">http://de.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol</a> </li>
<li  style="margin-top:8px;">In diesem Beitrag geht es nicht um eine umfassende LDAP-Einrichtung und die Konfiguration aller möglichen Clients (z.B. Postfix, Samba) für die Benutzung von LDAP. Es geht nur darum, LDAP neben dem gewöhnlichen Passwort-Mechanismus als Authentifizierungsbackend für den Login auf unterschiedlichen Linux-Systemen (in meinem Fall weitere virtuelle Maschinen) zu nutzen. </li>
<li style="margin-top:8px;">Die Pflege der User-Accounts, Passwörter etc. auf dem LDAP-Server möchte ich dabei mit den entsprechenden Yast2-Tools vornehmen. </li>
<li style="margin-top:8px;">Die Verbindungskanäle der verschiedenen Linux-Systeme, die zur Authentisierung und zur Pflege ihrer User und Gruppen auf den zentralen LDAP-Server zugreifen, sollen mit Hilfe von TLS verschlüsselt werden.</li>
<li style="margin-top:8px;">Es geht hier nicht darum, den Zugang zum LDAP-Server  - außer für Rootprozesse - durch einen eigenen speziellen Authentifizierungsmechanismus wie z.B. SASL in Kombination mit Kerberos abzusichern. Wir begnügen uns hier mit einfachen, sog. Bind-Verfahren, die für ein einfaches Authentisierungsverfahren in Netzen mit geringen Sicherheitsansprüchen genügen. Bzgl. der Sicherheit vertrauen wir in unserem Beispiel lediglich auf die eben erwähnte TLS-Verschlüsselung der Verbindungen zum Server.</li>
<li style="margin-top:8px;">Es geht zunächst auch nicht darum, den Zugang zu bestimmten Informationen auf der LDAP-Datenbank user- oder gruppenspezifisch (besser: bindspezifisch) abzusichern. Lediglich der Zugriff auf die Passwörter zu den Personenaccounts, die im LDAP vorgehalten werden, wird beschränkt.</li>
</ul>
<p>Primäres Ziel ist es also, die Benutzerverwaltung auf dem LDAP-Server mit den YaST-Tools zur Userverwaltung abzuwickeln. Voraussetzung hierfür ist nicht nur eine passende LDAP-Server-Einrichtung, sondern auch die korrekte Einrichtung der YaST2-LDAP-Clients für die &#8220;YaST User- und Gruppenverwaltung&#8221;.  </p>
<p>Das zweite Ziel ist es, testweise einen User-Login sowohl auf einem weiteren externen Testsystem als auch auf dem LDAP-Server selbst über eine Authentisierung gegenüber dem LDAP-Backend vorzunehmen. Hierbei sollen klassische Linux-Authentisierungsmechanismen (PAM in Kombination mit NSS; s.u.) eingesetzt werden. </p>
<p>Diese Module können als LDAP-Clients auf externen Systemen, die ganz unabhängig vom LDAP-Server sind, zum Tragen kommen. Der jeweilige Rechner muss dann mit dem LDAP-Server über eine TCP/IP-Verbindung kommunizieren (Ports: 389 und ggf. auch 636). Aber auch auf dem LDAP-Server selbst wird man diese Authentisierungsmechanismen über LDAP einsetzen; schließlich muss man sich auch dort authentisieren. </p>
<p>Voraussetzung ist, dass die entsprechenden Test-User-Accounts natürlich vorher mit den YAST2-Tools angelegt wurden. Also müssen wir die YAST2-Module zur User-Verwaltung auch auf dem externen Testsystem zur Verwendung von LDAP einrichten. Ferner müssen die notwendigen Authentisierungs-Module als LDAP-Clients auf dem externen Testsystem (und natürlich auch auf dem LDAP-Server selbst) richtig konfiguriert worden sein. Zudem sollte der Zugriff auf den LDAP-Server sowohl für den pflegenden Administrator als auch die Authentisierungsmodule der externen Systeme über eine TLS-gesicherte Verbindung erfolgen.  </p>
<p>In diesem ersten Beitrag &#8220;LDAP I&#8221; beschreibe ich zunächst die Einrichtung des LDAP-Servers mit den YAST-Tools und ohne TLS. Der zweite Teil &#8220;LDAP II&#8221; beschreibt dann das Anlegen eines SSL-Zertifikats für den LDAP-Server und dessen Umstellung auf SSL/TLS. Im Teil &#8220;LDAP III&#8221; gehe ich dann auf die Client-Konfiguration der Linux-typischen Authentisierungsmechanismen (PAM/NSS, s.u.) zur Benutzung des eingerichteten LDAP-Servers ein. </p>
<p style="font-size:18px; font-weight:bold; margin-top:30px; margin-bottom:10px;">1. Vorüberlegungen</p>
<p>Welche Verfahren/Module für die User-Authentisierung werden auf Linux-Systeme eingesetzt? Zu nennen sind hier in erster Linie PADL&#8217;s <strong>PAM</strong> (Plugable Authentication Modules) und <strong>NSS</strong> (Name Service Switch). [Neuere Entwicklungen wie SSSD lasse ich in diesem Artikel unter den Tisch fallen.] </p>
<p>Die genannten Module sind auf den meisten Linux-Systemen als Standard installiert. Sie steuern auch unter Opensuse 12 die Authentisierung gegenüber verschiedenen Backends. U.a. können sie als LDAP-Clients fungieren und auf externe (oder interne) LDAP-Systeme zugreifen. Die Interaktionskette zur Authentisierung eines Users gegenüber einem zentralen LDAP-Server sieht dabei etwa so aus: </p>
<p style="margin-left: 20px; width:550px; background-color:#DDD;">Login-Versuch eines Users mit UID und Passwort auf einem (externen) Linux-System<br />&gt;&gt;<br />NSS/PAM entscheiden über den Authentisierungsweg und leiten den Authentisierungsvorgang ein<br />&gt;&gt;<br />PAM nimmt Kontakt zum LDAP-Server auf (über das Netzwerk oder - falls der Login-Versuch auf dem LDAP-Server selbst erfolgt - über ein lokales Socket-Protokoll)<br />&gt;&gt;<br />PAM erhält Zugang zum LDAP-Server und durchsucht die LDAP-Daten-Bank nach einem Eintrag für den User mit der angegebenen UID<br />&gt;&gt;<br />PAM versucht mit den LDAP-Informationen und dem vom User eingegebenen Passwort danach einen sog. BIND an den LDAP-Server<br />&gt;&gt;<br />Gelingt der BIND, so wird die LDAP-Authentifizierung als gelungen zurückgemeldet<br />&gt;&gt;<br />Ist diese Authentisierung gemäß der PAM-Einstellungen hinreichend, wird der Zugang zum (externen) Linux-System gewährt.<br />&nbsp; </p>
<p>Was unter einem &#8220;BIND&#8221; zu verstehen ist, bespreche ich weiter unten. Wir kümmern uns in diesem LDAP-Artikel nicht um Details der PAM-Bedingungs-Kaskade für eine hinreichende Authentisierung auf einem Linux-System. Wir gehen hier vielmehr von den Opensuse-Standardeinstellungen aus, die bei der Einrichtung der YAST2-Benutzerverwaltung für eine hinreichende LDAP-Authentisierung auf dem betreffenden Linux-System vorgenommen werden. </p>
<p>Interessant sind in unserem Zusammenhang aber natürlich die Einstellungen von PAM-Login und NSS zur Ein- und Anbindung an einen LDAP-Server. Das Schöne dabei ist, dass uns YaST2 hierbei die grundlegenden Arbeitsschritte im Rahmen der Konfiguration der &#8220;Yast2-User und Gruppenverwaltung&#8221; für die LDAP-Nutzung bereits abnimmt.  </p>
<p>Ein paar Hinweise noch zu gedanklichen Fehlern, die man beim Anlegen von LDAP unter Opensuse 12.1 machen kann :</p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px; ">Einsatz modularer LDAP-Konfigurationsdateien anstelle der klassischen Datei &#8220;slapd.conf&#8221;</p>
<p>Das YaST-Modul von Opensuse 12.1 zur Einrichtung eines LDAP-Servers verwendet die klassische Konfigurationsdatei &#8220;slapd.conf&#8221; nicht mehr. Das merkt man aber nicht unbedingt auf Anhieb. Vielmehr ist der optische Informationsstand zu diesem Thema auch noch vom Upgradestand des 12.1-Systems abhängig. </p>
<p>Auf einem voll aktualisierten System erhält man in der Datei &#8220;/etc/openldap/slapd.conf&#8221; keine regulären Einträge mehr, sondern nur noch Kommentare, in denen auf die neue dynamische und modulare Konfiguration verwiesen wird. </p>
<p>Auf einem frisch von CD installiertem oder upgegradeten System hingegen gibt es dagegen die Datei &#8220;/etc/openldap/slapd.conf&#8221; auch nach der Installation des Openldap2-RPMs noch. Sie weist Standard-Einträge auf, und sie bleibt auch noch nach der Konfiguration des LDAP-Servers mittels YaST unverändert bestehen. Das war für mich zunächst total verwirrend. Nach einigem Testen fand ich aber heraus, dass man die Einstellungen in der herkömmlichen &#8220;slapd.conf&#8221; vergessen kann. Die eigentlichen Konfigurationseinstellungen befinden sich in den Verzeichnissen    </p>
<ul>
<li>/etc/openldap/slapd.d/</li>
<li style="margin-top:8px;">/etc/openldap/schema/</li>
</ul>
<p>Diese Dateien sind gemäß des LDIF-Formats aufgebaut. Weitere Informationen zum hierarchischen Aufbau der LDAP-Konfigurationsdateien erhält man durch die Installation des Paketes &#8220;openldap2-doc&#8221; und dann durch Lesen folgender HTML-Seite </p>
<p style="margin-left:20px;">/usr/share/doc/packages/openldap2/adminguide/guide.html#Configuring slapd</p>
<p>Modifikationen an den Dateien kann man über die Kommandos &#8220;ldapmodify&#8221;,  &#8220;ldapadd&#8221; und &#8220;ldapdelete&#8221; durchführen, wenn man ein direktes Editieren scheuen sollte. </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Benutzerauthentisierung auf einem Rechnersystem über LDAP ist etwas anderes als die Authentisierung eines Users oder Systems gegenüber dem LDAP-Server, um Zugang zu <br />den dort hinterlegten Informationen zu erhalten</p>
<p>Bei einem Loginversuch eines Users auf einem Linux-PC oder -Server werden die User-Credentials über PAM-Module mit entsprechenden Einträgen in der Datenbank des LDAP-Servers verglichen. LDAP wird hier als Mittel zur User-Authentisierung für den PC-Zugang eingesetzt. </p>
<p>Das LDAP-System selbst gewährt als sicherheitsrelevantes Datenbank-System aber natürlich nicht so ohne weiteres jedem Anwender oder jedem Programm lesenden oder schreibenden Zugang zu den Datenbank-Inhalten. Ein User oder ein Programm wie PAM, das einen solchen Zugang erlangen möchte, muss sich je nach den gesetzten Bedingungen also selbst erst einmal gegenüber dem LDAP-Server als berechtigt ausweisen oder authentisieren. Dieser Schritt wurde für PAM in der oben dargestellten Kette als &#8220;PAM erlangt Zugang zum LDAP-Server&#8221; gekennzeichnet. Der Zugang zum LDAP-System kann durch folgende Varianten ermöglicht werden: </p>
<ul>
<li>Es können zusätzliche Auth.-Mechanismen (wie SASL) und andere Sicherheitslayer eingesetzt werden, </li>
<li style="margin-top:8px;">Es werden die Informationen, die im LDAP-System selbst zu Usern oder Systemen oder zugehörigen Passwörtern hinterlegt sind, verwendet, um den LDAP-Zugang zu gewähren.</li>
</ul>
<p>Die zweite Variante wird als <strong>&#8220;Bind&#8221;</strong> gegenüber dem LDAP-System bezeichnet. </p>
<p>Die beim Bind verwendeten LDAP-Identität hat gemäß der Struktur der LDAP-Einträge eine spezifische Form, die die Baumstruktur der Information widerspiegelt (z.B. &#8220;cn=Administrator, dc=anracona,dc=de&#8221; oder cn=Ralph,ou=people,dc=anracona,dc=de). </p>
<p>Damit bei Binds nicht jeder alles zu sehen bekommt oder alles ändern darf, müssen &#8220;Bind&#8221;-spezifische, also Identitäts-spezifische Rechte für die LDAP-Datenbank-Informationen vorgegeben sein.  Will man eine LDAP-Zugangsautorisierung über &#8220;Binds&#8221; überhaupt nicht zulassen, so muss man &#8220;Binds&#8221; explizit in der Konfiguration des LDAP-Servers ausschließen. Dies ist bei der Standardeinrichtung von Opensuse 12.1 jedoch nicht der Fall. Die Rechte bzgl. der im LDAP-System erfassten Linux-User- und Gruppen-Daten entscheiden u.a. darüber, ob Authentisierungs-Clients wie PAM sich über spezielle BINDs Zugang zum LDAP-System verschaffen müssen. </p>
<p>Die erste der oben genannten Varianten wird dagegen meist über das &#8220;SASL Authentisierungs- und Authorisierungs-Framework&#8221; und seine Untervarianten für die Authentisierung realisiert. Dabei werden ggf. SASL-eigene Datenbanken oder aber Zusatzsysteme wie Kerberos eingesetzt. Eine spezielle Variante für LDAP im Rahmen von SASL ist die sog. &#8220;External&#8221;-Variante, bei der SASL auf die Authentisierung durch andere externe Layer oder Protokolle zurückgreift. </p>
<p>Bei Opensuse 12.1 greift die &#8220;External&#8221;-Variante für Root-Prozesse, die über ihre Systemberechtigungen authentisiert und für den LDAP-Zugang autorisiert werden. Hierbei wird ein (lokales) IPC-Unix-Socket-basiertes Zugriffs-Protokoll namens &#8220;ldapi&#8221; eingesetzt, das auf der Unix-Interprozesskommunikation über Sockets basiert. </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">&#8220;SASL External&#8221; wird als Voreinstellung für die LDAP-Zugangs-Autorisierung von Prozessen eingesetzt, die mit Linux Root-Rechten laufen</p>
<p>Im Zuge einer initialen LDAP-Einrichtung sollte Root oder sollten Root-Prozesse mit Hilfe des ldapadd-Kommandos in der Lage sein, das LDAP-System und auch dessen modulare &#8220;cn=config&#8221;-Konfigurationsdateien mit Hilfe des &#8220;ldapadd&#8221;-Kommandos zu modifizieren. </p>
<p>Deshalb werden lokale Root-Prozesse auf dem LDAP-Server unter Opensuse 12 standardmäßig über den SASL External-Mechanismus im Zusammenspiel mit dem IPC-Unix-Socket-ldapi-Interface für den Zugriff auf den LDAP-Server autorisiert. </p>
<p>Erreicht wird dies einerseits durch Einträge für den Start des LDAP-&#8221;slapd&#8221;-Dämons, bei dem auch das IPC-LDAPI-Protokoll für den Zugriff auf den LDAP-Server initialisiert wird (s. die Datei  /var/run/slapd/slapd.args). Andererseits muss in den LDAP-Konfigurationsdateien ein Mapping der folgenden Form         </p>
<p style="margin-left:20px;">gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth</p>
<p>vorgenommen werden. Wir kommen darauf zurück. </p>
<p>Unabhängig von diesem Sonderfall erfolgen andere Zugriffe - u.a. die Authentifizierungsversuche von PAM - in der Standardeinstellung von Opensuse 12.1 ohne weitere Vorkehrungen aber über Binds.   </p>
<p style="font-size:18px; font-weight:bold; margin-top:30px; margin-bottom:10px;">2. Elementare Server-Einrichtung</p>
<p>Nun die einzelnen Schritte zur initialen LDAP-Einrichtung unter Opensuse 12.1: </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 1: Installieren bzw. Update der notwendigen Pakete</p>
<p>Als Kernpakete für die wichtigsten Einrichtungsschritte und später darüber hinausgehende Schritte sind empfehlenswert: </p>
<ul>
<li>openldap2</li>
<li style="margin-top:6px;">libldap-2_4-2</li>
<li style="margin-top:6px;">openldap2-client</li>
<li style="margin-top:6px;">openldap2-doc</li>
<li style="margin-top:6px;">pam-ldap</li>
<li style="margin-top:6px;">nss_ldap</li>
<li style="margin-top:6px;">perl-ldap</li>
<li style="margin-top:6px;">yast2-ldap</li>
<li style="margin-top:6px;">yast2-ldap-client</li>
<li style="margin-top:6px;">yast2-ldap-server</li>
<li style="margin-top:6px;">cyrus-sasl-ldap-auxprop</li>
</ul>
<p>Will man die Pakete nicht einzeln holen, ist es unter der Yast-SW-Verwaltung sinnvoll, sich am Opensuse-SW-Pattern &#8220;Directory Server (LDAP) zu orientieren. Die oben genannten Pakete sollte man sich natürlich auf dem neuesten Stand besorgen.</p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 2: Aufsetzen des Servers mittels YaST2</p>
<p>Die nachfolgenden Abbildungen zeigen den Durchgang durch eine erste  LDAP-Server-Konfiguration mittels des Yast2_Moduls &#8220;LDAP-Server&#8221;. Hierbei haben wir als Base-DN des LDAP-Servers &#8220;dc=anracona,dc=de&#8221; angenommen. Ferner wird noch keine TLS-Konfiguration vorgenommen. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_1.png' alt='ldap_1' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_2.png' alt='ldap_2' /></p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_3.png' alt='ldap_3' /> </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_4.png' alt='ldap_4' /></p>
<p style="margin-bottom:6px;">Das hier eingegebene Passwort für den LDAP-Admin mit der DN</p>
<p style="margin-bottom:6px;">cn=Administrator,dc=anracona,dc=de</p>
<p>verwenden wir nachfolgend in einer Reihe von Einrichtungsschritten zur Authentisierung. </p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 3: Starten des LDAP-Servers und Test der Verbindung über den YaST2 LDAP Browser</p>
<p style="margin-bottom:6px;">Wir prüfen nun, ob der LDAP-Server läuft, und zwar mittels des Kommandos : </p>
<p style="margin-left:20px; margin-bottom:0px;">rcldap status</p>
<p style="margin-bottom:6px;">und versuchen ggf., ihn danach mit </p>
<p style="margin-left:20px; margin-bottom:0px;">rcldap restart</p>
<p style="margin-bottom:6px;">zu starten. Das sollte bereits einwandfrei funktionieren.</p>
<p>Ein Test zur Verbindungsaufnahme ist möglich mit</p>
<p style="margin-left:20px; margin-top:10px; margin-bottom:10px;">ldapsearch -x -b &#8221; -s base &#8216;(objectclass=*)&#8217; namingContexts</p>
<p style="margin-left:20px; background-color:#DDD; width:400px;">
vms2:~ # ldapsearch -x -b &#8221; -s base &#8216;(objectclass=*)&#8217; namingContexts<br />
# extended LDIF<br />
#<br />
# LDAPv3<br />
# base <> with scope baseObject<br />
# filter: (objectclass=*)<br />
# requesting: namingContexts<br />
#<br />
#<br />
dn:<br />
namingContexts: dc=anracona,dc=de<br />
# search result<br />
search: 2<br />
result: 0 Success<br />
# numResponses: 2<br />
# numEntries: 1<br />
vms2:~ # 
</p>
<p>Ein zusätzlicher Test ist auch möglich über den &#8220;Yast2 LDAP Browser&#8221;. Dort passen allerdings die generellen LDAP-Client-Einstellungen des Systems (noch) nicht. Deswegen fügt man über die Schaltfläche &#8220;Add&#8221; ein weiteres Zugriffsprofil mit einem beliebigen Namen (hier &#8220;X&#8221;) ein. </p>
<p>In unserem Testfall heißt der Server &#8220;vms2.anracona.de&#8221;. TLS ist abzuwählen.<br />
<img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_6.png' alt='ldap_6' /><br />
Ein Drücken auf den OK-Button führt in unserem Fall zu folgendem Ergebnis:<br />
<img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_7.png' alt='ldap_7' /></p>
<p>Dass kaum etwas zu sehen ist, liegt natürlich daran, dass unsere LDAP-DB noch so gut wie leer ist. </p>
<p>An dieser Stelle lohnt sich ein Blick in zwei Konfigurationsdateien, die von YaST angelegt wurden. Die erste Datei &#8220;/etc/openldap/slapd.d/cn=config.ldif&#8221; zeigt den Eintrag </p>
<p>olcAuthzRegexp: {0}gidNumber=0\+uidNumber=0,cn=peercred,cn=external,cn=auth dn<br />
 :cn=config </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_18.png' alt='ldap_18' /></p>
<p>Dieser Eintrag ist typisch für das oben angesprochene &#8220;External Authentisierungs-Verfahren&#8221; für Prozesse mit Root-Rechten im Linux-System  - hier über das IPC&#8221;-ldapi-Protokoll. Siehe zu Details die oben erwähnte Openldap2-Dokumentation. </p>
<p>Die zweite Datei &#8220;/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif&#8221; zeigt u.a. die Anlage des LDAP-Administrators und den Hash für das Passwort: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_19.png' alt='ldap_19' /> </p>
<p>Weiter unten in dieser Konfigurationsdatei erkennt man übrigens die Vorgabe für die Anlage von Indices über bestimmte Felder der eingerichteten Account-Schemata. </p>
<p>Welche Standard-LDAP-Schemata für Objektklassen eingerichtet wurden, offenbart übrigens ein Blick in das Verzeichnis &#8220;/etc/openldap/slapd.d/&#8221;cn=config&#8221;/&#8221;cn=Schema&#8221;/. Es handelt sich um die Schemata</p>
<p style="margin-left:20px;">core, cosine, inetOrgPerson, rfc2307bis, yast</p>
<p>User werden später als Objekte, die die Eigenschaften einiger dieser Klassen kombinieren, angelegt. Dabei wird Konformität zu Posix-Accounts erreicht. </p>
<p>Die folgende Abbildung zeigt die Verzeichnisstruktur der Konfigurationsdateien und noch einmal die von Opensuse installierten Standardschemata: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_20.png' alt='ldap_20' /></p>
<p style="font-size:14px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 4: Einrichtung der Yast2 &#8220;User- und Gruppenverwaltung&#8221; auf dem LDAP-Server als LDAP-Client</p>
<p>In diesem Schritt binden wir das Yast2-Modul für die User- und Gruppen-Verwaltung an den LDAP-Server an. Hierbei wird ein wesentlicher Teil der LDAP-Client-Einrichtung auf unserem lokalen Opensuse 12.1-Testsystem vorweggenommen. </p>
<p>Natürlich greifen die YaST-Clients unseres LDAP-Servers eigentlich nur auf den &#8220;localhost&#8221; (127.0.0.1) zu. </p>
<p>Die dargestellten Prinzipien gelten aber analog auch für Opensuse-Systeme, deren YaST-Module Zugriffe auf Remote-LDAP-Server durchführen sollen. Die nachfolgenden Schritte lassen sich deshalb später auf andere, externe Opensuse-Systeme übertragen, von denen mit den dortigen YaST-Tools User- und Gruppen-Accounts auf unserem frisch eingerichteten LDAP-Server angelegt werden sollen. </p>
<p>Wir öffnen auf unserem LDAP-Server die Yast2-User-und Gruppenverwaltung und gehen dort auf den letzten Reiter. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_8.png' alt='ldap_8' /></p>
<p>Dort klicken wir nun auf den Link &#8220;LDAP&#8221; (oder gehen alternativ über den Configure-Dialog):<br />
<img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_9.png' alt='ldap_9' /> </p>
<p>Hier klicken wir TLS im Moment weg. Auch mit SSSD und Kerberos wollen wir uns in diesem Beitrag nicht befassen. </p>
<p>Von relativ Bedeutung ist, dass man bereits jetzt die Adressangabe bzgl. des Servers unter Benutzung der FQD-Form machen sollte. In den von Opensuse vorgenommenen Standardeinstellungen werden später, wenn wir TLS benutzen, Vergleiche des LDAP-Peer-Namens mit der im Server-Zertifikat überlicherweise verwendeten FQD-Bezeichnung vorgenommen. Die Bezeichnungen müssen übereinstimmen, wenn man in den  LDAP-Einstellungen keine besonderen Vorkehrungen treffen will.  </p>
<p>Wir klicken nun auf die Schaltfläche &#8220;Advanced Configuration&#8221; und lassen dort die Einstellungen des Reiters &#8220;Client Settings&#8221; unverändert. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_10.png' alt='ldap_10' /></p>
<p>Nun wechseln wir zum Reiter &#8220;Administration Settings&#8221; und geben die Daten zur Administrator-DN ein. </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_11.png' alt='ldap_11' /></p>
<p>Wir drücken den Button &#8220;Configure User Management Settings&#8221; und geben im erscheinenden Dialog das Passwort ein: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_12.png' alt='ldap_12' />  </p>
<p>Wir bestätigen die nächste Frage: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_13.png' alt='ldap_13' /></p>
<p>Auf der folgenden Optionen-Seite legen wir nichts Neues an; wir drücken auf OK </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_14.png' alt='ldap_14' /></p>
<p>Danach drücken wir in 2 weiteren Rücksprung-Dialogen ebenfalls auf OK und erhalten am Schluss einen konfigurierten LDAP-Client für die User- und Gruppen-Verwaltung von YaST : </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_15.png' alt='ldap_15' /></p>
<p>Wir drücken erneut auf OK und wechseln zur Userverwaltung unseres Testsystems. Dort drücken wir auf den Button &#8220;Filter&#8221; und wählen &#8220;LDAP Users&#8221; und geben erneut das LDAP-Admin-Passwort ein: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_16.png' alt='ldap_16' /> </p>
<p>Wir sind dann im (noch leeren) Bereich derjenigen User auf unserem System, die über unseren LDAP-Server verwaltet werden. Wir legen testweise einen neuen, ersten Useraccount im LDAP-System an: </p>
<p><img src='http://linux-blog.anracom.com/__oneclick_uploads/2012/03/ldap_on_vms2_500_17.png' alt='ldap_17' /></p>
<p>Für diesen User testen wir abschließend und hoffentlich erfolgreich einen Login-Versuch auf unserem LDAP-Server-System und freuen uns, dass wir unsere User zumindest auf diesem System künftig mit YaST und LDAP verwalten können. </p>
<p>Im nächsten Teil stellen wir den LDAP-Server für die sichere (Remote-) Nutzung auf SSL/TLS um.  </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/03/11/opensuse-121-ldap-i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OX 5 - LDAP Restaurierung nach Fehler</title>
		<link>http://linux-blog.anracom.com/2012/02/12/ox5-ldap-restaurierung/</link>
		<comments>http://linux-blog.anracom.com/2012/02/12/ox5-ldap-restaurierung/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 18:29:21 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[LDAP]]></category>

		<category><![CDATA[Open-Xchange 5]]></category>

		<category><![CDATA[Open-Xchange]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/02/12/ox5-ldap-restaurierung/</guid>
		<description><![CDATA[Gestern hatte ich nach 6 Jahren erstmals ein größeres LDAP-Problem mit unserem alten OX5-Server. 
Meine Kollegin hatte versucht, eine neue Mail-Adresse auf dem OX 5 Server von Kontakt/Kmail eines Client-Rechners aus zu speichern. Dabei wird ein neuer Kontakt angelegt, dessen Daten bei meinem OX 5 sowohl in der Postgres-Datenbank als auch in einer LDAP-Datenbank hinterlegt [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern hatte ich nach 6 Jahren erstmals ein größeres LDAP-Problem mit unserem alten OX5-Server. </p>
<p>Meine Kollegin hatte versucht, eine neue Mail-Adresse auf dem OX 5 Server von Kontakt/Kmail eines Client-Rechners aus zu speichern. Dabei wird ein neuer Kontakt angelegt, dessen Daten bei meinem OX 5 sowohl in der Postgres-Datenbank als auch in einer LDAP-Datenbank hinterlegt werden. </p>
<p>Leider hatte die Kollegin die Mail von einem Outlook-Benutzer erhalten, der seine Adressangaben recht chaotisch gepflegt hatte. Seine &#8220;von&#8221;-Adresse wies eine Angabe der Form &#8220;mailto:xxx@yyy.com&#8221; auf. Unvorsichtigerweise hat meine Kollegin zur Übernahme der Mailadresse in das Kmail-Adressbuch (das eigentlich ein OX-Adressbuch ist) wie gewohnt mit der rechten Maustaste auf diesen &#8220;mailto-Link&#8221; im Adressbereich der an sie weitergeleiteten Mail geklickt. Dies hatte schlimme Folgen:   </p>
<p>Der Speichervorgang für den neu anzulegenden &#8220;Kontakt&#8221; in den Kontakte- und Adressen-Verzeichnissen des OX5 Servers wurde leider nicht korrekt abgearbeitet. Als resultierende Symptome musste ich nach einiger Analyse von Log-Dateien des Servers leider einen traurigen Zustand feststellen: </p>
<ul>
<li>Absturz von Tomcat</li>
<li>Korrumpierte LDAP-Datenbank</li>
<li>Massive Performancereduktion des OX-Servers wegen hängendem LDAP </li>
</ul>
<p>Für die, die hier evtl. schlimmere Dinge vermuten: Ein Virenscan der Mail mit unterschiedlichen Scannern hat nichts erbracht.  </p>
<p>Wegen der korrupten LDAP-Datenbank war auf dem OX5-server natürlich auch keinerlei Login mehr für die OX-User möglich, da diese alle über LDAP verwaltet und über &#8220;pam-ldap&#8221; authentisiert werden. User auf externen Servern konnten daher weder Dienste des OX-IMAP-Servers, noch Samba- und NFS-Dienste nutzen. Hier war schnelle Abhilfe von Nöten. </p>
<p>Die Lösung brachte hier (SUSE-SLES-System) folgende Kommandosequenz : </p>
<p style="margin-left:20px;">cd /var/lib/ldap<br />
rcldap stop<br />
<strong>db_recover -v</strong> <br />
slapindex<br />
rcldap start</p>
<p>LDAP unter Opensuse und auf SLES-Systemen nutzt defaultmäßig die Berkely DB als Backend zur Datenhaltung. Damit ist das Kommando <strong>&#8220;db_recover&#8221;</strong> angesagt. ( Unter Red Hat ist übrigens statt &#8220;db_recover -v&#8221;  das Kommando &#8220;/usr/sbin/slapd_db_recover -h /var/lib/ldap &#8221; einzusetzen.) </p>
<p>Für &#8220;katastrophale&#8221; Fälle kann man auch  - nach weiteren Sicherungsmaßnahmen (! siehe die Links unten !) - die Variante </p>
<p style="margin-left:20px;">db_recover -v -c</p>
<p>verwenden. &#8220;-c&#8221; steht hier für &#8220;catastrophic&#8221;.  </p>
<p>Will man das Kommando von einem anderen Ort als dem Verzeichnis &#8220;/var/lib/ldap&#8221; ausführen, so ist die Option &#8220;-h&#8221; nützlich. </p>
<p>Weitere Informationen - auch für hartnäckige Fälle der Restaurierung der LDAP Backend Datenbank - liefert die Artikel unter folgenden Links: </p>
<p><a href="http://sdb.open-xchange.com/node/29">http://sdb.open-xchange.com/node/29</a><br />
<a href="http://blog.mydream.com.hk/howto/linux/openldap-recovery-howto">http://blog.mydream.com.hk/howto/linux/openldap-recovery-howto</a></p>
<p>Zu den <strong>Optionen</strong> von &#8220;db_rcover&#8221; für die BDB siehe : </p>
<p><a href="http://www.manpagez.com/man/1/db_recover/">http://www.manpagez.com/man/1/db_recover/</a></p>
<p>Weitere Informationen zur Fehlerbehebung findet man unter: </p>
<p><a href="http://techarold.blogspot.com/2006/07/more-openldap-recovery.html">http://techarold.blogspot.com/2006/07/more-openldap-recovery.html</a><br />
<a href="http://www.prestonlee.com/2009/07/08/recovering-a-corrupt-openldap-database-on-osx-server/">http://www.prestonlee.com/2009/07/08/recovering-a-corrupt-openldap-database-on-osx-server/</a><br />
<a href="http://serverfault.com/questions/87889/ldap-database-recovery-after-server-crash">http://serverfault.com/questions/87889/ldap-database-recovery-after-server-crash</a><br />
<a href="http://web.archiveorange.com/archive/v/TDuKz11zCkpKFJNjBppH">http://web.archiveorange.com/archive/v/TDuKz11zCkpKFJNjBppH</a><br />
<a href="http://www.bynari.net/support/users/kb.php?id=236">http://www.bynari.net/support/users/kb.php?id=236</a></p>
<p>Generelle LDAP-Admin-Informationen findet man unter : </p>
<p><a href="http://www.openldap.org/doc/admin24/">http://www.openldap.org/doc/admin24/</a></p>
<p>Zum Einsatz der BDB als LDAP-Backen siehe: </p>
<p><a href="http://www.zytrax.com/books/ldap/ch6/bdb.html">http://www.zytrax.com/books/ldap/ch6/bdb.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/02/12/ox5-ldap-restaurierung/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kmail 4.8 - Suchfunktionalität weiterhin im Eimer</title>
		<link>http://linux-blog.anracom.com/2012/02/04/kmail-48-suchfunktionalitat-weiterhin-im-eimer/</link>
		<comments>http://linux-blog.anracom.com/2012/02/04/kmail-48-suchfunktionalitat-weiterhin-im-eimer/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 17:55:48 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[KDE]]></category>

		<category><![CDATA[Kontact - Kmail]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/02/04/kmail-48-suchfunktionalitat-weiterhin-im-eimer/</guid>
		<description><![CDATA[Seit der Umstellung auf das akonadi-basierte Kmail2 (unter Opensuse passierte das nach KDE 4.6.4) gibt es Probleme mit der Suche nach Mails unter Kmail. Diese Feststellung ist mehr als traurig, denn im täglichen professionellen Einsatz von Mail-Programmen benötigt man Suchfunktionen, die einen schnell mehrere Suchkriterien miteinander kombinieren lassen - z.B. für den Mail-Text und für [...]]]></description>
			<content:encoded><![CDATA[<p>Seit der Umstellung auf das akonadi-basierte Kmail2 (unter Opensuse passierte das nach KDE 4.6.4) gibt es Probleme mit der Suche nach Mails unter Kmail. Diese Feststellung ist mehr als traurig, denn im täglichen professionellen Einsatz von Mail-Programmen benötigt man Suchfunktionen, die einen schnell mehrere Suchkriterien miteinander kombinieren lassen - z.B. für den Mail-Text und für das Absender-Feld. </p>
<p>Kmail 1.13.7 wies hierfür einen voll funktionsfähigen eigenen Such-Dialog auf. Auf einem unserer Rechner ist die alte Version noch unter KDE 4.6.4 installiert. Da läuft alles noch prima - auch im Zusammenspiel mit IMAP-Servern. </p>
<p>Wie ist der Zustand seit KDE 4.7 und auch jetzt noch unter KDE 4.8 ? </p>
<ul>
<li>Weder unter Kmail 4.7.4 noch unter Kmail 4.8 gibt der Suchdialog einem eine Möglichkeit zur Eingabe eines Mailverzeichnisses, den man durchsuchen will. </li>
<li style="margin-top:6px;">Wenn gesucht wird, so wird (manchmal) in allen Mailverzeichnissen gesucht. </li>
<li style="margin-top:6px;">Unter KDE 4.7.4 liefern viele Suchvorgänge Ergebnislisten mit leeren Zeilen am Anfang.   </li>
<li style="margin-top:6px;">Unter KDE 4.8 liefert eine Suche mit mehreren kombinierten Such-Kriterien leere Resultsets, obwohl es viele Mails gibt, die die Kriterien erfüllen.</li>
<li style="margin-top:6px;">Manche Suchen nach Begriffen im vollständigen Mailtext liefern Resultsets - aber auch die nicht immer zuverlässig. Die Suchergebnisse sind nicht immer vollständig. </li>
</ul>
<p>Das Ganze ist so fehlerhaft, dass man den Suchdialog unter Kmail im Moment als nicht benutzbar ansehen muss. Im Grunde ein Desaster! Hingewiesen hat mich darauf übrigens Martin Lüchem. Ich wollte es ihm zunächst gar nicht glauben, aber leider hat er recht.  </p>
<p>Die einzige Suche, die bei mir z.Z. noch funktioniert, ist die über die Eingabezeile im normalen Kmail-Fenster. Das ist eine Volltext-Suche. Die scheint zu klappen. Aber wie gesagt, das reicht für den professionellen Einsatz überhaupt nicht. </p>
<p>Da fragt sich der KDE-Anwender erneut: Wie kann es sein, dass sich solche Mängel über zwei größere Releases von KDE 4 hinweg halten können?</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/02/04/kmail-48-suchfunktionalitat-weiterhin-im-eimer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Update KDE 4.8 - Nepomuks hohe CPU-Last</title>
		<link>http://linux-blog.anracom.com/2012/02/04/update-kde-48-nepomuks-hohe-cpu-last/</link>
		<comments>http://linux-blog.anracom.com/2012/02/04/update-kde-48-nepomuks-hohe-cpu-last/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 17:33:47 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/02/04/update-kde-48-nepomuks-hohe-cpu-last/</guid>
		<description><![CDATA[Habe gerade unter Opensuse 12.1 auf KDE 4.8 upgegraded. Danach erzeugt Nepomuk samt virtuoso-t ähnlich wie früher bei KDE 4.6 eine enorm hohe CPU-Last, die sich leider nicht so ohne weiteres beseitigen lässt. 
Bei mir hat folgendes geholfen: 

Stoppen von Nepomuk über  die KDE-Systemeinstellungen. 
Stoppen von Akonadi (man benutze das Kommando &#8220;kcmshell4 kcm_akonadi&#8221;,  [...]]]></description>
			<content:encoded><![CDATA[<p>Habe gerade unter Opensuse 12.1 auf KDE 4.8 upgegraded. Danach erzeugt Nepomuk samt virtuoso-t ähnlich wie früher bei KDE 4.6 eine enorm hohe CPU-Last, die sich leider nicht so ohne weiteres beseitigen lässt. </p>
<p>Bei mir hat folgendes geholfen: </p>
<ul>
<li>Stoppen von Nepomuk über  die KDE-Systemeinstellungen. </li>
<li style="margin-top:6px;">Stoppen von Akonadi (man benutze das Kommando <strong>&#8220;kcmshell4 kcm_akonadi&#8221;</strong>,  <br />gehe dann im sich öffenenden Fenster auf den 2-ten Reiter für die  &#8220;Einrichtung des Akonadi-Servers&#8221; <br />und stoppe dort den Akonadi-Server).  </li>
<li style="margin-top:6px;">Zur Sicherheit : Herunterfahren in den Runlevel 3 </li>
<li style="margin-top:6px;">Löschen des Verzeichnisses ~/.kde4/share/apps/nepomuk</li>
<li style="margin-top:6px;">Löschen aller Konfigurationsdateien der Form   ~/.kde4/share/config/nepomuk*</li>
<li style="margin-top:6px;">Löschen aller Konfigurationsdateien der Form   ~/.kde4/share/config/akonadi_nepomuk_*</li>
<li style="margin-top:6px;">Hochfahren in den Runlevel 5 und Log in in den KDE-Desktop. </li>
</ul>
<p>Danach wurden bei mir neue Konfigurationsdateien angelegt und auch das Nepomuk-Verzeichnis wurde erneuert. </p>
<p>Nepomuk begann dann mit einer Reindizierung aller möglichen Ressourcen, aber beanspruchte die CPU dabei viel, viel weniger als zuvor. Ferner verhält sich Nepomuk jetzt bei mir sogar adaptiv und begrenzt die CPU-Belastung auf Zeiten, in denen ich mit anderen Programmen nicht so viel macht. </p>
<p>Siehe hierzu auch <a href="https://bugs.kde.org/show_bug.cgi?id=289932">https://bugs.kde.org/show_bug.cgi?id=289932</a>, Kommentar #3 und weitere Kommentare.  </p>
<p>Schade, dass die KDE-Entwickler immer wieder solche Schnitzer produzieren. Es muss doch möglich sein, die Programme neuer Versionen so zu gestalten, dass es möglich wird KDE-Updates durchzuführen, ohne Konfigurationsdateien von Schlüsselkomponenten löschen und neu anlegen zu müssen.   </p>
<p><strong>Nachtrag 15.02.2012:<br />
</strong> </p>
<p>Ich habe ein anderes System, auf dem folgende Voraussetzungen gegeben waren: </p>
<p>1) Opensuse 12.1 wurde von scratch neu installiert - und zwar zunächst ohne KDE, aber mit XFCE.<br />
2) Danach habe ich direkt KDE 4.8 aus dem Repository http://download.opensuse.org/repositories/KDE:/Release:/48/openSUSE_12.1/ installiert. Es gab also kein Update von KDE 4.7.2.  </p>
<p>Nach der Anbindung an einen IMAP-Server begann der Nepomuk-Indexer zu arbeiten und zwar ziemlich lange. Als nach ca. 30 Minuten kein Ende absehbar war, bin ich in die KDE-Systemeinstellungen (&#8221;systemsettings&#8221;) gegangen und dort in die Einstellungen zur &#8220;Desktopsuche&#8221;. Dort habe ich in der angegebenen reihenfolge folgende schritte durchgeführt: </p>
<ul>
<li>Deaktivierung des Punktes &#8220;E-Mail-Indexer aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221;</li>
<li>Deaktivierung des Punktes &#8220;Nepomuk-Datei-Indexer aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221;</li>
<li>Deaktivierung des Punktes &#8220;Nepomuk-Semantik-Dienste aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221;</li>
</ul>
<p>Danach geht die CPU-Belastung durch Nepomuk auf 0. U.a. ist der Email-Indexer gestoppt. Dann habe ich folgendes gemacht: </p>
<ul>
<li>Aktivierung des Punktes &#8220;E-Mail-Indexer aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221;</li>
<li>Aktivierung des Punktes &#8220;Nepomuk-Datei-Indexer aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221; und Durchlaufen lassen ! Ggf. über &#8220;Erweiterte Einstellungen&#8221; den verzeichnisbereich, der indiziert wird, einschränken. </li>
<li>Aktivierung des Punktes &#8220;E-Mail-Indexer aktivieren&#8221; -&gt; Button &#8220;Anwenden&#8221;</li>
</ul>
<p>Danach war Ruhe und die hohe CPU-Belastung durch virtuoso-t / nepomuk ging auf fast 0! Vermutlich wurde der erstmalige Neuindizierungsprozess von Nepomuk (kontrolliert?) abgebrochen. Danach scheint es aber leider so, dass der Email-Indexer gar nicht mehr läuft - zumindest werden bei Suchvorgängen nach Begriffen im Text von Emails keine Treffer mehr unter neuen Emails gefunden.   </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/02/04/update-kde-48-nepomuks-hohe-cpu-last/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Opensuse 12.1 - Installationserfahrungen</title>
		<link>http://linux-blog.anracom.com/2012/01/08/opensuse-121-erfahrungen-mit-einer-neuinstallation/</link>
		<comments>http://linux-blog.anracom.com/2012/01/08/opensuse-121-erfahrungen-mit-einer-neuinstallation/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 16:50:00 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[Opensuse 12.1]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/01/08/opensuse-121-erfahrungen-mit-einer-neuinstallation/</guid>
		<description><![CDATA[In der letzten Zeit habe ich mehrere Systeme auf Opensuse 12.1 upgraden müssen. Zudem habe ich zwei komplette Neuinstallationen vorgenommen. Zeit mal etwas über meine Erfahrungen zu schreiben - im speziellen auch zum nuen Startup-Verfahren &#8220;systemd&#8221;. In diesem Artikel geht es um eine Neuinstallation von Opensuse 12.1 auf einem System mit folgenden Charakteristika: 
Quadcore CPU [...]]]></description>
			<content:encoded><![CDATA[<p>In der letzten Zeit habe ich mehrere Systeme auf Opensuse 12.1 upgraden müssen. Zudem habe ich zwei komplette Neuinstallationen vorgenommen. Zeit mal etwas über meine Erfahrungen zu schreiben - im speziellen auch zum nuen Startup-Verfahren &#8220;systemd&#8221;. In diesem Artikel geht es um eine Neuinstallation von Opensuse 12.1 auf einem System mit folgenden Charakteristika: </p>
<p style="margin:20px;">Quadcore CPU Intel Q9550, 8GB RAM, 3ware Raid-Controller mit 4 2TB-Platten im Raid 10 Modus, Nvidia Grafikkarte EVGA 9800GTX+ an einem 1920&#215;1200 Schirm.</p>
<p>Ich möchte hier das System nur soweit installieren, dass mindest die Grafikkarte läuft, die Anbindung ans Netz erfolgt ist und ich in der Lage bin, einen Vergleich der Startup-Zeiten zwischen &#8220;systemd&#8221; und dem konventionellen &#8220;System V Init&#8221;-Verfahren durchzuführen.     </p>
<p>Potentiell problematisch sind für eine Opensuse-Installation sind an der Hardwareliste zwei Dinge: </p>
<p>Einerseits das Raid 10-System - das Raid-Array entspricht netto einer Platte mit einem Plattenplatz oberhalb von 3,8 TB . D.h. &#8220;fdisk&#8221; fällt als Formatierungstool aus; es wird &#8220;GPT&#8221; benötigt. Hier ist aber Optimismus angesagt, denn der Opensuse-Installer bindet mindestens seit Opensuse 11.3 automatisch GPT ein, wenn er eine entsprechend große Platte erkennt. Das Gleiche gilt natürlich auch für den &#8220;Partitionierer&#8221; unter Yast. Aber man wiss ja nie &#8230;  </p>
<p>Schwierigkeiten kann ebenfalls die EVGA-Grafikkarte machen. Bei früheren Installationen hatte ich mit dieser Karte regelmäßig Probleme mit dem 1600&#215;1200-Framebuffer-Modus. Dieser wird von Opensuse aber als Modus mit der maximalen Auflösung angeboten - im besonderen für die Konsolen-Darstellung. Den hochauflösenden Modus möchte man natürlich auch gerne ausnutzen - oft genug mußte ich früher aber schon auf den 1280&#215;1024-Modus ausweichen. Hier war ich gespannt, wie sich der &#8220;Opensuse 12.1&#8243;-Installer verhält und wie man den Nvidia-Treiber zum Laufen bringt.            </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Positive Punkte während der Installation</p>
<p style="font-size:12px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Der 1600&#215;1200 Modus wird während der Installation auch bei der EVGA-Karte weitgehend akzeptiert</p>
<p>Ich konnte im graphischen Installer die Auflösung 1600&#215;1200 wählen. Dies machte bis zum Neustart des installierten Systems über &#8220;kexec&#8221; auch keine Probleme - weder in zwischenzeitlichen Konsol-Ansichten noch im grafischen Modus selbst. </p>
<p style="font-size:12px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Die Formatierung des netto 3.8 TB umfassenden zusammenhängenden Raid-Arrays gelang ohne jegliche Probleme</p>
<p>Das Raid 10-System ist bei einer Frmwareversion &#8220;FE9X 4.10.00.007&#8243; des 3ware-Raid-Controllers recht performant - die schreibraten liegen um die 220 - 250 MB/sec, die Leseraten sind noch höher. Mehr kann man bei den eingesetzten Samsung &#8220;2TB F4 HD204UI&#8221;-Platten einfach nicht erwarten. Es wäre schade gewesen, wenn das SuSE-System damit nicht hätte umgehen können. Aber weder der Installer noch der &#8220;YAST-Partitioner&#8221; hatten damit Probleme - wie erwartet benutzen beide automatisch GPT. Ich habe meiner  Standardpolitik folgend, mehrere (genauer 4) 80 GB-umfassende Standrad-Partitionen am Anfang des Arrays und danach einen großen LVM-Bereich zur Aufnahme flexibel erweiterbarer Partitionen für Daten und spätere virtuelle KVM-Maschinen anlegen können. Es gab dabei keinerlei Schwierigkeiten. </p>
<p>Falls sich jemand fragt, woher die &#8220;Politik&#8221; mit den 4 Standardpartionen stammt: </p>
<p>Ich bringe hier bootfähige Fallbacksysteme unter, die in Notfällen in der Lage sein müssen, auch Daten in einem bestimmten Umfang aufzunehmen. Die Fallback-Systeme bestehen meist aus Abbildern bewährter Versionen auf einem bestimmten Update-Stand in Kombination mit bewährten KDE-Versionsständen. So komme ich bei größeren Problemen - wie sie im besonderen relativ häufig bei KDE-Upgrades auftreten - oder auch bei Schwierigkeiten mit LVM-Partitionen relativ schnell wieder zu laufenden Systemen, ohne komplette Neuinstallationen oder eine vollständige Restauration von Backups durchführen zu müssen. Hat man Sicherungen seiner Datenpartitionen auf Platten separater externer Systeme untergebracht, oder sind die Datenpartitionen selbst unbeschadet, so erledigt sich die Arbeit meist schon durch Einbinden der Datenpartitionen (ggf. über NFS). Abbilder der Systeme (z.B. per dd) haben sich in der Praxis schon mehrfach bewährt, wenn ein KDE-Upgrade das aktuelle System fast in die Unbenutzbarkeit getrieben hat. </p>
<p style="font-size:12px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Die Installation geht reativ zügig vonstatten</p>
<p>Aufgrund der hohen Performance des Raid 10-Arrays wird die Installation auch beim Laden vieler Serverkomponenten etc. zuügig abgewickelt. Bei der vorgenommenen Installation habe ich praktisch alle relevanten Serverkomponenten sowei eine große Zahl von Entwicklungskomponenten mit installieren lassen. Insgesamt 3,6 GByte an Paketen. Das ging wirklich zügig. Ist aber kein spezielles Verdienst von SuSE.   </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Probleme während der Installation</p>
<p style="font-size:12px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Die Weiterführung der grafischen Installation nach Ausführung von &#8220;kexec&#8221; bringt das System zum Sillstand</p>
<p>Nach der Installation aller Pakete versucht der Installer den neuen Kernel mit &#8220;kexec&#8221; zu laden und danach das neue System hochzufahren. Hierzu wird temporär auf die Konsolenansicht gewechselt. Danach sollte eigentlich die grafische Installationsoberfläche im aktualisierten System erneut gestartet werden; im Anschluß daran sollte die Konfiguration des neuen Systems (Geräteerkennung und Treiberimplementierung) erfolgen. </p>
<p>Der Wechsel des Installers auf die Konsole für die Durchführung von &#8220;kexec&#8221; funktionierte. Der Kernel wurde ordnungsgemäß mit &#8220;kexec&#8221; geladen. Danach werkelte das System noch fleissig im Verborgenen (aha - die erste Anzeichen von systemd - keine Meldungen mehr auf der Konsole!) - und dann wurde der erneute Start der grafischen Installer-Oberfläche eingeleitet. Bei mir endete das aber leider mit eine hübsch bunten Schirm aus Fragmenten und einem Einfrieren des Systems. Das System (besser X-Window) reagierte auch nicht mehr auf Tastatureingaben - ein &#8220;Ctrl-Alt-D&#8221; für ein geordnetes Herunterfahren blieb wirkungslos. Ich war also gezwungen, die Installation abzubrechen und einen Warmstart durchzuführen.</p>
<p>Ich möchte an dieser Stelle klarstellen, dass dieses Problem meiner Meinung nach vor allem durch die EVGA Grafikkarte meines Testsystems bedingt ist. Denn auf anderen Systemen mit moderneren Nvidia-Karten trat das hier beschriebene Problem bei einer Neuinstallation vom Opensuse 12.1 nicht auf. Je nach Treibermodul hat die Karte halt doch immer mal wieder Probleme beim Wechseln zwischen dem 1600&#215;1200-Framebuffermodus für die Konsole und dem grafischen Installationsmodus.      </p>
<p style="font-size:12px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Warmstart und erneutes Booten nach System V-Manier ermöglichen nach ein paar Maßnahmen die Fortführung der grafischen Installation</p>
<p>Was macht man in einer solchen Situation, in der man zu Beginn der automatischen Konfiguration zum Warmstart gezwungen wird? Das danach möglicherweise inkonsistente Filesystem macht einem wenig Sorge; das schafft ext4 schon. Ein fsck-Vorgang geht auf dem Raid-System zudem sehr, sehr schnell. Aber wie geht man mit dem dem offenbar problematischen Standard-Grafiktreiber (Noveau) für die Graka um? </p>
<p>Meine Schritte waren folgende: </p>
<p><strong>Schritt 1:</strong><br />
Nach dem Warmstart boote ich nur in den Runlevel 3 und zur Elimination von Unwägbarkeiten zusätzlich auf &#8220;systemd&#8221; verzichten. Ersteres erreicht man durch Eingabe des Parameters &#8220;linux 3&#8243; in die Parameterzeile des Grub-Startup-Schirms. Und für das zweite hat SuSE dankenswerterweise eine Option angeboten. Man kann auf dem Startbildschirm &#8220;F5&#8243; betätigen und danach &#8220;System V&#8221; auswählen. Alternativ gibt man als Parameteroption </p>
<p style="margin-left:20px;">init=/sbin/sysvinit</p>
<p>ein. Dann wird der Startvorgang nach alter &#8220;System V&#8221;-Manier durchgeführt. </p>
<p>Der &#8220;System V&#8221;-Bootvorgang in den Runlevel 3 erfolgte dann problemlos. Das war auch fast zu erwarten, da die Darstellung der Konsole schon während des ersten Installationsanlaufes keine echten Probleme bereitet hatte. Der grafische Installationsvorgang wurde aber nicht sofort fortgesetzt.</p>
<p><strong>Schritt 2:</strong><br />
Im nun erreichten Runlevel 3 habe ich als ersten geprüft, welches Grafikkartenmodul geladen war. Es war - wie vermutet - das &#8220;nouveau&#8221;-Treiber-Modul, das SuSE ja seit 11.4 als Default einsetzt. Dieses Treibermodul ließ sich auch nicht entladen - es wurde bei einem &#8220;rmmod&#8221;-Versuch als &#8220;in use&#8221; deklariert. Mit einer solchen Situation kann auch der Nvidia-Treiber-Installer nicht umgehen. Deshalb war ein erneuter Bootvorgang von vornherein unausweichlich. Als beste Methode, das System von einer Fortführung der Installation zu überzeugen, erschien es mir nach früheren Erfahrungen, KMS abzuschalten und auch die Pakete für den &#8220;Nouveau&#8221;-Treiber zu entfernen. Also habe ich mit </p>
<p style="margin-left:20px;">&#8220;Yast >> /ect/sysconfig-Editor >> System >> Kernel&#8221;</p>
<p>den SuSE-Konfigurationsparameter </p>
<p style="margin-left:20px;">&#8220;NO_KMS_IN_INITRD&#8221; auf &#8220;Yes&#8221; </p>
<p>gesetzt. Ferner habe ich über das Yast-Softwaremanagement das Paket </p>
<p style="margin-left:20px;">xorg-x11-driver-video-nouveau&#8221;</p>
<p>deinstalliert. Alles in der Hoffnung, dass das System nun erkennen würde, dass die automatische Konfiguration noch nicht durchgeführt oder abgeschlossen wurde. Typischerweise erkennt das SuSE-System das nämlich (wo immer SuSE diese Info hinterlegt wird).  </p>
<p><strong>Schritt 3:</strong><br />
Ich habe dann neu gebootet - wiederum mit den Parametern &#8220;linx 3 init=/sbin/sysvinit&#8221;. Und tatsächlich: Diesmal wurde direkt nach dem Hochfahren eine Meldung angezeigt, dass der Installationsvorgang wegen eines Fehlers nicht abgeschlossen wurde. Danach erfolgte direkt der Wechsel in den grafischen Modus zur Fortsetzung der automatischen Konfiguration. Die wurde auch ohne Fehlermeldungen abgeschlossen. Ein weiterer Bootvorgang in den Runlevel 3 verlief dann ohne Fehler. </p>
<p>Auf diese Weise hatte ich wenigstes die Installation ordnungsgemäß abgeschlossen. Ein &#8220;lsmod | grep nouveau&#8221; zeigte aber, dass nun immer noch (oder erneut?) der &#8220;nouveau&#8221;-Treiber geladen war. Dies war insofern überraschend als wir ja zumindest einen entsprechenden Kernelparameter gesetzt hatten, der zu einer Deaktivierung von KMS führen sollte. Ich habe die Einstellungen erneut mit dem sysconfig-Editor geprüft. Auch &#8220;/sbin/mkinitrd&#8221; wurde am Ende der Einstellungen im sysconfig-Editor korrekt aufgerufen. </p>
<p>Dennoch wird also der Nouveau-Treiber geladen. Diese Ungereimtheiten kannte ich schon von Opensuse 11.4; siehe auch: </p>
<p>http://www.linuxforen.de/forums/archive/index.php/t-269600.html<br />
und<br />
http://de.opensuse.org/SDB:Probleml%C3%B6sungen-Grafiktreiber  </p>
<p>Aus meiner Sicht reicht das Abstellen von KMS nicht; man muss den Treiber zusätzlich &#8220;blacklisten&#8221;. Dafür gibt es mehrere Möglichkeiten - man findet einige in den Beiträgen unter folgendem Link :  </p>
<p>http://www.linuxforen.de/forums/showthread.php?t=269600</p>
<p>Man kann das &#8220;Blackliste&#8221; aber auch der Nvidia-Installationsroutine für den proprietären Treiber überlassen. Die setzt nämlich bei entdecktem &#8220;Nouveau&#8221;-Treiber auf Rückfrage beim User ebenfalls einen Blacklisting-Eintrag.        </p>
<p>Das nächste größere Ziel war nun die Ersetzung des &#8220;nouveau&#8221;-Treibers durch den proprietären Treiber. Hierzu musste das neu installierte System erst einmal netzwerkfähg werden. In meinem Fall wollte ich den benötigten Treiber nämlich einfach per &#8220;scp&#8221; von einem anderen System kopieren. Hierzu muss man neben den Netzwerkeinstellungen auch den sshd-Daemon zum Laufen bringen. (Ein Treiberdownload per Browser kam erstmal nicht in Frage, da ja nicht klar war, ob der Nouveau nicht erneut Probleme machen würde.)  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Netzwerk, sshd, IPV6 und Probleme mit dem dsa-key</p>
<p>In meiner Testinstallation schlägt die standardmäßige DHCP-Konfiguration fehl, weil sowohl auf unserem Router als auch dem Standard-DHCP-Server des Netzes unsere &#8220;iptables&#8221;-basierten Firewalls nur uns bekannte MAC-Adressen zulassen. Für den Nvidia-Test trage ich deshalb die IP(V4)-Adresse auf dem neuen System zunächst von Hand, und zwar mittels &#8220;Yast >> Netzwerkeinstellungen&#8221; ein - und gleich auch noch das Standardgateway sowie einen DNS-Server. Alles wie von früheren Opensuse-Installationen her gewohnt - das Setzen der Parameter funktionierte einwandfrei. (Nach der Freigabe der MAC-Adresse der Netzwerkkarte auf dem Router (Standard-Gateway) kann der PC dann auch auf das Internet zugreifen.) </p>
<p><strong>Noch ein wichtiger Hinweis zu IPV6: </p>
<p>Man sollte beim Einstellen der Netzwerkparameter im ersten Anlauf IPV6 nicht deaktivieren (dies wäre bei &#8220;Yast >> Netzwerkeinstellungen&#8221; unter &#8220;Globale Optionen&#8221; möglich). Man läuft sonst in Schwierigkeiten beim Einsatz von &#8220;ssh -X&#8221; von Remotesystemen aus. Ferner entsteht ein kleines Problem bei Postfix, dass sich ggf. nicht mehr ordnungsgemäß starten läßt. </p>
<p>Zur Lösung des ssh/sshd-Problems siehe einen früheren Blog-Beitrag : </p>
<p><a href="http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/">http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/</a></p>
<p>Dort wird auch einen Fehlermeldung beim Starten des &#8220;sshd&#8221;-Daemons bzgl. eines nicht gesetzten bzw. nicht ladbaren &#8220;DSA keys&#8221; behandelt.  </p>
<p>Zum Postfix-Problem bei deaktiviertem IPV6 siehe dagegen die Kommentare unter </p>
<p><a href="http://www.linux-club.de/viewtopic.php?f=5&#038;t=114733  ">http://www.linux-club.de/viewtopic.php?f=5&#038;t=114733  </a></p>
<p>Nun starte ich schließlich nach den im anderen Blogbeitrag beschriebenen Maßnahmen zu ssh den sshd-Daemon &#8220;rcsshd start&#8221;. Von einem Remotesystem aus kopiere ich mir nun die Nvidia-Treiberdatei mittels </p>
<p>scp QUELL_PFAD_NVIDIA_TREIBER_DATEI UID@12.1_HOST:/ZIEL_PFAD_NVIDIA_TREIBER_DATEI</p>
<p>auf mein Opensuse 12.1-System. (Die groß geschriebenen Parameter sind natürlich an die jweiligen lokalen Verhältnisse anzupassen.)</p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Installation des Nvidia-Treibers</p>
<p>Welcher Treiber ist der richtige? Hier ist nach einem Fehlversuch meienrseits darauf hinzuweisen, dass mit dem 3.1.0-Kernel von Opensuse 12.1 für neuere Grafikkarten nur der proprietäre Treiber ab der Version 290 kompatibel ist. </p>
<p>Dann teste ich im Runlevel 3 mal mit </p>
<p style="margin-left:20px;">sh NVIDIA-Linux-x86_64-290.10.run </p>
<p>ob eine Installation möglich ist. Natürlich nicht, da der Nouveau-Treiber ja noch geladen ist. Den Vorschlag des Nvidia-Installers, einen entspechend notwendigen Eintrag in Startup-Dateien vorzunehmen (Blacklisting des nouveau-Moduls), bestätige ich. Dann starte ich das System neu - nun auch noch zusätzlich mit dem Parameter <strong>&#8220;nomodeset&#8221;</strong>, also </p>
<p style="margin-left:20px;">linux 3 nomodeset init=/sbin/sysvinit</p>
<p>Danach probiere ich die Nvidia-Installation nochmals. Das funktioniert nun, der Nouveau-Treiber wird nicht mehr geladen. Ggf. zeigt der Nvidia-Installer während des Installationsvorgangs eine Warnmeldung wegen eines Symbolic-Links. Dies passiert oft, wenn zuvor ein anderer Nvidia-Treiber - aus einer anderen Quelle - geladen war. Der Nvidia-installer korrigiert selbständig den bemängelten Link. Dann ggf. zur Sicherheit die Treiber-Installation nochmals durchführen. Die Warnmeldung sollte dabei nicht mehr auftauchen. Auf meinem System mußte ich nach Abschluß des Nvidias-Installers das Modul &#8220;nvidia.ko&#8221; übrigens per </p>
<p style="margin-left:20px;">modprobe nvidia</p>
<p>selbst laden. Der 290-Installer hatte dabei Probleme - und zwar auf mehreren Systemen - auch mit anderen Grakas. Das &#8220;modprobe&#8221;-Kommando läuft dann aber ohne Probleme. </p>
<p>Ein abschließendes &#8220;init 5&#8243; befördert uns danach vom Runlevel 3 in den Runlevel 5 - und dort wie erwartet endlich in den grfischen Login-Screen von kdm. Auch der nächste Reboot sowohl mit </p>
<p style="margin-left:20px;">nomodeset init=/sbin/sysvinit [>>> konventioneller System V Start]</p>
<p>als auch </p>
<p style="margin-left:20px;">nomodeset [>>> systemd - Start]</p>
<p>als Parametern läuft dann fehlerfrei bis auf den Runlevel 5 durch. </p>
<p>Bis auf die oben schon genannten Themen mit der Deaktivierung von IPV6 verhält sich das Opensuse-System dann im wesentlichen wie von Opensuse 11.4 her gewohnt. </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Zeitvergleich zwischen Bootvorgängen mit &#8220;Systemd&#8221; und &#8220;System V init&#8221;</p>
<p>Nun trage ich noch die Parameter &#8220;nomodeset init=/sbin/sysvinit&#8221; mit Hilfe von &#8220;Yast >> bootloader >> Weitere >> Konfigurationsdateien bearbeiten&#8221; permanent für den Opensuse 12.1-Eintrag des Boot-Menüs in die Datei &#8220;/boot/grub(menu.lst&#8221; ein. Will ich künftihg ein wenig mit &#8220;systemd&#8221; herumexperimentieren, kann ich den Parameter auf dem initialen Bootscreen immer noch manuell löschen. </p>
<p>Diese Wahlmöglichkeit nutze ich als erstes für einen Zeitvergleich. Ich möchte gerne wissen, was mir &#8220;systemd&#8221; außer der Tatsache, dass ich keine Meldungen während des Bootvorgangs mehr sehe, an Performance beim Booten bringt. Als erstes sehe ich mir die Zeit an, die vergeht bis nach dem Start aus dem Grub-Menü heraus der KDM-Login-Schirm erscheint. Das ernüchternde, etwas subjektive und handgestoppte Ergebnis ist: </p>
<ul>
<li>Booten in den Runlevel 5 mit konventioneller Methode: 20 Sek</li>
<li style="margin-top:10px;">Booten in den Runlevel 5 mit &#8220;systemd&#8221;: zw. 15 und 16 Sekunden</li>
</ul>
<p>Im besten Fall !</p>
<p>Fairerweise muss man sagen, das beim Starten des X-Window-Systems Zeit vergeht, die nicht allein von systemd sondern von der Grafikkarte, dem Treiber und dem angeschlossenen Schirm abhängt : wir sprechen hier von ca. 4 Sekunden. Das passt zum Eintrag in &#8220;/var/log/messages&#8221;:   </p>
<p style="margin-left:20px;">Jan  8 13:15:59 xen systemd[1]: Startup finished in 4s 211ms 950us (kernel) + 6s 583ms 110us (userspace) = 10s 795ms 60us.</p>
<p>Deshalb dachte ich, dass man einen faireren Vergleich dann bekommt, wenn man mit den unterschiedlichen Startvarianten nur in den Runlevel 3 hochfährt. Also habe ich die Vergleichsläufe erneut mit &#8220;linux 3&#8243; als Startparameter durchgeführt. Und da erhielt ich dann ein wahrhaft schockierendes und für mich überhaupt nicht mehr nachvollziehbares (aber reproduzierbares) Ergebnis: </p>
<ul>
<li>Booten in den Runlevel 3 mit konventioneller Methode: 13 Sek</li>
<li style="margin-top:10px;">Booten in den Runlevel 3 mit &#8220;systemd&#8221;: <strong><span style="color:#A90000;"> &gt; 38 Sek</span></strong></li>
</ul>
<p>Tatsächlich finde ich in &#8220;/var/log/messages&#8221; folgenden Eintrag: </p>
<p style="margin-left:20px;">Jan  8 13:40:27 xen systemd[1]: Startup finished in 4s 163ms 726us (kernel) + 34s 824ms 357us (userspace) = 38s 988ms 83us.</p>
<p>Damit hatte ich erstmal genug von &#8220;systemd&#8221;! Was immer die Opensuse-Entwickler da fabriziert haben. Das wirkt nicht ganz ausgreift- trotz schöner Artikel wie etwa unter folgender Adresse: </p>
<p><a href="http://news.opensuse.org/2011/12/22/systemd-%e2%80%93-boot-faster-and-cleaner-with-opensuse-12-1/ ">http://news.opensuse.org/2011/12/22/systemd-%e2%80%93-boot-faster-and-cleaner-with-opensuse-12-1/ </a></p>
<p>Man lese aber auch mal die anschließenden Kommentare! </p>
<p>Hinzu kommen richtig ernsthafte Probleme mit systemd beim Upgrade von komplexeren Opensuse 11.4-Systemen auf Opensuse 12.1. Dazu aber mehr in künftigen Beiträgen.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Erstes Fazit</p>
<p>bei Schwierigkeiten während der Installation hilft es ggf. mit &#8220;F5&#8243; und auf konventionelle Weise zu booten. Der Nouveau-treiber kann während der Installation im zusammenspeil mit bestimmten Grafikkarten erhebliche Probleme bereiten. Für Nvidia-Karten muss man nach der Installation von Opensuse 12.1 den neuesten proprietären Treiber der Version 290 installieren. Frühere Treiber laufen nicht mit dem neue Kernel. Die größte Neuerung von Opensuse 12.1, nämlich &#8220;systemd&#8221; verbessert den Startvorgang -auf einem elementaren System, auf dem keine Serverkomponenten geladen werden, aber nicht um weltbewegende Faktoren. Die Verbesserung wird nur dann wirksam, wenn in den Runlevel 5 gebootet wird. Bei einem Start in den Runlevel 3 verhält sich &#8220;systemd&#8221; unter Opensue 12.1 unerklärlich schlecht; der Startvorgang dauert dann um einen Faktor 3 länger als ein konventionelles Hochfahren des Systems nach bewährter &#8220;System V&#8221;-Manier. </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/01/08/opensuse-121-erfahrungen-mit-einer-neuinstallation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Opensuse 11.4 / 12.1 - Problem mit ssh -X</title>
		<link>http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/</link>
		<comments>http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 17:01:09 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[Opensuse 12.1]]></category>

		<category><![CDATA[Netzwerk]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/</guid>
		<description><![CDATA[An an meinen Arbeitsplatzsystemen habe ich inzwischen Opensuse 12.1 am Laufen. Dabei bin ich sowohl beim Upgrade meines PCs und bei einer Neuinstallation auf einem Laptop auf ein Problem mit &#8220;ssh&#8221; reingefallen. Das Problem trat schon bei Opensuse 11.4 auf. Ich hatte es nur vergessen. Deshalb ein kurzer Beitrag für diejenigen, die auch auf das [...]]]></description>
			<content:encoded><![CDATA[<p>An an meinen Arbeitsplatzsystemen habe ich inzwischen Opensuse 12.1 am Laufen. Dabei bin ich sowohl beim Upgrade meines PCs und bei einer Neuinstallation auf einem Laptop auf ein Problem mit &#8220;ssh&#8221; reingefallen. Das Problem trat schon bei Opensuse 11.4 auf. Ich hatte es nur vergessen. Deshalb ein kurzer Beitrag für diejenigen, die auch auf das Problem stoßen. Die nachfolgenden Erkenntnisse sind nicht auf meinem Mist gewachsen; das Wichtigste hat bereits Martin Vidner in einem entsprechenden Novell-Bug-Report als Kommentar geschrieben: </p>
<p><a href="https://bugzilla.novell.com/show_bug.cgi?id=686477">https://bugzilla.novell.com/show_bug.cgi?id=686477<br />
</a></p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Problembeschreibung</p>
<p>Deaktiviert man nach einer Installation von Opensuse 11.4/12.1 im Zuge der Netzwerkeinrichtung mittels Yast IPV6, so funktioniert danach von einem Remote-PC aus zwar noch der ssh-Login und das Arbeiten im ASCII-Terminal auf dem Opensuse 11.4/12.1-System. Das Starten von X- oder KDE-Applikationen wird aber verweigert. </p>
<p>Bei KDE-Applikationen taucht die Warnung auf, dass kein Zugang zum X-Server möglich sei. Dies obwohl man ggf. auf dem Zielsystem mit &#8220;xhost + <em>RemotePCAdresse</em>&#8221; den Zugriff explizit zugelassen oder aber entsprechende Auth-Mechanismen und Schlüssel korrekt eingerichtet hat.  </p>
<p>Bei Standard-X-Applikationen wie &#8220;xterm&#8221; erhält man eine Nachricht, dass die Umgebungsvariable DISPLAY nicht gesetzt sei. Ein &#8220;echo $DISPLAY&#8221; zeigt, dass dies auch stimmt. Eigentlich sollte hier ein &#8220;localhost:10.0&#8243; als Wert auftauchen. </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Problembehebung</p>
<p><strong>Lösung 1:</strong> Aktiviert man IPV6 mittel YAST wieder und rebootet man, so läuft danach alles wieder wie man es erwartet. </p>
<p><strong>Lösung 2:</strong> Bei diesem Ansatz geht man an die Wurzel des Problems. Diese Lösung ist allerdings nur dann sinnvoll, wenn man IPV6 wirklich nicht verwenden will. Der Grund des Problems liegt in der Konfiguration des SSH-Daemons &#8220;sshd&#8221;. Die entsprechende Konfigurationsdatei liegt unter </p>
<p style="margin-left:20px;">/etc/ssh/sshd_config</p>
<p>Hier gelten weitgehend die Defaulteinstellungen, die man (zumindest bei SuSE) auch in den kommentierten Zeilen der Datei findet. Von Interesse ist die Vorgabe </p>
<p style="margin-left:20px;">#AddressFamily any</p>
<p>Auf Basis dieser Einstellungen sucht der ssh-Daemon nach beiden Protokollen gleichzeitig. Obwohl bei deaktiviertem IPV6 nur IPV4 gefunden werden muss. Für reines IPV4 hilft nun statt &#8220;any&#8221; die Einstellung &#8220;inet&#8221;, also : </p>
<p style="margin-left:20px;"># changed by rmo - because of IPV6 - IPV4 bug (see https://bugzilla.novell.com/show_bug.cgi?id=686477)<br />
AddressFamily inet</p>
<p>Konfigurationsdatei speichern, mittels Yast IPV6 deaktivieren, rebooten und testen. &#8220;ssh -X&#8221; funktioniert dann von einem Remote-PC aus wie  erwartet - obwohl IPV6 auf dem Opensuse 11-4/12.1-Host deaktiviert ist. X-Anwendungen lassen sich nun starten.    </p>
<p>Bleibt nur die Frage, wer sich darum kümmern wird, dass bei künftigen Releases das &#8220;any&#8221; in der sshd-Konfiguration alternativ als IPV6 <em>oder</em> IPV4 interpretiert wird.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Nachtrag 05.12.2012: Zusätzliches sshd-Problem unter Opensuse 12.1 - Fehlermeldung zu DSA-Keys</p>
<p>Bei Upgrades zu und bei einer Neuinstallation von Opensuse 12.1 bin ich darüber gestolpert, dass das Starten des &#8220;sshd&#8221;-Dämons mit der Meldung: </p>
<p style="margin:20px;">Generating /etc/ssh/ssh-host-dsa-key<br />
DSA keys must be 1024 bits<br />
Startig SSH daemon<br />
Could not load host key:<br />
/etc/ssh/ssh-host-dsa-key </p>
<p>quittiert wird. Die letzte Meldung ist korrekt:  der Key wird zumindest nicht am erwarteten Bestimmungsort erzeugt. Ohne die genaue Fehlerursache in den entsprechenden Skripts analysiert zu haben, möchte ich darauf hinweisen, dass man das Problem über einen mutigen händischen Versuch zur Schlüsselgenerierung   </p>
<p style="margin-left:20px;">ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key</p>
<p>umgehen kann.  </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2012/01/03/opensuse-114121-problem-mit-ssh-x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cyrus IMAP unter Opensuse auf die Schnelle</title>
		<link>http://linux-blog.anracom.com/2011/11/28/cyrus-imap-auf-die-schnelle/</link>
		<comments>http://linux-blog.anracom.com/2011/11/28/cyrus-imap-auf-die-schnelle/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 18:58:50 +0000</pubDate>
		<dc:creator>rmo</dc:creator>
		
		<category><![CDATA[Postfix, Cyrus, Kmail]]></category>

		<guid isPermaLink="false">http://linux-blog.anracom.com/2011/11/28/cyrus-imap-auf-die-schnelle/</guid>
		<description><![CDATA[
Mein Freund Michael fragte mich mal, was ich tue, um alle meine gesammelten (alten) Mails auf Reisen einsehen zu können, wenn ich keine Verbindung zum Internet habe. 
Ich denke, dass die Voraussetzung mit dem Internet gar nicht so entscheidend ist, denn nicht jeder möchte alle seinen Firmenmails oder auch seinen privaten Mails dauerhaft bei einem [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Mein Freund Michael fragte mich mal, was ich tue, um alle meine gesammelten (alten) Mails auf Reisen einsehen zu können, wenn ich keine Verbindung zum Internet habe. </p>
<p>Ich denke, dass die Voraussetzung mit dem Internet gar nicht so entscheidend ist, denn nicht jeder möchte alle seinen Firmenmails oder auch seinen privaten Mails dauerhaft bei einem Provider vorrätig halten. Und nicht jeder hat einen eigenen Root-Server mit IMAP-Komponente im Internet. </p>
<p>In unserer kleinen Firma laden wir z.B. alle Mails von unseren verschiedenen Internet-Providern per &#8220;fetchmail&#8221; herunter und transferieren sie über Postfix auf einen lokalen, eigenen IMAP-Server (Cyrus) im Hausnetz. Dort werden Sie nach Kunden vorgefiltert. </p>
<p>Schon aus Sicherheitsgründen lassen wir unsere Mails nicht im Internet herumstehen. Wenn wir dann mal länger verreisen müssen, gibt es für uns zwei Methoden, unsere bisherigen Mails, die z.T. mehrere Gigabyte umfassen, unter Linux auf einem Laptop einzusehen: </p>
<ol>
<li style="font-weight:normal;"><strong>Disconnected IMAP-Account unter Kmail:</strong> <br />Ich lege unter Kmail einen sog. &#8220;Disconnected-IMAP-Account&#8221; an und synchronisiere den vor unserer Abreise mit den Inhalten der mir zugänglichen Mailverzeichnisse auf unserem IMAP-Server. Das funktioniert in der Regel recht gut und ist sicher die einfachste Methode, seine IMAP-Mails vom hauseigenen Server auf Reisen mitzunehmen.
<p> Mit folgenden nicht unwesentlichen Einschränkungen: Solange man sich auf seine KDE-Installation verlassen kann, diese nicht grundlegend ändert oder updated, und keine versehentliche Synchronization des Disconnected-Imap-Accounts mit dem Nirwana anstößt &#8230;. Ein weiterer  Nachteil ist natürlich der lokal auf dem Laptop benötigte Plattenplatz  - in unserem Fall doch einige Gigabyte. </p>
</li>
<li style="margin-top:10px; font-weight:normal;"><strong>Zugriff auf ein IMAP-Backup unter einem lokalen IMAP-Server:</strong> <br />Ich kopiere zur Sicherheit den kompletten Inhalt des Verzeichnisses &#8220;/var/spoool/imap&#8221; von unserem SLES auf ein geschütztes Verzeichnis meines Laptops (mit cp -dpRv) oder eine kryptierte externe USB-Harddisk. Das ist ein sehr nützlicher Backup. Zur Not implementiere ich mir nämlich auf die Schnelle einen lokalen Cyrus-Server auf meinem Laptop und rekonstruiere mir dann die Mailverzeichnisse, die mich interessieren. Dann kann ich mit KMail auf dem Laptop auf den lokalen Cyrus-Server zugreifen und die benötigten Mails einsehen.
<p> Ein Vorteil dieser  Lösung ist u.a. der, dass man nicht immer gleich alle Mailverzeichnisse zur Verfügung stellen muss, sondern evtl. nur die gerade interessanten, z.B. kundenbezogene. (Voraussetzung ist eine hinreichende Gliederung der Mailverzeichnis-Hierarchie) </li>
</ol>
<p>Die Variante 2) ist auch dann ein schöner Rettungsanker, wenn man sich bei einem KDE-Upgrade in der Fremde (z.B. von KDE 4.5 auf 4.7) seine Akonadi- und Kmail-Installation auf einem Opensuse 11.4 praktisch zwangsweise zerschießen muss. Denn der Sprung vom Kmail 1.x zu Kmail2 und die entsprechend notwendigen Migrationen von IMAP-Resourcen funktionieren schlicht nicht fehlerfrei. </p>
<p>Oft genug muss der KDE-Nutzer seit der Akonadi-Einführung feststellen, dass Kmail sich nach fehlgeschlagenen Migrationsversuchen nicht mehr starten läßt. Dann bleibt einem nur mehr der Neuaufbau der Akonadi-Ressourcen und von Kmail durch Löschen der Inhalte entsprechender Akonadi- und Kmail-Konfigurationsdateien. Leider können dabei auch die &#8220;Disconnected-IMAP-Verzeichnisse&#8221; vom alten Kmail verloren. Das passierte mir neulich in Norwegen. Hat man dann seine IMAP-Dateien in Form eines Backups dabei, ist das kein Weltuntergang. </p>
<p>Wie kommt man also auf die Schnelle unter Opensuse zu einem lokalen Cyrus IMAP-Server, mit dem man die Mails eines IMAP-Backups einsehen kann? Das ist gar nicht so schwer, wenn man bei der Sicherheit Abstriche macht und auf eine Open-SSL-Umgebung für den lokalen IMAP-Server verzichtet. Den IMAP-Port des Cyrus-Servers kann man durch eine Firewall ja nach außen gezielt sperren, wenn man sich mit seinem Laptop während einer Reise ins Internet begibt. </p>
<p>Die nachfolgende Installation ist allerdings so simpel, dass sie kaum für mehr als das Lesen alter Mails aus einem Backup geeignet ist. Sie kann nicht für einen produktiven Betrieb - z.B. zusammen mit Postfix - eingesetzt werden. Aber das ist in diesem Artikel auch gar nicht die Zielsetzung.</p>
<p>Wer sich genauer mit CYRUS IMAP und SASL befassen will, sei auf dir Dokumentation unter </p>
<p>/usr/share/doc/packages/cyrus-imapd/doc/</p>
<p>und </p>
<p>/usr/share/doc/packages/cyrus-sasl/doc/</p>
<p>hingewiesen. (Hierzu muss man sich unter Opensuse natürlich die RPMs für die Paket-Dokumentation installiert haben.) </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 1: Notwendige Pakete der Opensuse Repositories</p>
<p>Eine Voraussetzung der Cyrus-Installation ist , dass man sich bereits die RPM-Pakete von Opensuse für den lokalen Cyrus-Imap-Server und den SASL-Authentifizierungsmechanismus installiert hat. Folgende Pakte stellen nach meiner  Erfahrung das notwendige Minimum dar:   </p>
<ul>
<li>cyrus-imapd</li>
<li>cyrus-sasl</li>
<li>cyrus-sasl-plain</li>
<li>cyrus-sasl-saslauthd</li>
<li>perl-Cyrus-IMAP</li>
<li>perl-Athen-SASL</li>
</ul>
<p>Will man neben &#8220;Plain&#8221; andere sicherere SASL-Mechanismen wie z.B. &#8220;digest-MD5&#8243; (für die Passwortverschlüsselung) benutzen, so muss man sich die entsprechenden Pakte zusätzlich installieren. Ich gehe auf solche Varianten aber nachfolgend nicht ein. </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 2: Starten der Dämonen</p>
<p>Bevor man administrativ tätig werden kann, müssen die Cyrus- und SASL-Dienste laufen. Man prüft den Status der Dienste mit </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; "># &nbsp; rccyrus status <br /># &nbsp; rcsaslauthd status </p>
<p>Nötigenfalls startet man die Dienste unter Opensuse explizit per   </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; "># &nbsp; rccyrus start<br /># &nbsp; rcsaslauthd start </p>
<p>Für ein dauerhaften Start beim Hochfahren trägt man die Dienste über <strong>&#8220;Yast &gt;&gt; Systemdienste (Runlevel)&#8221;</strong> für die gewünschten Runlevels [ z.B. 3 und 5 ] ein.              </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 3: User &#8220;cyrus&#8221; als Mitglied der Gruppe &#8220;mail&#8221; überprüfen</p>
<p>Wir prüfen dann, dass es einen User &#8220;cyrus&#8221; im System gibt. Dieser wird unter Suse normalerweise bei der RPM-Installation automatisch angelegt und ist Mitglied der Gruppe &#8220;mail&#8221;. Sein Homeverzeichnis ist &#8220;/var/lib/imap&#8221;. Er sollte ferner Owner des Verzeichnisses &#8220;var/spool/imap&#8221; sein. </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">laplux:~ # ls -l /var/spool<br /> &#8230;..<br />drwxr-x&#8212;  3 cyrus  mail   4096 Nov 17 17:26 imap<br /> &#8230;.</p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 4: SASL für imap als Authentifikations-Mechanismus festlegen</p>
<p>Der Cyrus-SASL-Mechanismus muss in der Datei &#8220;/etc/imapd.conf&#8221; als Auth-Verfahren für den Cyrus IMAP-Server festgelegt werden. Siehe hierzu die rot markierten Einträge im nachfolgenden Listing der &#8220;imapd.conf&#8221;-Datei. Diese sehr einfache Datei wurde mit der Installation der RPM-Pakete angelegt (bis auf einen Eintrag &#8220;allowplaintext&#8221;, den wir weiter unten erläutern):   </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">
configdirectory: /var/lib/imap<br />
partition-default: /var/spool/imap<br />
sievedir: /var/lib/sieve<br />
admins: cyrus<br />
<span style="color:#A90000; font-weight:bold;">allowanonymouslogin: no</span><br />
autocreatequota: 10000<br />
reject8bit: no<br />
quotawarn: 90<br />
timeout: 30<br />
poptimeout: 10<br />
dracinterval: 0<br />
drachost: localhost<br />
<span style="color:#A90000; font-weight:bold;">sasl_pwcheck_method: saslauthd</span><br />
lmtp_overquota_perm_failure: no<br />
lmtp_downcase_rcpt: yes<br />
&nbsp;<br />
# Changed by cyrus for an installation of intern backup server<br />
<strong>allowplaintext:yes</strong><br />
&nbsp;<br />
#<br />
# if you want TLS, you have to generate certificates and keys<br />
#<br />
#tls_cert_file: /usr/ssl/certs/cert.pem<br />
#tls_key_file: /usr/ssl/certs/skey.pem<br />
#tls_ca_file: /usr/ssl/CA/CAcert.pem<br />
#tls_ca_path: /usr/ssl/CA
</p>
<p>Danach starten wir den IMAP-Server per </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; "># &nbsp; rccyrus restart</p>
<p>neu. </p>
<p><strong>Hinweis 1:</strong> Die Konfigurationsvielfalt für einen ausgewachsenen IMAP-Server kann man nach einem Blick in die Manpage erahnen: </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; "># &nbsp;man 5 imapd.conf</p>
<p>Für unsere einfachen Zwecke genügen die obigen Einträge aber vollkommen.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 5: SASL-Passwort für den User &#8220;cyrus&#8221; setzen und die Datei &#8220;sasldb2&#8243; lesbar machen</p>
<p>Auch der User &#8220;cyrus&#8221; muss sich natürlich gegenüber dem IMAP-Server authentifizieren.  Als User &#8220;root&#8221; legen wir nun das SASL-Passwort für cyradm fest. Hierzu benutzten wir das Programm &#8220;/usr/sbin/saslpasswd2&#8243;: </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">laplux:~ # saslpasswd2 -c cyrus<br />Password:<br />Again (for verification): </p>
<p>Dabei geben wir das gewünschte Passwort (nachfolgend mit &#8220;CYRUS_PWD&#8221; bezeichnet) zweimal ein. </p>
<p>Zudem müssen wir dafür sorgen, dass der User &#8220;cyrus&#8221; die Datei &#8220;/etc/sasldb2&#8243; lesen kann. Am einfachsten geschieht dies in unserem Fall, indem man &#8220;cyrus&#8221; zum Owner macht:  </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">laplux:~ # chown cyrus /etc/sasldb2*</p>
<p>Bei komplexeren Konfigurationen, in denen mehrere Programme SASL nutzen, muss hier bei Bedarf geeignete Gruppen aufbauen, die noch andere User mit aufnehmen. </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 6: Mailverzeichnis für einen neuen Mailuser &#8220;rmx&#8221; anlegen</p>
<p>Unser Mailuser, unter dessen ID wir auf die Mails zugreifen wollen, habe die UID &#8220;rmx&#8221;. Wir legen nun einen Mailordner (Eingangskorb) für den User &#8220;rmx&#8221; an. Dazu wechseln wir zum User &#8220;cyrus&#8221; und führen dann das Kommando <strong>&#8220;cyradm&#8221;</strong> aus, das uns in eine eigene Kommandoumgebung für den Cyrus-Server führt:   </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">lap3lux64:~ # &nbsp; su - cyrus <br />
cyrus@lap3lux64:~>  cyradm <br />
cyradm> connect localhost <br />
Password: <br />
localhost.localdomain> lm<br />
user.rau (\HasChildren)<br /> <br />
user.rau.Gesendete Objekte (\HasNoChildren)  <br />
user.rau.alpha_inbox (\HasNoChildren) <br /> <br />
localhost.localdomain> cm user.rmx <br />
localhost.localdomain> lm <br />
user.rau (\HasChildren) <br /> <br />
user.rau.Gesendete Objekte (\HasNoChildren)  <br />
user.rau.alpha_inbox (\HasNoChildren) <br /> <br />
user.rmx (\HasNoChildren) <br /> <br />
localhost.localdomain>
</p>
<p>Zu den Kommandos im Einzelnen: </p>
<p>Bevor wir ein Verzeichnis anlegen können, müssen wir uns mit unserem lokalen cyrus-Server verbinden. Dies geschieht über das cyradm-Kommando &#8220;connect&#8221; - hier &#8220;connect localhost&#8221;. Das einzugebende Passwort ist nun genau das zuvor eingerichtete SASL-Passwort &#8220;CYRUS_PWD&#8221;. </p>
<p>Nach der erfolgreichen Verbinung zum lokalen IMAP-Server sehen wir uns zunächst einmal um. Das oben dargestellte Kommando <strong>&#8220;lm&#8221;</strong> zeigt alle bereits vorhandenen Mailverzeichnisse an. Beginnt man von Scratch wird hier natürlich kein Verzeichnis angezeigt. Im obigen Beispiel sind bereits Verzeichnisse für einen User &#8220;rau&#8221; vorhanden. </p>
<p>IMAP arbeitet mit ganzen hierarchischen Mail-Verzeichnisbäumen. In der IMAP-Verzeichnishierarchie wird ein User-Zweig für den User mit der ID &#8220;uid&#8221; normalerweise durch Erzeugen des Verzeichnisses <strong>&#8220;user.uid&#8221;</strong> angelegt. </p>
<p>Der Schlüsselbefehl für das Anlegen eines Mailverzeichnisses ist <strong>&#8220;cm&#8221;</strong>. Legt man keinen speziellen Posteingang an, so kann dieses Verzeichnis auch als Default-Posteingangskorb benutzt werden. Das abschließende &#8220;lm&#8221; zeigt an, dass das gewünschte Verzeichnis erstellt wurde. </p>
<p><strong>Hinweis 2:</strong> Man kann alle Befehle, die einem unter der &#8220;cyradm&#8221;-Oberfläche zur Verfügung stehen, durch Eingabe von <strong>&#8220;help&#8221;</strong> einsehen. Die cyradm-Umgebung verläßt man mit <strong>&#8220;quit&#8221;</strong> oder <strong>&#8220;exit&#8221;</strong>. </p>
<p><strong>Hinweis 3:</strong> Hier lohnt es sich, als root einen vergleichenden Blick auf die Verzeichnisstruktur unter &#8220;/var/spool/imap/user/rmx&#8221; zu werfen.      </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">laplux:/var/spool/imap/user/rmx # ls <br />
cyrus.cache  cyrus.header  cyrus.index
</p>
<p>Man erkennt, dass bereits Filestrukturen zur Indizierung und zum Cachen der Verzeichnisinhalte angelegt wurden. Diese sind zu füllen, sobald wir das Verzeichnis mit Inhalt versehen.    </p>
<p><strong>Hinweis 4: </strong>Die Hierarchie der Mailverzeichnisse wird in der &#8220;cyradm&#8221;-Umgebung durch eine einfach qualifizierende Punkt-Notation erfasst - z.B.: user.uid.suppliers.suse.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 7: SASL-Passwort für den Mail-User &#8220;rmx&#8221; setzen und dem User Rechte an seinem Mailverzeichnis geben </p>
<p>Dem Leser ist sicher aufgefallen, dass auch der User &#8220;rmx&#8221; natürlich noch SASL bekannt gemacht werden muss. Ferner kann man sich denken, dass ein IMAP-User hinreichende Rechte bekommen muss, um auf die ihm zugeordneten IMAP-Verzeichnisse auch zugreifen zu dürfen. Wir benutzen zunächst wieder &#8220;saslpasswd2&#8243; als root: </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">laplux:~ # saslpasswd2 rmx<br />
Password:<br /> <br />
Again (for verification):
</p>
<p>Das Passwort für den User &#8220;rmx&#8221; sei &#8220;RMX_PWD&#8221;. Nun gehen wir noch einmal in die &#8220;cyradm&#8221;-Umgebung und verbinden uns mit dem lokalen Server und schauen nach, wie wir Rechte abfragen und vergeben können :</p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">
ap3lux64:~ # su - cyrus <br />
cyrus@lap3lux64:~> cyradm <br />
cyradm> connect localhost <br />
Password:  <br />
localhost.localdomain> help <br />
&nbsp;<br />
authenticate, login, auth         authenticate to server <br />
chdir, cd                         change current directory <br />
createmailbox, create, cm         create mailbox <br />
deleteaclmailbox, deleteacl, dam  remove ACLs from mailbox  <br />
deletemailbox, delete, dm         delete mailbox  <br />
disconnect, disc                  disconnect from current server  <br />
exit, quit                        exit cyradm  <br />
help, ?                           show commands  <br />
info                              display mailbox/server metadata  <br />
listacl, lam, listaclmailbox      list ACLs on mailbox  <br />
listmailbox, lm                   list mailboxes  <br />
listquota, lq                     list quotas on specified root  <br />
listquotaroot, lqr, lqm           show quota roots and quotas for mailbox  <br />
mboxcfg, mboxconfig               configure mailbox  <br />
reconstruct                       reconstruct mailbox (if supported)  <br />
renamemailbox, rename, renm       rename (and optionally relocate) mailbox  <br />
server, servername, connect       show current server or connect to server  <br />
setaclmailbox, sam, setacl        set ACLs on mailbox  <br />
setinfo                           set server metadata  <br />
setquota, sq                      set quota on mailbox or resource  <br />
subscribe, sub                    subscribe to a mailbox  <br />
unsubscribe, unsub                unsubscribe from a mailbox  <br />
version, ver                      display version info of current server  <br />
xfermailbox, xfer                 transfer (relocate) a mailbox to a different server  <br />
&nbsp;<br />
localhost.localdomain> lam user.rmx  <br />
rmx lrswipkxtecda  <br />
&nbsp;<br />
localhost.localdomain> sam <br />
usage: setaclmailbox mailbox id rights [id rights &#8230;]<br />
&nbsp;<br />
localhost.localdomain> sam user.rmx rmx all<br />
localhost.localdomain> lam user.rmx<br />
rmx lrswipkxtecda<br />
&nbsp;<br />
localhost.localdomain> sam user.rmx rau all<br />
localhost.localdomain> lam user.rmx<br />
rmx lrswipkxtecda<br />
rau lrswipkxtecda<br />
&nbsp;<br />
localhost.localdomain> cm user.rmx.sent<br />
localhost.localdomain> lam user.rmx.sent<br />
rmx lrswipkxtecda<br />
rau lrswipkxtecda<br />
&nbsp;<br />
localhost.localdomain> sam user.rmx rau none<br />
localhost.localdomain> lam user.rmx<br />
rmx lrswipkxtecda<br />
localhost.localdomain>
</p>
<p>Das Help-Kommando führt uns zu den Kommandos <strong>&#8220;lam&#8221;</strong> für die Anzeige der Access-Rights und <strong>&#8220;sam&#8221;</strong> zum Setzen der Rechte. Die oben im Listing angezeigten Kommandos sind dann kaum erläuterungsbedürftig. </p>
<p>Wir erkennen, dass der User &#8220;rmx&#8221; bereits automatisch alle Rechte am Mail-Verzeichnis &#8220;uxer.rmx&#8221; zugeteilt bekommen hat. Diese Rechte werden auch auf weitere Subverzeichnisse &#8220;vererbt&#8221;. Dies gilt übrigens auch für andere User - hier z.B., wenn man auch dem User &#8220;rau&#8221; sämtliche Rechte am Verzeichnis &#8220;user.rmx&#8221; einmal testweise zuordnet. Am Schluss nehmen wir dem User &#8220;rau&#8221; die zugewiesenen Rechte wieder weg.  </p>
<p><strong>Hinweis 5:</strong> Welche Rechte es in Bezug auf Mailverzeichnisse unter Cyrus IMAP gibt und was sie bedeuten, erfährt man durch Studium der folgenden Doku-Seite, die man in einem Browser betrachten kann: </p>
<p style="margin-left:20px;">file:///usr/share/doc/packages/cyrus-imapd/doc/overview.html#aclrt </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 7: Mails aus dem Backup kopieren und Mailverzeichnis rekonstruieren</p>
<p>Nun wollen wir das Verzeichnis &#8220;user.rmx&#8221; mit Mailinhalt füllen. Dies geschieht einfach durch <strong>Umkopieren der Inhalte des korrespondierenden Verzeichnisses in unserem Backup</strong> von &#8220;/var/spool/imap&#8221;, das wir von unserem richtigen IMAP-Server angelegt hatten. </p>
<p>Typischerweise haben wir unsere Sicherung auf einem USB-Stick oder einer USB-Platte dabei. Diese sei lokal am Laptop unter unter dem Verzeichnis &#8220;/backup&#8221; gemountet und die ursprüngliche Verzeichnisstruktur &#8220;/var/spool/imap&#8221; sei unter dem Verzeichnis &#8220;/bup_cyrus&#8221; abgelegt.  </p>
<p>Dort - also am Ort des Backups - suchen wir unter den obigen Annahmen als &#8220;root&#8221; das Verzeichnis &#8220;/var/spool/imap/user/rmx&#8221;. Unter den obigen Annahmen finden wir es unter: </p>
<p style="margin-left:20px;">/backup/bup_cyrus/var/spool/imap/user/rmx&#8221;  </p>
<p>(Natürlich können wir ggf. auch ein anderes Verzeichnis wählen, welches uns interessiert und das wir anschließend im lokalen Cyrus gerne unter user.rmx öffnen möchten. Nur Mails aus unterschiedlichen Usprungs-Verzeichnissen sollte man nicht im selben Zielverzeichnis mixen.) </p>
<p>Wir kopieren dann vom Backup alle Files (Mails) vom gewünschten Verzeichnis - hier also aus &#8220;/backup/bup_cyrus/var/spool/imap/user/rmx&#8221; - in das korrespondierende Mailverzeichnis &#8220;/var/spool/imap/user/rmx&#8221;  auf unserem lokalen IMAP-Server </p>
<p><strong>Ausgenommen werden vom Kopiervorgang evtl. vorhandene Subverzeichnisse und Files, die mit &#8220;cyrus.&#8221; beginnen (cyrus.cache, cyrus.header, cyrus.index). </strong>    </p>
<p>Abschließend ändern wir mit </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">
laplux:~ # cd /var/spool/imap/user/rmx<br />
laplux:/var/spool/imap/user/rmx # chown  cyrus.mail *
</p>
<p>den Owner und die Gruppe der kopierten Dateien (= Mails) ab.  </p>
<p>Nun gehen wir wieder in den &#8220;cyradm&#8221;-Bereich und &#8220;rekonstruieren&#8221; das Verzeichnis für den Gebrauch. Dies geschieht über den Befehl <strong>&#8220;reconstruct&#8221;</strong>, der die Cyrus -Index- und Cyrus-Datenbankstrukturen gebrauchsfähig macht und auf den tatsächlichen aktuellen Inhalt des Verzeichnisses abstimmt: </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">
lap3lux64:~ # su - cyrus<br />
cyrus@lap3lux64:~> cyradm<br />
cyradm> connect localhost<br />
Password: <br />
localhost.localdomain> reconstruct user.rmx<br />
localhost.localdomain> quit<br />
cyrus@lap3lux64:~>
</p>
<p>Je nach Größe des Inhaltes der transferierten Dateien dauert das etwas - nach meinen Erfahrungen geht der &#8220;reconstruct&#8221;-Prozess aber auch bei größeren Mailverzeichnissen recht zügig vonstatten. </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 9: LOGIN über PLAIN-Mechanismus zulassen und Test des Zugangs mit &#8220;imtest&#8221;</p>
<p>Uns fehlt noch ein wichtiger Eintrag, der sicherheitsrelevant ist und in der Datei &#8220;imapd.conf&#8221; vorgenommen werden muss. Da wir uns nur lokal einloggen wollen, ist keine SSL-Struktur mit Zertifikaten erforderlich - wenn wir auf unserem Laptop den potentiellen Zugriff von außen per Firewall dicht machen. </p>
<p>Ein Plain-Login muss für den Cyrus-Server aber explizit zugelassen werden! Sie finden den notwendigen Eintrag </p>
<p># Changed by cyrus for installation of intern backup server<br />
allowplaintext:yes    </p>
<p>bereits im obigen Dateil-Listing.   Wir hatten ihn dort nur noch nicht angesprochen. </p>
<p>Wir starten nach der obigen Änderung den Imap-Server per</p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; "># &nbsp; rccyrus restart </p>
<p>zur Sicherheit nochmal.  </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 10: LOGIN mit imtest testen</p>
<p>Wir können nun den ordnungsgemäßen Zugang zum IMAP-Server mit dem Befehl &#8220;imtest&#8221; testen.  </p>
<p style="margin-left:20px; margin-right:80px; background-color:#DDD; ">
lap3lux64:~ # &nbsp; imtest -v -a rmx -u rmx -m login localhost <br />
&nbsp;<br />
S: * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID AUTH=GSSAPI AUTH=LOGIN AUTH=PLAIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5  <br />
SASL-IR COMPRESS=DEFLATE] laplux.mydomain.de Cyrus IMAP v2.3.16 server ready <br />
Please enter your password:  <br />
C: L01 LOGIN rmx {7}  <br />
S: + go ahead  <br />
C: <omitted>  <br />
S: L01 OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED COMPRESS=DEFLATE ACL RIGHTS=kxte QUOTA MAILBOX-  <br />REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ   <br />THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE X-NETSCAPE URLAUTH]<br />
&nbsp; <br />
User logged in  <br />
Authenticated.  <br />
Security strength factor: 0
</p>
<p>Als Passwort muss man hier natürlich das &#8220;RMX_PWD&#8221; angeben. Wenn alles OK ist, sollte dann die Meldung &#8220;authenticated&#8221; erscheinen. Weitere Optionen zum &#8220;imtest&#8221;-Kommando liefert die zugehörige &#8220;man page&#8221;.   </p>
<p style="font-size:16px; font-weight:bold; margin-top:30px; margin-bottom:10px;">Schritt 11: IMAP-Zugang in Kmail konfigurieren und testen</p>
<p>Nach diesem positiven Zwischenergebnis ist alles bereitet, um sich unter Kmail oder einem anderen E-Mail-Programm einen neuen, zusätzlichen Account für den lokalen IMAP-Server einzurichten.  Man verfährt hierbei genauso wie mit jedem anderen IMAP-Account. </p>
<p>Bei der Einrichtung gilt:  Der anzugebende IMAP-Server ist &#8220;localhost&#8221;, die User-Id ist &#8220;rmx&#8221;, das zugehörige Password in unserem Fall dasjenige, das wir mit &#8220;RMX-PWD&#8221; bezeichnet hatten. </p>
<p>Danach taucht der lokale Server mit dem bislang einzigen Verzeichnis und dessen Mail-Inhalt auf. </p>
<p>Sind wir an einer Einsicht in andere Verzeichnisse aus unserem Backup interessiert, so legen wir über &#8220;cyradm&#8221; einfach entsprechende weitere Verzeichnisse an, kopieren die Inhalte aus dem Backup hinein und führen jeweils ein &#8220;reconstruct&#8221; für das neue Verzeichnis der entstehenden Hierarchie durch. </p>
<p>Viel Spass nun beim Lesen der IMAP-Mails aus einem Backup in der Fremde.     </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-blog.anracom.com/2011/11/28/cyrus-imap-auf-die-schnelle/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

