ubuntuusers.de

Cyrus-SASL

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Cyrus-SASL ist eine Implementierung des SASL-Verfahrens (RFC 4422 🇬🇧). 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

  • sasl2-bin

Befehl zum Installieren der Pakete:

sudo apt-get install sasl2-bin 

Oder mit apturl installieren, Link: apt://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.

sudo systemctl restart saslauthd 

Soll der Dienst beim Systemstart starten, muss man die Unit noch aktivieren:

sudo systemctl enable saslauthd 

Anschließend kann die Funktion getestet werden:

m@jammy:~$ sudo testsaslauthd -u BENUTZER -p KENNWORT
0: OK "Success."
m@jammy:~$  

sasldb2

Die sasldb2 ist eine 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:

m@jammy:/etc$ sudo saslpasswd2 -c BENUTZER
Password: 
Again (for verification): 
m@jammy:/etc$  

Benutzer löschen:

sudo saslpasswd2 -d BENUTZER 

Benutzer anzeigen:

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.

  • libpam-mysql

Befehl zum Installieren der Pakete:

sudo apt-get install libpam-mysql 

Oder mit apturl installieren, Link: apt://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):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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 Salt:

1
2
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:

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.

Diese Revision wurde am 13. August 2022 20:51 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Internet, Netzwerk, Server, System, Ubuntu