Abwehr von Brute Force Attacken

Da der IdP weltweit erreichbar ist, ist es einem Angreifer prinzipiell möglich, Usernamen/Passwörter beliebig lange durchzuprobieren. Solche Angriffe können z.B. mithilfe der Intrusion Prevention-Software fail2ban abgewehrt werden. Fail2ban sperrt dann IP-Adressen, von denen zu viele Fehlversuchen kommen.

Das IdP-Logformat muss angepasst werden, wie unter Logging beschrieben.

root@idp:~# apt install fail2ban
/etc/fail2ban/filter.d/idp.conf
[Definition]
failregex = IP\:<HOST> .* Login by .* failed
            IP\:<HOST> .* No password available
ignoreregex =
/etc/fail2ban/jail.local
[idp]
enabled  = true
port     = http,https
filter   = idp
logpath  = /opt/shibboleth-idp/logs/idp-process.log
maxretry = 5

Ein Teilnehmer der DFN-AAI hat eine Lösung erarbeitet, mit der gesperrte Nutzer*innen darüber informiert werden können, warum sie den IdP nicht mehr erreichen können: Er hat fail2ban genutzt, um auf eine Informationsseite umzuleiten. Die Vorgehensweise in Stichworten:

  • Anleitung, um alle Anfragen von geblacklisteten IPs umzuleiten: https://httpd.apache.org/docs/2.4/rewrite/access.html#host-deny
  • Erklärung auf Zielseite stellen, aus der hervorgeht, dass zu viele Anmeldeversuche fehlgeschlagen sind und wann die Person es erneut versuchen kann.
  • Apache-Konfiguration:
    RewriteEngine on
    RewriteMap hosts-deny "txt:/etc/apache2/conf.d/shib.deny"
    RewriteCond "${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}" "!=NOT-FOUND"
    RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/Blockiert/index.html [L]
    <Directory "/srv/www/htdocs/Blockiert">
        AllowOverride
        Require all granted
    </Directory>
  • neue Datei im Verzeichnis /etc/fail2ban/action.d erstellen, die regelt, wie eine IP-Adresse gebannt und wieder freigegeben wird:
    actionban = printf %%b "<ip> -\n" >> <deny-config>
    actionunban = sed -i "/^<ip> -$/d" <deny-config>
    deny-config = /etc/apache2/conf.d/shib.deny
  • Zuletzt geändert: vor 6 Monaten