Dies ist eine alte Version des Dokuments!
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 des Tools 'fail2ban' abgewehrt werden.
Config Shibboleth IdPv3
Dazu muss das IdP-Logformat etwas angepasst werden. Siehe dazu die IdP-Konfigurationsanleitung in diesem Wiki!
Config 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
Fail2ban über Apache
Im Normalfall sperrt Fail2ban die user per iptables Regel auf IP-Ebene. D.h. der gesperrte User bekommt keine Verbindung mehr zum IdP. Damit entfällt die Möglichkeit dem User eine Information zu geben warum er gesperrt ist und was er machen kann um sich entsperren zu lassen.
Alternativ kann fail2ban daher auch eingesetzt werden um den gesperrten nicht per iptables abzuweisen sondern ihn auf eine Info-Webseite zu leiten.
Hier die Info eines DFN-AAI-Teilnehmers in Kurzform:
Also habe ich mich an folgende Anleitung gehalten: https://httpd.apache.org/docs/2.4/rewrite/access.html#host-deny Dabei werden alle Anfragen an den Apache auf eine fest definierte Seite weitergeleitet, sobald die anfragende IP-Adresse auf der Blacklist steht. Auf der Zielseite habe ich dann einfach einen kurzen Erläuterungs-Text hinterlegt, der wie folgt aussieht: > Anmeldung zu oft fehlgeschlagen. > Sie wurden für 10 Minuten gesperrt. > Bitte versuchen Sie es später erneut. Die nötige Konfiguration im Apache sieht bei mir so aus: > 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> Im fail2ban habe ich dann noch unter action.d eine eigene Datei angelegt, die beschreibt wie im Falle 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