Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
de:shibidp3fail2ban [2017/03/12 02:17]
Wolfgang Pempe
de:shibidp3fail2ban [2017/03/24 16:32]
Raoul Gunnar Borenius
Zeile 7: Zeile 7:
 ==== Config Shibboleth IdPv3 ==== ==== Config Shibboleth IdPv3 ====
  
-Dazu muss das IdP-Logformat etwas angepasst werden+Dazu muss das IdP-Logformat etwas angepasst werden. ​Siehe dazu die IdP-Konfigurationsanleitung in diesem 
- +Wiki!
-<file xml ./​conf/​logback.xml>​ +
-<​appender name="​IDP_PROCESS"​ class="​ch.qos.logback.core.rolling.RollingFileAppender">​ +
- <​File>​${idp.logfiles}/​idp-process.log</​File>​ +
- +
- <​rollingPolicy class="​ch.qos.logback.core.rolling.TimeBasedRollingPolicy">​ +
-  <​fileNamePattern>​${idp.logfiles}/​idp-process-%d{yyyy-MM-dd}.log.gz</​fileNamePattern>​ +
-  <​maxHistory>​${idp.loghistory:​-180}</​maxHistory>​ +
- </​rollingPolicy>​ +
- +
- <​encoder class="​ch.qos.logback.classic.encoder.PatternLayoutEncoder">​ +
-  <​charset>​UTF-8</​charset>​ +
-  <​Pattern>​%date{ISO8601} - %level [%logger:​%line] - IP:​%mdc{idp.remote_addr:​-n/​a} | %msg%n%ex{short}</​Pattern>​ +
- </​encoder>​ +
-</​appender>​ +
-</​file>​ +
- +
-Entscheidend dabei ist die Angabe "​IP:​%mdc{idp.remote_addr:​-n/​a}"​ damit die Client-IP mitgelogged wird.+
  
 ==== Config fail2ban ==== ==== Config fail2ban ====
Zeile 46: Zeile 29:
 maxretry = 5 maxretry = 5
 </​file>​ </​file>​
 +
 +===== 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:
 +
 +<​code>​
 +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
 +</​code>​
  • Zuletzt geändert: vor 11 Monaten