[[Vorlage(Getestet, jammy)]] ## Bitte hier alle wesentlichen Wikiartikel auflisten, deren Kenntnis vorausgesetzt wird. {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:systemd/systemctl:] [:MySQL:] (optional) }}} [[Inhaltsverzeichnis()]] Cyrus-SASL ist eine Implementierung des SASL-Verfahrens ([https://datatracker.ietf.org/doc/html/rfc4422 RFC 4422] {en}). Ziel von SASL ist die Entkopplung des Serverdienstes von der Authentifizierung, um den Programmieraufwand zu verringern. Ein Serverdienst muss nur eine Verbindung zum SASL-Dienst herstellen, jedoch nicht zum Authentifizierungs-Backend wie MySQL. = Installation = {{{#!vorlage Paketinstallation sasl2-bin }}} Anschließend muss die Datei '''/etc/default/saslauthd''' bearbeitet werden. Folgende Zeile muss hinzugefügt werden: {{{ START=yes }}} Möchte man für Diagnosezwecke Logging (standardmäßig nach '''/var/log/auth.log''') aktivieren, kann man ''-V'' im Startbefehl ergänzen: {{{ OPTIONS="-c -m /var/run/saslauthd -V" }}} Nach einem Neustart des Dienstes saslauthd ist Cyrus-sasld auch schon betriebsbereit, er authentifiziert gegenüber den im System vorhandenen Konten über PAM. {{{#!vorlage Befehl sudo systemctl restart saslauthd }}} Soll der Dienst beim Systemstart starten, muss man die Unit noch aktivieren: {{{#!vorlage Befehl sudo systemctl enable saslauthd }}} Anschließend kann die Funktion getestet werden: {{{#!vorlage Befehl m@jammy:~$ sudo testsaslauthd -u BENUTZER -p KENNWORT 0: OK "Success." m@jammy:~$ }}} == sasldb2 == Die sasldb2 ist eine [wikipedia:Berkeley-DB:Berkeley-Datenbank], welche die Benutzer und Kennwörter enthält. Sie ist getrennt von der Benutzerverwaltung im Linux-System. Diese liegt unter '''/etc/sasldb2'''. Um diese nutzen zu können, muss in der Datei '''/etc/default/saslauthd''' die Methode geändert werden: {{{ MECHANISMS="sasldb" }}} Verwaltet wird diese mit der Software ''saslpasswd2''. Benutzer hinzufügen: {{{#!vorlage Befehl m@jammy:/etc$ sudo saslpasswd2 -c BENUTZER Password: Again (for verification): m@jammy:/etc$ }}} Benutzer löschen: {{{#!vorlage Befehl sudo saslpasswd2 -d BENUTZER }}} Benutzer anzeigen: {{{#!vorlage Befehl m@jammy:/etc$ sudo sasldblistusers2 test@jammy: userPassword m@jammy:/etc$ }}} == MySQL == Cyrus-SASL kann mittels PAM nicht nur gegen die Unix-Benutzer, sondern auch gegen einen MySQL-Datenbank authentifizieren. {{{#!vorlage Paketinstallation libpam-mysql }}} Anschließend muss eine Konfigurationsdatei erstellt werden, z.B. '''/etc/mail-pam-mysql.conf'''. Diese muss folgenden Inhalt haben (die Daten müssen an die Datenbank angepasst werden): {{{#!code ini verbose = 0; users.host = IP-oder-Hostname; users.database = Name_der_DB; users.db_user = Datenbankbenutzer; users.db_passwd = DB-Kennwort; users.password_crypt = 1; users.md5 = true; users.table = mail_users; users.where_clause = active = 1; users.user_column = username; users.password_column = password; }}} Die Datenbank selbst kann mit folgendem SQL-Befehl angelegt werden: {{{#!code sql CREATE DATABASE db_mail; GRANT SELECT ON db_mail.* TO 'db_mail_user'@'localhost' IDENTIFIED BY 'db_mail_password'; USE db_mail; CREATE TABLE mail_users ( username VARCHAR(200) NOT NULL, password VARCHAR(40) NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1, INDEX username_idx(username) ); }}} Ein Benutzer kann mit folgendem SQL-Befehl angelegt werden, das 2. Argument ist ein [wikipedia:Salt_(Kryptologie):Salt]: {{{#!code sql INSERT INTO mail_users SET username='mustermann', password=ENCRYPT('Kennwort','$1$1234abcd'), active=1; }}} Anschließend muss eine Datei unter '''/etc/pam.d''' erstellt werden, die den Namen des Services hat, den die SASL-Applikation nutzt, z.B. ''test'' oder ''imap''. Die Applikation (z.B. der IMAP-Server Cyrus-IMAPd) muss diesen Service-Namen übergeben, damit auch diese Variante genutzt wird. Beispielsweise die Datei '''/etc/pam.d/test''' {{{ auth sufficient pam_mysql.so config_file=/etc/mail-pam-mysql.conf account sufficient pam_mysql.so config_file=/etc/mail-pam-mysql.conf }}} Hier wird die oben erstelle Konfigurationsdatei genutzt, für unterschiedliche Dienste könnten hier z.B. unterschiedliche Datenbanken genutzt werden. Aktiviert man verbose-Logging in saslauthd, kann man den genutzten Service-Namen im Log sehen: {{{ Aug 2 13:23:36 jammy saslauthd[7340]: : [login=mustermann] [service=test] [realm=]: not found, update pending }}} Entsprechend kann man auch testen: {{{#!vorlage Befehl m@jammy:/etc/pam.d$ sudo testsaslauthd -u mustermann -p Kennwort -s test 0: OK "Success." m@jammy:/etc/pam.d$ }}} Ohne Angabe von ''-s'' wird ''imap'' genommen. = Links = * [https://www.cyrusimap.org/sasl/ Homepage von Cyrus-SASL] {en} * [https://www.cyrusimap.org/imap/concepts/features/authentication-sql.html Authentifizierung mit SQL] {en} #tag: Netzwerk, Ubuntu, Internet, System, Sicherheit, Server