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:
Was ist Unified Threat Management (UTM) ? Wir erklären es
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

  • Was ist Deep Packet Inspection (DPI) ? Einblick und Nutzen
    Was ist Deep Packet Inspection (DPI) ? Einblick und Nutzen
    14. Juli 2025
  • NAT erklärt: Was ist Network Address Translation?
    NAT erklärt: Was ist Network Address Translation?
    12. Juli 2025
  • Was ist Unified Threat Management (UTM) ? Wir erklären es
    Was ist Unified Threat Management (UTM) ? Wir erklären es
    12. Juli 2025
  • Was ist Port Forwarding ? Einführung und Nutzen
    Was ist Port Forwarding ? Einführung und Nutzen
    12. Juli 2025
  • Was ist eine Next-Generation Firewall (NGFW)?
    Was ist eine Next-Generation Firewall (NGFW)?
    10. Juli 2025
  • Was ist eine Netzwerkschicht-Firewall: Einfach erklärt!
    Was ist eine Netzwerkschicht-Firewall: Einfach erklärt!
    10. Juli 2025
  • Stateful Inspection erklärt – Ihr Sicherheitsguide
    Stateful Inspection erklärt – Ihr Sicherheitsguide
    10. Juli 2025
  • Was ist eine Proxy Firewall: Mehr Schutz im Netzwerk
    Was ist eine Proxy Firewall: Mehr Schutz im Netzwerk
    8. Juli 2025
  • Redis Grundlagen erklärt – Speicher & Datenbank Verständnis
    Redis Grundlagen erklärt – Speicher & Datenbank Verständnis
    8. Juli 2025

Kategorien

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

Weitere lesenswerte Artikel

  • Erklärung: Was ist Advanced Threat Protection?
    Erklärung: Was ist Advanced Threat Protection?
    8. Juli 2025
  • Einführung in SAP HANA: Effiziente Datenverwaltung
    Einführung in SAP HANA: Effiziente Datenverwaltung
    7. Juli 2025
  • Was ist ein Paketfilter: Einfach erklärt
    Was ist ein Paketfilter: Einfach erklärt
    7. Juli 2025
  • Neo4j erklärt: Ihr Leitfaden zur Graphendatenbank
    Neo4j erklärt: Ihr Leitfaden zur Graphendatenbank
    6. Juli 2025
  • Was ist SharePoint – Ihr Leitfaden zu Microsofts Tool
    Was ist SharePoint – Ihr Leitfaden zu Microsofts Tool
    5. Juli 2025
  • Was ist Dark Web Monitoring? Einfach erklärt
    Was ist Dark Web Monitoring? Einfach erklärt
    5. Juli 2025
  • Yammer Grundlagen – Entdecken Sie, was Yammer ist
    Yammer Grundlagen – Entdecken Sie, was Yammer ist
    5. Juli 2025
  • Thick Provisioning erklärt – Wissenswertes für Sie
    Thick Provisioning erklärt – Wissenswertes für Sie
    3. Juli 2025
  • Was ist eine Firewall Policy?
    Was ist eine Firewall Policy?
    3. Juli 2025
  • Live Migration erklärt – Ihre IT-Infrastruktur modernisiert
    Live Migration erklärt – Ihre IT-Infrastruktur modernisiert
    3. Juli 2025
  • Was ist Docker: Einführung in die Container-Technologie
    Was ist Docker: Einführung in die Container-Technologie
    1. Juli 2025
  • Windows Server 2012 R2 Erklärung & Features
    Windows Server 2012 R2 Erklärung & Features
    1. Juli 2025
  • Virtual Appliance erklärt – Ihr IT-Wissensvorsprung
    Virtual Appliance erklärt – Ihr IT-Wissensvorsprung
    1. Juli 2025
  • Was ist Windows Home Server 2011?
    Was ist Windows Home Server 2011?
    30. Juni 2025
  • Virtuelle Festplatte erklärt: Ihr digitaler Speicher
    Virtuelle Festplatte erklärt: Ihr digitaler Speicher
    30. Juni 2025
  • Virtuelle CPU Erklärt: Alles Wissenswerte in Kürze
    Virtuelle CPU Erklärt: Alles Wissenswerte in Kürze
    30. Juni 2025
  • Resource Pooling erklärt – Grundlagen & Vorteile
    Resource Pooling erklärt – Grundlagen & Vorteile
    28. Juni 2025
  • Kontakt
  • Impressum
  • Disclaimer
  • Datenschutz
  • Sitemap
  • Howto-Do.IT auf Englisch

© 2025

Nach oben scrollen
  • Office
  • Linux
  • Sicherheit
  • Windows
Diese Website benutzt Cookies. Wenn Sie die Website weiter nutzen, gehen wir von Ihrem Einverständnis aus.OKDatenschutz