Archiv der Kategorie: Linux

GNU/Linux Howto’s and Tutorials

Kopano schutz mit Fail2ban

Kopano schützen gegen Attacken

Dieses Howto beschreibt die Installation und Konfiguration von Fail2ban für die Kopano Groupware auf Ubuntu 16.04.4 LTS. Fail2ban bietet effektiven schutz gegen Brute-Force Attacken, in dem aus Syslog und Apache Protokoll fehlgeschlagene versuche von Authentifizierungen herausgefiltert werden, um anschliessend den Host für eine bestimmte Zeit mittels Kernel Firewall zu blockieren.

Installation Fail2ban auf Kopano Server

Das Paket Fail2ban wird auf dem Ubuntu Host, als root wie folgt installiert. Fail2ban ist auf Python entwickelt, weshalb die erforderlichen Bibliotheken nachgeladen werden.

Nach der Installation wird Fail2ban ausgeführt und in systemd für den autostart aktiviert.

Ein Fail2ban Filter für Kopano bereitstellen, wir erstellen die Datei kopano-webapp-auth.conf

Den Inhalt mit folgenden Zeilen in die Filter Datei einfügen:

Den Fail2ban Filter für Kopano aktivieren, dazu die Konfigurationsdatei jail.local erstellen.

Und den folgenden Inhalt einfügen:

Hier wird error.log ausgelesen mit der Variable %(apache_error_log), /var/log/apache2/error.log

Fail2ban erneut starten um die änderungen zu aktivieren.

Den Status von Fail2ban kann wie folgt überprüft werden.

Die Firewall gibt Aufschluss über den Status der aktuell durch Fail2ban geblockten Hosts, mit einer iptables abfrage:

Postfix mit SASL-Authentifizierung verwenden

SMTP-Server müssen entscheiden, ob ein SMTP-Client autorisiert ist E-Mails zu versenden, für die der Server selbst zuständig ist.

Simple Authentication and Security Layer (SASL) Integration Postfix


Diese Anleitung beschreibt, wie man ein MTA (Mail Transport Agent) Postfix unter CentOS 7 mit CyrusSASL zur SMTP-Authentifizierung (SMTP-Auth) erweitert. Danach können Clients E-Mails mittels SMTP-Auth versenden. Diese Anleitung ist geprüft unter CentOS Linux release 7.7.1908 (Core), mit Postfix v2.10.1 und Cyrus-SASL 2.1.26. Es wird davon ausgegangen das Postfix bereits konfiguriert ist und TLS (Transport Layer Security) implementiert ist.

Postfix implementiert die SASL Library nicht selbst, sondern verwendet vorhandene Implementierungen als Bausteine. Dies bedeutet, dass einige SASL-bezogene Konfigurationsdateien zu Postfix gehören, während andere Konfigurationsdateien zu der spezifischen SASL-Implementierung gehören, die Postfix verwenden wird.

Installieren von Cyrus-SASL auf dem MTA

Als root die Pakete mit folgendem Command installieren:

Die einzelnen SASL-Mechanismen werden als RPMs installiert.

Es folgt die Einbindung für Postfix, hierzu die modifikation in der Datei /etc/postfix/master.cf vornehmen:

Damit Postfix mit SASL funktioniert, darf Postfix nicht im chroot-Verzeichnis laufen, Zeile smtps bei Position 5 (n).

SMTP-Auth für lokale Benutzer konfigurieren, wir editieren die Postfix Datei /etc/postfix/main.cf:

Die Konfiguration von Cyrus-SASL erfolgt durch zwei Dateien. Die erste Datei /etc/sysconfig/saslauthd kann übernommen werden:

Die SASL-Mechanismen PLAIN und LOGIN, CRAM-MD5 und DIGEST-MD5 kommen oft zum Einsatz, hierfür ist die Konfigurationsdatei /etc/sasl2/smtpd.conf zuständig, die bereitstellung wurde ebenfalls bei der Installation durchgeführt:

Nun Cyrus-SASL Library Daemon starten und den systemd autostart aktivieren, anschliessend Postfix re-starten:

Der SMTP-Submission Support auf Port 587 ist nun aktiviert, überprüfen lässt sich dies mit folgendem Kommando:

Zur Authentifizierung am SMTP-Gateway wird nun ein Benutzer erstellt, dieser E-Mails über den MTA versenden soll:

  Eine lokale UserID ist für unsere Anforderung hier ausreichend, Cyrus-SASL unterstützt weiter LDAP und SQL, um mit beispielweise Kopano oder einem AD Verzeichnisdienst zu interagieren.

Cyrus-SASL SMTP-Auth Testen

Welche Mechanismen zur Authentifizierung innerhalb von STARTTLS unterstützt werden, kann mit OpenSSL überprüft werden:

In der Ausgabe von openssl ein EHLO übergeben:

Eine telnet Session zum MTA mail.relayhost.net über Port 587 starten, dazu kann PuTTY oder KiTTY verwendet werden.

Der Benutzername und das Passwort muss Base64-kodiert an das SMTP-Gateway übertragen werden, ein solch kodierter String kann in der Shell Console erzeugt werden.

Folgende Eingaben im Terminal ausführen, um die SASL SMTP-Auth Konfiguration zu überprüfen.

Die Ausgabe von SMTP-Auth des Postfix MTA mit Cyrus-SASL.

Die oben kodierten Credentials bei den 334 Prompts einfügen, hier bei Zeile 15 als User24 und bei Zeile 17 unser Password.

  Ein 250 STARTTLS in der Ausgabe zeigt die Voraussetzungen, das Klartext-Benutzernamen mit Passwort durch STARTTLS geschützt an das SMTP-Gateway übermittelt werden.

sudo Passwort Timeout Erweitern

sudo-Passwort Eingabe

Auch Systemverwalter authentifizieren sich als normale Benutzer und verwenden sudo, wenn administrative Aufgaben erledigt werden. Beim ersten Aufruf fragt sudo die Kennwort Eingabe des Benutzers, dieser sudo berechtigt ist.

Der Standard-Passwort-Timeout beträgt 15 Minuten. Wenn also sudo innerhalb von 15 Minuten (900 Sekunden) ein weiteres mal ausgeführt wird, bleibt die Aufforderung das Kennwort erneut einzugeben aus.

timestamp_timeout:

Der timestamp_timeout definiert die Anzahl Minuten, die vergehen bevor sudo erneut nach dem Passwort fragen soll. Bearbeite zum Ändern des timestamp_timeout die Datei /etc/sudoers.

Ich empfehle visudo zu verwenden, um die Datei /etc/sudoers zu bearbeiten. Füge den Wert timestamp_timeout zur Zeile „Defaults“ in der Datei /etc/sudoers ein.

Die Standardeinstellung ist env_reset

Editiere sudoers so das die Zeile Defaults wie folgt aussieht:

timestamp_timeout=-1 (minus eins) bewirkt, dass das sudo-Passwort nie abläuft.

  Bei Ubuntu/Debian Distributionen hat die Option -0 nicht funktioniert. Ein höheren Wert zB. 60 wird akzeptiert.

timestamp_timeout=0 (null) bewirkt, dass das sudo-Kennwort alle 0 (null) Sekunden abläuft. Dies bedeutet, dass mit jedem aufruf von sudo nach dem Kennwort gefragt wird.