Installation SSHGuard

Um den Server von brute-force Attacken zu schützen, reicht denysshd leider nicht komplett aus. Denysshd ist gut um SSH zu schützen, SSHGuard monitored und schützt aber auch viele andere Services wie Dovecot, proFTPd, etc. Somit ist es eine sehr gut Ergänzung. Ich benötige es hauptsächlich wegen bösartigen Loginversuchen auf Dovecot.

Installation

pkg install sshguard

Konfiguration

SSHGuard im rc.conf eintragen, damit es beim Booten automatisch gestartet wird:

vi /etc/rc.conf

Eintragen:

sshguard_enable="YES"

Weitere mögliche Startup Konfigurationen:

Wenn man das z.B. so einstellt:

# default: 30
sshguard_danger_thresh="30"
# default: 120
sshguard_release_interval="43200"
# default: 1200
sshguard_reset_interval="7200"

bedeutet dies: wenn man 3 Loginversuche (= 30 „Punkte“) innerhalb von 2 Stunden (=7200 Sekunden) hat, wird man für 12 Stunden (=43200 Sekunden) blockiert

 

Als nächstes die Config bearbeiten:

vi /usr/local/etc/sshguard.conf

Als Backend möchte ich mit der ipfw Firewall arbeiten. Also folgende Config:

BACKEND="/usr/local/libexec/sshg-fw-ipfw"
FILES="/var/log/auth.log /var/log/maillog"
THRESHOLD=30
BLOCK_TIME=120
DETECTION_TIME=1800
IPV6_SUBNET=128
IPV4_SUBNET=32
WHITELIST_FILE=/usr/local/etc/sshguard.whitelist

bedeutet: Nach 3 Attacken (THRESHOLD / 30 entspricht 30 Punkten / 1 Loginversuch erhält jeweils 10 Punkte) wird die IP zu Beginn für 2 Minuten (=BLOCK_TIME) gesperrt. Der Attacker wird aber noch für 30 Minuten (=DETECTION_TIME) gespeichert, sollte er wieder kommen, wird der THRESHOLD immer wieder um den Faktor 1.5 erhöht.

Link: Configuration Wiki SSHguard

Whitelist

Jetzt noch das Whitelist File erstellen

touch /usr/local/etc/sshguard.whitelist

Im Whitelist File kann man die Hosts auf unterschiedliche Weise eintragen:

# comment line (a '#' as very first character)
#   a single ip address
1.2.3.4
#   address blocks in CIDR notation
127.0.0.0/8
10.11.128.0/17
192.168.0.0/24
#   hostnames
rome-fw.enterprise.com
hosts.friends.com

Detailierte Anleitung: SSHGuard::Whitelist

Blacklist

Im /usr/local/etc/sshguard.conf kann man auch definieren, ab wann ein Host in die Blacklist eingetragen werden soll. Der default ist nach 120 Punkten (= 12 Versuche):

#BLACKLIST_FILE=120:/var/db/sshguard/blacklist.db

Wenn man das zum Beispiel auf 10 Versuche heruntersetzen möchte, müsste man das Configfile so anpassen:

BLACKLIST_FILE=100:/var/db/sshguard/blacklist.db

 

Firewall

Wenn SSHGuard einen Angriff feststellt, wird der Angreifer in der Firewall in die Table 22 geschrieben sowie ein Eintrag im Blacklist File gemacht (/var/db/sshguard/blacklist.db).

Also noch eine Rule schreiben, welche die Zugriffe der Table 22 sperren. IPFW Configfile bearbeiten:

vi /etc/ipfw.corky 

Zeile hinzufügen

#sshGuard
add 1080 deny all from table(22) to any

Firewall restarten:

service ipfw restart

Starten / Testen

service sshguard start

Jetzt einfach mal die Logfiles monitoren und schauen, was SSHGuard damit gemacht hat.

tail -f /var/log/auth.log
tail -f /var/log/maillog

Firewall monitoren:

tail -f /var/log/security

im auth.log findet man aber jetzt dann auch Einträge von sshguard:

Apr 24 13:59:07 corky sshguard[39629]: Attack from "89.217.102.19" on service 210 with danger 10.
Apr 24 14:01:49 corky sshguard[39629]: Attack from "89.248.171.170" on service 210 with danger 10.
Apr 24 14:04:03 corky sshguard[39629]: Attack from "89.248.171.170" on service 210 with danger 10.
Apr 24 14:04:03 corky sshguard[39629]: Blocking "89.248.171.170/32" for 480 secs (2 attacks in 134 secs, after 3 abuses over 1691 secs.)
Apr 24 14:12:29 corky sshguard[39629]: Attack from "89.248.171.170" on service 210 with danger 10.
Apr 24 14:12:41 corky sshguard[39629]: Attack from "89.248.171.170" on service 210 with danger 10.
Apr 24 14:12:41 corky sshguard[39629]: Blocking "89.248.171.170/32" for 960 secs (2 attacks in 12 secs, after 4 abuses over 2209 secs.)

Auflistung der gesperrten Adressen

Um nun zu sehen, welche Adressen von SSHGuard gesperrt worden sind, kann man einfach die table 22 auflisten:

ipfw table 22 list

und es dauerte auch nicht lange, da war bereits der erste Eintrag aus den Seychellen zu sehen…

--- table(22), set(0) ---
89.248.171.170/32 0

 

Unblocken / Von Blacklist entfernen

Erstmal SSHGuard stoppen

service sshguard stop

dann IP von Blacklist löschen

vi /var/db/sshguard/blacklist.db

danach sshguard wieder starten

service sshguard start

Die Firewall Table 22 wird beim SSHGuard Neustart neu geschrieben, somit müsste jetzt auch der Blacklisteintrag nicht mehr auftauchen und die Firewall den Zugriff zulassen.

ipfw table 22 list
nach oben