Zum Inhalt springen

Wir erklären wie IT funktioniert

  • Office
  • Linux
  • Sicherheit
  • Windows
Wir erklären wie IT funktioniert

sshguard unter Debian installieren und nutzen

Ähnlich wie fail2ban ist sshguard ein Programm das im Hintergrund die wichtigsten System-Logs mitliest und fehlgeschlagene Anmeldeversuche erkennt. Bei wiederholten falschen Anmeldungen sperr sshguard den Rechner mit dem fehlgeschlagenen Anmeldeversuch (z.B. via ssh). So werden mit sshguard etwa die Risiken einer Brute-Force Attacke via secure shell auf ein Minimum reduziert.

In diesem Howto erkläre ich, wie man sshguard unter Debian 10 bzw. Debian 11 installiert und konfiguriert. Lost geht’s:

Inhalt

  • Schritt 1 –sshguard installieren
  • Schritt 2 – sshguard anpassen
  • Schritt 3 – sshguard prüfen
  • Schritt 4 – den Debian Server bzw. sshguard testen
  • Schritt 5 – sshguard checken
  • Schritt 6 – sshguard anpassen
  • Fazit zu sshguard

Schritt 1 –sshguard installieren

Unter Debian 10 wird sshguard wie jedes andere Programm via “apt install” installiert

apt -y install sshguard

Unter Debian 11 ist das Programm sshguard leider nicht mehr in den Standard-Repositories enthalten. Wir müssen dazu das experimentelle “SID” Repository anlegen. Dazu erstellen wir temporär die Datei /etc/apt/sources.list.d/debian-sid.list mit dem passenden Repository und installieren danach sshguard. Die Datei debian-sid.list löschen wir anschließend wieder, da wir sonst alle möglichen Software-Pakete aktualisiert bekommen.

echo 'deb-src http://ftp.de.debian.org/debian/ sid main non-free contrib
deb http://ftp.de.debian.org/debian/ sid main non-free contrib' > /etc/apt/sources.list.d/debian-sid.list

apt update
apt -y install sshguard
rm /etc/apt/sources.list.d/debian-sid.list

Schritt 2 – sshguard anpassen

Damit läuft sshguard zwar schon. Wir sollten es aber noch an das jeweilige Server-System und die installierten Programme anpassen. Etwa Secure Shell, ftp (?) oder postfix. Dazu bauen wir zumindest die passenden Log-Files in die Datei /etc/sshguard/sshguard.conf ein:

Für ein Standard-Debian mit ssh und postfix

FILES="/var/log/auth.log /var/log/mail.log"

Für ein Debian Server mit ssh, postfix und einem ftp daemon mit proftpd:

FILES="/var/log/auth.log /var/log/mail.log /var/log/proftpd/proftpd.log"

 

Schritt 3 – sshguard prüfen

Anschließend starten wir sshguard neu:

systemctl restart sshguard

Prüfen mit:

systemctl status sshguard

Im Output erkennen wir ob schon jemand ins Netz gegangen ist:

root@host:~# systemctl status sshguard
● sshguard.service - SSHGuard
     Loaded: loaded (/lib/systemd/system/sshguard.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-01-06 13:54:07 CET; 1h 12min ago
       Docs: man:sshguard(8)
    Process: 81637 ExecStartPre=/usr/sbin/nft add table ip sshguard (code=exited, status=0/SUCCESS)
    Process: 81638 ExecStartPre=/usr/sbin/nft add table ip6 sshguard (code=exited, status=0/SUCCESS)
   Main PID: 81639 (sshguard)
      Tasks: 12 (limit: 4675)
     Memory: 3.1M
        CPU: 210ms
     CGroup: /system.slice/sshguard.service
             ├─81639 /bin/sh /usr/sbin/sshguard
             ├─81640 /bin/sh /usr/sbin/sshguard
             ├─81641 /bin/sh /usr/sbin/sshguard
             ├─81642 /usr/libexec/sshguard/sshg-blocker -a 30 -p 120 -s 1800 -w /etc/sshguard/whitelist
             ├─81643 /bin/sh /usr/sbin/sshguard
             ├─81644 /usr/libexec/sshguard/sshg-parser
             ├─81645 /bin/sh /usr/libexec/sshguard/sshg-fw-nft-sets
             ├─81646 journalctl -afb -p info -n1 -t sshd -o cat
             ├─81647 grep --line-buffered ^
             ├─81648 tail -F -n 0 /var/log/auth.log /var/log/mail.log /var/log/proftpd/proftpd.log
             └─81649 grep --line-buffered ^

Jan 06 15:00:13 radius sshguard[81642]: 222.187.232.39: unblocking after 483 secs
Jan 06 15:01:43 radius sshguard[81642]: Attack from "221.181.185.143" on service SSH with danger 10.
Jan 06 15:01:43 radius sshguard[81642]: Attack from "221.181.185.143" on service SSH with danger 10.
Jan 06 15:01:47 radius sshguard[81642]: Attack from "221.181.185.143" on service SSH with danger 10.
Jan 06 15:01:47 radius sshguard[81642]: Blocking "221.181.185.143/32" for 120 secs (3 attacks in 4 secs, after 1 abuses over 4 secs.)
Jan 06 15:04:18 radius sshguard[81642]: 221.181.185.143: unblocking after 151 secs
Jan 06 15:05:18 radius sshguard[81642]: Attack from "222.187.232.39" on service SSH with danger 10.
Jan 06 15:05:18 radius sshguard[81642]: Attack from "222.187.232.39" on service SSH with danger 10.
Jan 06 15:05:22 radius sshguard[81642]: Attack from "222.187.232.39" on service SSH with danger 10.
Jan 06 15:05:22 radius sshguard[81642]: Blocking "222.187.232.39/32" for 960 secs (3 attacks in 4 secs, after 4 abuses over 3333 secs.)

… und siehe da: Der erste ungebetene Besucher wurde schon gesperrt. Sshguard funktoniert also und tut was es soll. Wir wollen es aber genau wissen und unser frusch installiertes Debian System etwas “stressen”.

Auch lesenswert:
LVM in Linux erklärt: Flexibles Speichermanagement
Powered by Inline Related Posts

Schritt 4 – den Debian Server bzw. sshguard testen

Um die Funktion von sshguard zu prüfen, verbinden wir uns per ssh auf einen zweiten Host via ssh. Das kann ein anderes Debian Server System sein oder ein Host mit Centos oder RHEL.

Wir installieren zuerst das Programm “sshpass” (Auf Centos oder RHEL: yum -y install sshpass)

apt install sshpass -y

Nun erstellen wir den Ordner /root/scripts und kopieren dorthin ein Skript, dass 10 willkürliche Versuche des ssh Zugriffs auf den Host “host.domain.tld” unternimmt. Ersetzen Sie “host.domain.tld” mit ihrem neuen Debian System auf dem wir sshguard testen wollen.

mkdir /root/scripts/
echo '#!/bin/bash
for i in {1..10}; do
sshpass -p $RANDOM ssh -o StrictHostKeyChecking=no [email protected]
done' > /root/scripts/sshpass.sh

chmod +x /root/scripts/sshpass.sh
/root/scripts/sshpass.sh

 

Schritt 5 – sshguard checken

Noch mal zurück auf dem “angegriffenen” Host prüfen wir mit “nft list table sshguard” welche IP-Adressen uns bis jetzt ins Netz gegangen sind. Die IP-Adresse des Hosts aus Schritt 4 sollte auf jeden Fall darunter sein:

nft list table sshguard
table ip sshguard {
set attackers {
type ipv4_addr
flags interval
elements = { 37.235.54.83, 62.75.189.88,
162.252.172.13}
}

chain blacklist {
type filter hook input priority filter - 10; policy accept;
ip saddr @attackers drop
}
}

Schritt 6 – sshguard anpassen

Angreifer werden bei sshguard  im standard für 120 Sekunden (2 Minuten) blockiert. Wem das zu wenig ist der setzt die “BLOCK_TIME” ggf. höher. Sshguard merkt sich einmal blockierte IPs für 1800 Sekunden (eine halbe Stunde). Auch diese Einstellung kann man verändern. die Variable heißt “DETECTION_TIME”.

Wichtig: Wenn die Variablen in der /etc/sshguard/sshguard.conf angepasst wurden, muss der Daemon einmal neu gestartet werden mit:
systemctl restart sshguard

Danach sind dann allerdings die bisherigen Einträge in der nft Tabelle für sshguard weg. Aber keine Sorge: Der nächste Angreifer kommt bestimmt und läßt nicht lange auf sich warten.

Fazit zu sshguard

Im Gegensatz zu fail2ban ist sshguard relativ leicht zu installieren und konfigurieren. Damit sollten (meiner Meinung nach) auch Linux-Anfänger schnell und sicher ihr frisch installiertes Linux-System absichern können. Umso unverständlicher ist es dass bei Debian 11 sshguard nicht mehr im Standard-Repository drin ist.

Link: https://www.sshguard.net/

  • Über den Autor
  • Aktuelle Beiträge
Matthias Böhmichen

Matthias Böhmichen ist der Gründer der Website howto-do.it . Linux nutzt er seit 1991 um kurz danach Windows zu entdecken. Er entdeckt gerne neue Technologien und verbringt seine Zeit damit, sie für Kunden nutzbar zu machen. Im Hauptberuf ist er CEO der Biteno GmbH

  • Datenbank-Grundlagen: Was ist eine Transaktion?

Aktuellste Beiträge

  • Containerisierung erklärt: Der große Leitfaden
    Containerisierung erklärt: Der große Leitfaden
    2. Juni 2025
  • Windows Server 2019 erklärt – Ihr Leitfaden
    Windows Server 2019 erklärt – Ihr Leitfaden
    2. Juni 2025
  • Entdecken Sie: Was ist KVM (Kernel-based Virtual Machine)
    Entdecken Sie: Was ist KVM (Kernel-based Virtual Machine)
    2. Juni 2025
  • Was ist Rocky Linux? Ihr Leitfaden zur neuen Linux-Distribution.
    Was ist Rocky Linux? Ihr Leitfaden zur neuen Linux-Distribution.
    2. Juni 2025
  • Lua-Skript erklärt: Einführung und Anwendung
    Lua-Skript erklärt: Einführung und Anwendung
    2. Juni 2025
  • Was ist Arch Linux? Eine klare und informative Erklärung
    Was ist Arch Linux? Eine klare und informative Erklärung
    31. Mai 2025
  • Was bedeutet Incident Response?
    Was bedeutet Incident Response?
    31. Mai 2025
  • IP-Reputation erklärt: Bedeutung & Einfluss im Netz
    IP-Reputation erklärt: Bedeutung & Einfluss im Netz
    31. Mai 2025
  • Was ist Gentoo Linux: Ein tiefgehender Blick auf das System
    Was ist Gentoo Linux: Ein tiefgehender Blick auf das System
    31. Mai 2025

Kategorien

  • Allgemein (10)
  • Lexikon (106)
  • Linux (47)
  • Office (84)
  • Sicherheit (130)
  • Virtualisierung (19)
  • Windows (29)

Weitere lesenswerte Artikel

  • Was ist Oracle Linux? Ihr umfassender Leitfaden.
    Was ist Oracle Linux? Ihr umfassender Leitfaden.
    29. Mai 2025
  • ESXi vs Proxmox: Ein Vergleich für die Server-Virtualisierung
    ESXi vs Proxmox: Ein Vergleich für die Server-Virtualisierung
    29. Mai 2025
  • Rocky Linux vs. Almalinux: Ein detaillierter Vergleich für IT-Experten
    Rocky Linux vs. Almalinux: Ein detaillierter Vergleich für IT-Experten
    29. Mai 2025
  • Entdecken Sie den optimalen CentOS Ersatz für Ihre Bedürfnisse.
    Entdecken Sie den optimalen CentOS Ersatz für Ihre Bedürfnisse.
    28. Mai 2025
  • SIEM erklärt: Ihr Leitfaden zum Cybersecurity-Management
    SIEM erklärt: Ihr Leitfaden zum Cybersecurity-Management
    26. Mai 2025
  • Entdecke die beste CentOS Alternative für dein Unternehmen
    Entdecke die beste CentOS Alternative für dein Unternehmen
    26. Mai 2025
  • Sicher und einfach: Wie ich mein Gmail Passwort ändern kann
    Sicher und einfach: Wie ich mein Gmail Passwort ändern kann
    26. Mai 2025
  • Was ist Log-Management? Grundlagen – Verstehen und Anwenden
    Was ist Log-Management? Grundlagen – Verstehen und Anwenden
    25. Mai 2025
  • Proxmox vs ESXi: Ein informativer Vergleich
    Proxmox vs ESXi: Ein informativer Vergleich
    24. Mai 2025
  • Was ist PostgreSQL: Ein umfassender Einblick
    Was ist PostgreSQL: Ein umfassender Einblick
    24. Mai 2025
  • Anleitung: So können Sie Ihr Windows Passwort ändern.
    Anleitung: So können Sie Ihr Windows Passwort ändern.
    24. Mai 2025
  • Was ist Ossec – Ihre Anleitung zur Open-Source-Sicherheit
    Was ist Ossec – Ihre Anleitung zur Open-Source-Sicherheit
    24. Mai 2025
  • Erklärung: Was ist Hyper-V und warum ist es wichtig?
    Erklärung: Was ist Hyper-V und warum ist es wichtig?
    23. Mai 2025
  • So ändern Sie Ihr Fritzbox Passwort – Alle Schritte erklärt.
    So ändern Sie Ihr Fritzbox Passwort – Alle Schritte erklärt.
    22. Mai 2025
  • Was ist Spear-Phishing? Unser Leitfaden zur Cybersicherheit.
    Was ist Spear-Phishing? Unser Leitfaden zur Cybersicherheit.
    22. Mai 2025
  • MySQL Grundlagen: Was Sie wissen müssen
    MySQL Grundlagen: Was Sie wissen müssen
    22. Mai 2025
  • Was ist Vishing? – So schützen Sie sich.
    Was ist Vishing? – So schützen Sie sich.
    22. Mai 2025
  • Kontakt
  • Impressum
  • Disclaimer
  • Datenschutz
  • Sitemap
  • Howto-Do.IT auf Englisch

© 2025

Nach oben scrollen
  • Office
  • Linux
  • Sicherheit
  • Windows