fail2ban – was machen wenn man sich selber ausgesperrt hat?

fail2ban ist ein tolles Werkzeug um ungebetene Gäste von seinem Server fern zu halten. Nach vordefinierten Regeln überwacht fail2ban in Echzeit die Logfiles nach verdächtigen Angriffsmustern. Nach einer frei definierbaren Anzahl an Fehlversuchen wird die verursachende IP-Adresse für eine ebenfalls frei definierbare Zeit durch iptables geblockt. Die häufigesten Angriffsversuche sind mit brute-force-Angriffen auf den ssh-Daemon Angriffe auf WordPress oder Postfix bzw. Dovecot, also das Mailsystem. Nun kann es vorkommen, dass man sich bzw. seine IP-Adresse unbeabsichtigt selber aussperrt. Das kann durch Schusseligkeit aber auch durch einen fehlkonfigurierten Email-Client oder ähnlichem vorkommen. fail2ban bzw. iptables macht keinen Unterschied zwischen den Diensten beim Sperren von IP-Adressen. Das hat nun den blöden Nebeneffekt, dass man für eine bestimmte Zeit keinen Zugriff mehr auf seinen Server hat.

Zunächst muss man seine eigene öffentliche IP-Adresse heraus bekommen. Da die meisten Menschen heutzutage über einen Router mit NAT im Internet sind entspricht die IP-Adresse im lokalen Netzwerk nicht seiner öffentlichen IP-Adresse. Die öffentliche IP-Adresse ist meist die internetseitige IP-Adresse des Routers. In der Shell kann man seine öffentliche IP-Adresse einfach ermitteln:

$ host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}'
123.456.789.123

Weiterlesen

Sound fällt nach Systemabsturz aus

Käfer (Bug)

Auch Linux hat einmal einen Hänger oder zumindest das X-Window/KDE hängt und man muss einen harten Reset machen. Letztens ist mir das passiert und das System startete auch wieder ganz normal. Leider war der Sound weg und im pavucontrol wurde mir nur ein Dummydevice statt der eingebauten Soundkarte angezeigt. Mehrere Neuboots brachten keine Besserung ebenso wenig wie Herunterfahren des Systems und Neustart. Was macht der geneigte Benutzer? Ja, er befragt die Suchmaschine seines geringsten Misstrauens.

Die Lösung des Problems war dann recht einfach. Man schaut mit fuser nach welche Devices belegt sind:

# fuser -v /dev/snd/*
                                 BEN.        PID ZUGR.  BEFEHL
/dev/snd/controlC0:  root        820 f.... alsactl
                                timidity    932 F.... timidity
/dev/snd/pcmC0D0p:   timidity    932 F...m timidity
/dev/snd/seq:                timidity    932 F.... timidity
/dev/snd/timer:             timidity    932 f.... timidity

Weiterlesen

Ventoy, der Multi-Bootmanager für den USB-Stick oder externe Festplatte

Schematisches Bild eines USB-Speichersticks

Viele kennen das: Man hat etliche USB-Sticks mit einem Bootimage für verschiedene Zwecke – Rettungssystem, Installationsmedien, alternative Betriebssysteme usw. Jeder USB-Stick wird separat erstellt und oft bleibt noch eine Menge Platz ungenutzt frei. Mit Ventoy wurde im April 2020 ein Open-Source-Projekt gestartet welches mithilfe eines minimalen BSD auf einem bootfähigen Image die Möglichkeit bietet sehr viele Images als .iso-Dateien auf ein externes Speichermedium zu kopieren und man erhält dadurch ein externe Multiboot-Medium.

Das Projekt findet man, zusammen mit den Downloads für Quellcode, Linux, Windows und als Live-CD, auf Github. Es werden mehr als 160 Isos auf dem Stick unterstützt. Sollte Ventoy selber veraltet sein, so kann man das einfach durch einen Mausklick aktualisieren und ein veraltetes Iso kann man durch simples Löschen des veralteten und kopieren des aktuellen Isos auf den neusten Stand bringen.

Weiterlesen

Durch fail2ban geblockte IPs an AbuseIPDB melden

 

Wenn man eine funktionierende Installation von fail2ban hat kann man die geblockten IP-Adressen an AbuseIPDB weiterleiten. AbuseIPDB sammelt bösartige IPs die auf verschiedenen Weise Server angreifen. Um IP-Adressen zu melden braucht man einen API-Schlüssel. Den erhält man dadurch das man sich bei AbuseIPDB einen Account erstellt und unter API einen Schlüssel erstellt. Der API-Schlüssel ist ein längerer hexadezimaler Wert.

Leider ist das Debian-10-Paket von fail2ban so alt, dass der API-Aufruf nicht mehr funktioniert. Zum Glück ist es nur eine Datei die aktualisiert werden muss. Dazu wechselt man in das Verzeichnis /etc/fail2ban/action.d/ und lädt mit:

wget https://raw.githubusercontent.com/fail2ban/fail2ban/master/config/action.d/abuseipdb.conf

die aktuelle Datei abuseipdb.conf in das korrekte Verzeichnis. Unten in dieser Datei wird auch in der untersten Zeile bei der Variablen abuseipdb_apikey der API-Schlüssel eingetragen.

Weiterlesen

Ein wenig zu Postfix und der Mailqueue

Logo von Postfix

Postfix ist ein weit verbreiteter Mail Transfer Agent (MTA) der auch bei mir in Benutzung ist. Seltsamerweise ist Email eine der komplexesten Dienste auf einem Server. Daher kann es durchaus vorkommen, dass etwas nicht rund läuft. Hier soll in einem kurzen How-To die Mailqueue von Postfix behandelt werden. Für mich soll das hier so etwas wie ein Spickzettel sein denn der Umgang mit der Mailqueue ist alles andere als intuitiv und offensichtlich. Postfix sammelt dort alle Mails die eintreffen oder versandt werden sollen die aus welchen Gründen auch immer nicht sofort abgearbeitet werden können. Die aktuelle Mailqueue kann man sich mit mailq anzeigen lassen und sie sollte eigentlich so aussehen:

# mailq
Mail queue is empty

Weiterlesen

IP-Blacklist aus dem Internet per Script an iptables übergeben

Schild Zugang für Unbefugte verboten

Angriffe eines Serverdienstes ist ein lästiges Übel für einen Serverbetreiber. Diese erfolgen vermutlich durch Scripte von gekaperten Servern. Bei einem sicher konfigurierten System können diese Angriffe keinen Schaden anrichten aber sie tauchen zu Haufen in der Serverlogs auf. Es gibt Listen im Internet wo solche lästigen IP-Adressen aufgeführt sind. Mir ist aufgefallen, dass unter https://www.redim.de eine recht brauchbare Liste, die täglich aktualisiert wird, existiert die normalerweise auch meine lästigsten Kandidaten enthalten. Nun wird dort vorgeschlagen die Liste in die .htaccess-Datei zu kopieren und darüber Websites zu schützen. Leider hat dies mehrere Nachteile.

  1. Nur Websites aber nicht andere Dienste wie Email, FTP oder SSH werden geschützt.
  2. Bei dem Betreiben von mehreren Websites muss diese Liste mehrfach eingepflegt werden.
  3. Die vorgeschlagene Variante über .htaccess muss händig aktualisiert werden oder man muss ein Script dafür schreiben.

Irgendwie hat mir das nicht wirklich zugesagt und Linux bringt mit iptables ja schon ein universelles Werkzeug mit um IP-Adressen zu blocken. Um Ports muss man sich da nicht kümmern da kaum zu erwarten ist, das von einer bösartigen IP-Adresse sinnvolle Anfragen kommen.

Mit diesen Überlegungen habe ich beschlossen ein Script zu schreiben was das alles automatisiert:

Weiterlesen

Ein Let’s Encrypt TLS-Zertifikat für Postfix statt ein selbstsigniertes Zertifikat

Logo von Postfix

Ich betreibe auf dem Server auch eine Nextcloud-Installation als Groupwarelösung. D.h. mein Kalender ist über mehrere Geräte abrufbar und auch teilbar, Emails können über ein Webmailer (Rainloop) versandt werden – leider ohne vernünftigen Unterstützung von GPG da man dazu den privaten Schlüssel auf dem Server hinterlegen müsste und ich einen Yubikey benutze welcher nicht unterstützt wird. Nun wollte ich für Nextcloud die Emailfunktion einrichten damit ich per Email an Termine erinnert werden kann. Trotz korrekter Verbindungsdaten funktionierte dies nicht und /var/log/mail.log quitierte die Testmail mit folgender Fehlermeldung:

postfix/smtps/smtpd[25336]: warning: TLS library problem: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca:../ssl/record/rec_layer_s3.c:1544:SSL alert number 48:

Nach einer Recherche stellte sich heraus, dass sich Nextcloud an dem selbst-signierten TLS-Zertifikat stört. Andere Mailer K-9 und Thunderbird scheint das nicht zu stören da Email ansonsten funktioniert. Seit einer Weile kann man von Let’s Encrypt kostenlose Zertifikate bekommen, was ich auch reichlich auf Websites benutze. Nun gilt es das TLS-Zertifikat von Postfix auf eines von Let’s Encrypt umzustellen. Dazu muss zunächst einmal ein Zertifikat beantragt werden. Dies erfolgt mit dem Client certbot der jedoch mit apt-get install certbot installiert werden muss.

Weiterlesen

Der unbekannte Befehl – Die Konsole für Dummies (Teil II)

Symbolisiertes Terminal

Im ersten Teil habe ich den grundsätzlichen Umgang mit  Befehlen und den Umgang mit Vorder- und Hintergrundprozessen geschildert. In diesem Teil soll es um die Hilfeseiten, der Vervollständigung in der Shell und der Shell-History, die Umgebungsvariable PATH, der Ausgabe von Programmen gehen und deren Umlenkungen in andere Programme und Dateien gehen. Als Letztes wird noch die Funktion von Alias und eine Reihe Bash-Shortcuts beschrieben. Der dritte Teil dieser Serie wird dann eine Reihe grundlegender Shellbefehle gehen die für einen Linuxbenutzer irgendwann essentiell sind.

Hilfeseiten

Jedes komplexere System braucht Hilfeseiten um bedienbar zu bleiben. So hat auch die Shell eine Hilfesystem. Der Aufruf einer Hilfeseite erfolgt mit dem Befehl man und daher auch der gebräuchliche Name für diese Seiten: „Manpages“. Praktisch jedes Programm für die Konsole hat eine oder mehrere dieser Seiten. Je nach Komplexität werden diese thematisch aufgeteilt. Folgende Aufzählung zeigt die thematische Unterteilung auf. Nicht jede dieser Seiten muss jedoch auch existieren.

  • Benutzerkommandos (1)
  • Systemaufruf (2)
  • Funktionen der Programmiersprache C (3)
  • Dateiformate (4)
  • Konfigurationsdateien (5)
  • Spiele (6)
  • Diverses (7)
  • Kommandos zur Systemadministration (8)
  • Kernelfunktionen (9)
  • Neue Kommandos (n)

Weiterlesen

Der unbekannte Befehl – Die Konsole für Dummies (Teil I)

Symbolisiertes Terminal

Heute einmal eine andere Form von „Der unbekannte Befehl“ denn ich habe festgestellt, dass ich zwar hier Befehle behandele die mehr oder minder exotisch sind aber hier noch niemals was zu der ein paar Handvollen die man ständig braucht geschrieben habe. Daher nun eine Abhandlung zu den gängigen Befehlen die man in der Konsole ständig nutzt.

Einleitung

Man braucht hier vor allem Dateioperationen wie das Auflisten von Verzeichnissen oder das Anzeigen und Bearbeiten von Dateiinhalten aber auch das Ändern von Dateirechte und vieles mehr. Hier unterscheidet sich Linux zunächst einmal wenig von der Eingabeaufforderung von (MS-)DOS, Windows, CPM oder sonstige Konsolen. Die größten Unterschiede sind die Bezeichnung der Befehle und die grundlegende Bedeutung der Konsole. Während z.B. unter Windows die Eingabeaufforderung meist nur noch von Systemadministratoren benutzt wird hat sie unter Linux eine deutlich höhere Bedeutung. Das liegt zum Einen daran, dass Linuxbenutzer oft Computer-affinier sind aber vor allem auch daran, dass die Konsole deutlich mächtiger ist als es eine GUI sein kann.

Weiterlesen

Benchmark vom lokalen Netz in Linux-Netzwerken

Stilisierte Erde mit verschiedenen Verbindungen

Wenn man eine neue Netzwerkkarte eingebaut oder neues Netzwerkkabel verlegt hat so möchte man doch gerne wissen, wie gut die Performance der Netzwerkverbindung ist. In einem früheren Beitrag habe ich beschrieben wie man einen Benchmarktest über das Internet macht. Internetverbindungen und lokale Netzwerkverbindungen unterscheiden sich jedoch gravierend denn i.d.R. spielen bei der Internetverbindung viele Faktoren eine Rolle – Geschwindigkeit der beteiligten Router, Geschwindigkeit der Verbindung zur Gegenstelle, Auslastung des angefragten Servers usw. Im LAN wird die Geschwindigkeit nur durch den Switch und den beteiligten Netzwerkschnittstellen bestimmt. In diesem Beitrag beschränke ich mich auf das Benchmarking im LAN und auf ein reines Linux-Netzwerk. Windows benutze ich schon seit Jahren nicht mehr und da fehlt mir mittlerweile der aktuelle Stand der Technik.

Weiterlesen

kais-universum.de