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