Menu

<< | Zurück

Fail2Ban

Filter für Log erstellen und per iptables sperren. Log von Nextcloud überwachen. Sobald der Filter (Fehlgeschlagene Anmeldungen) bezüglich Logeinträge anschlägt gesperrt. Es kann definiert werden, dass erst ab einer Anzahl Fehlgeschlagene Anmeldung über iptables den Client sperrt. 

Hinweis Nextcloud: In der Basisinstallation gibt es keine Logdatei. Dies muss über die Konfigurationsdatei von Nextcloud definieren. In der Anleitung beschrieben.

Fail2Ban installieren Filter für Nextcloud einrichten

 

fail2ban installieren und Nextcloud Filter einrichten 

#
## Vorausetzung rsyslog installieren
- @apt-get install rsyslog
## Optional: server modul in rsyslog aktivieren START
- @nano /etc/rsyslog.conf
## Folgende Zeilen hinzufügen START
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
#
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
## Folgende Zeilen hinzufügen ENDE
## Datei speicher und schliessen
## Optional: server modul in rsyslog aktivieren ENDE
- @systemctl restart rsyslog
## Prüfen
- @systemctl status rsyslog oder /etc/init.d/rsyslog status
#
# ###############################################################
# Optional: Rsyslog auf einen Client einrichten wenn der Client den RSyslog Server benutzt START
# ###############################################################

# Configure Rsyslog Client
- @nano /etc/rsyslog.conf
# Zeile hinzufügen
#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514
#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514
# Zeile hinzufügen ende
# Zeilen hinzufügen, um die Datenträgerwarteschlange festzulegen, sollte rsyslog-Server ausfallen
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
# Zeilen hinzufügen, um die Datenträgerwarteschlange festzulegen, sollte rsyslog-Server ausfallen ENDE
- @systemctl restart rsyslog
- @systemctl status rsyslog
## Achtung! Wenn ubuntu und rsyslog nicht startet dann nochmals installieren
- @sudo add-apt-repository ppa:adiscon/v8-stable
- @sudo apt-get install rsyslog
# ##############################################################
# Optional: Rsyslog auf einen Client einrichten wenn der Client den RSyslog Server benutzt ENDE
# ##############################################################

#
## fail2ban installieren ##
- @apt-get update
- @apt-get install fail2ban
## Solten beide .local Dateien nicht vorhandnen sein, dann:
- @cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
- @cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
## Damit dieser Fehler nicht angezeigt wird muss mindestens allowipv6 auf Auto gestellt werden.
## Fehlermeldung: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
#### Zeile 62 auskommentieren. Das Zeichen "#" vor allowip6.. entfernen
- #sudo nano /etc/fail2ban/fail2ban.local
#allowipv6 = auto
allowipv6 = auto
## Das gleiche nochmals aber diesmal in fail2ban.conf
- #sudo nano /etc/fail2ban/fail2ban.conf
## Fail2ban Service neu straten
- #sudo service fail2ban restart
- #sudo service fail2ban status
#
## Wenn Nextcloud nicht vorhanden kann hier bis restart fail2ban übersprungen werden
# fail2ban: edit nextcloud config.php ##
- @nano /var/www/nextcloud/config/config.php
#
'log_type' => 'file',
  'logtimezone' => 'Europe/Berlin',
  'logfile' => '/var/log/nextcloud.log',
  'loglevel' => 2,
  'syslog_tag' => 'Nextcloud',
## prepare logfile ##
- @touch /var/log/nextcloud.log
- @chown -R www-data:www-data /var/log/nextcloud.log
- @chmod -R 755 /var/log/nextcloud.log
## create the Nextcloud-filter ##
- @nano /etc/fail2ban/filter.d/nextcloud.conf
#
[Definition]
failregex=^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}$
               ^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","user,:".*","app":"no app in context".*","method":".*","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)".*}$
               ^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","user":".*","app":".*","method":".*","url":".*","message":"Login failed: .* \(Remote IP: <HOST>\).*}$

## create new jail Port. Hinweis: Port ändern wenn Nextcloud (Apache Server) auf einen anderen Port lauscht als 80 und 443##
- @nano /etc/fail2ban/jail.d/nextcloud.local
[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 36000
findtime = 36000
logpath = /var/log/nextcloud.log
## restart fail2ban ##
- @service fail2ban restart
## Wenn kein Nextcloud kann der Test übersprungen werden:  test fail2ban ##
- @fail2ban-client status
- @fail2ban-regex /var/log/nextcloud.log /etc/fail2ban/filter.d/nextcloud.conf
=> "macthed" should be ≠ 0
#

 

Anleitung in PDF