6. Systemhärtung (fail2ban (alternativ „crowdsec IPS„) und ufw)
Zuerst installieren wir fail2ban (alternativ crowdsec IPS) um den Server gegen Brute-force-Attacken und fehlerhafte Loginversuche zu schützen:
apt update && apt install -y fail2ban && systemctl enable fail2ban.service
Erstellen Sie eine neue Filterdatei und befüllen diese wie nachfolgend beschrieben (» codeberg: https://codeberg.org/criegerde/nextcloud/src/branch/master/etc/fail2ban/filter.d/nextcloud.conf):
touch /etc/fail2ban/filter.d/nextcloud.conf
Kopieren Sie alles von „cat …“ bis „… EOF“ in Ihre Zwischenablage und fügen es dann in die Shell ein:
cat <<EOF >/etc/fail2ban/filter.d/nextcloud.conf
[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"
EOF
Bestätigen Sie mit <ENTER> um die Datei zu befüllen. Das Ergebnis sieht im Anschluß wie folgt aus:
cat /etc/fail2ban/filter.d/nextcloud.conf
Legen Sie nun eine neue Jail-Datei an (» codeberg: https://codeberg.org/criegerde/nextcloud/src/branch/master/etc/fail2ban/jail.d/nextcloud.local):
nano /etc/fail2ban/jail.d/nextcloud.local
Kopieren Sie alle nachfolgenden Zeilen hinein:
[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 5
bantime = 3600
findtime = 36000
logpath = /var/log/nextcloud/nextcloud.log
Mit den zuvor dargestellten Parameteren wird nach 5 fehlerhaften Anmeldeversuchen (maxretry) innerhalb der letzten 36000 Sekunden (findtime, das entspricht 10h) die IP des potentiellen Angreifers für einen Zeitraum von 3600 Sekunden (bantime, enspricht 1h) gesperrt.
Starten Sie fail2ban neu und überprüfen den fail2ban-status:
systemctl restart fail2ban.service
fail2ban-client status nextcloud
Ab sofort werden IP-Adressen, von denen 5 oder mehr fehlerhafte Anmeldeversuche innerhalb der letzten 10h ausgegangen sind für 1h gesperrt und Ihr Server somit vor weiteren Attacken geschützt. Wenn Sie die Sperre manuell testen wollen und die resultierende Sperre Ihrer IP respektive bereits gesperrte IPs entsperren wollen, so führen Sie zuerst diesen Befehl aus,
fail2ban-client status nextcloud
um sich die gesperrten IP-Adressen anzeigen zu lassen. Die dargestellte(n) IP(s) können Sie mittels des nachfolgenden Befehls entsperrren:
fail2ban-client set nextcloud unbanip <ip-adresse>