GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren und konfigurieren Sie Fail2Ban unter CentOS 8 und Fedora 33

Fail2Ban ist ein Dienstprogramm zum Analysieren von Protokollen, das Protokolldateien verschiedener Prozesse scannt und IP-Adressen sperrt, die zu viele Kennwortfehler verursachen. Wenn ein Anmeldeversuch gefunden wird, fügt Fail2Ban eine neue Regel zu iptables hinzu, um die IP-Adresse des Angreifers vorübergehend oder dauerhaft zu blockieren. Es kann Sie auch per E-Mail benachrichtigen.

Es konzentriert sich hauptsächlich auf die Erkennung von Eindringlingen über SSH, kann aber so konfiguriert werden, dass es mit jedem Dienst funktioniert, der Protokolldateien verwendet.

Voraussetzungen

  1. Ein Fedora 33- oder CentOS 8-basierter Server mit einem Nicht-Root-Benutzer mit sudo-Berechtigungen.

  2. Installieren Sie den Nano-Editor, da wir diesen verwenden werden.

    $ sudo dnf install nano -y
    

Fail2Ban installieren

Um Fail2Ban auf CentOS 8 zu installieren, müssen Sie zuerst das EPEL Yum-Repository installieren.

$ sudo dnf install epel-release

Fedora 33 wird mit Fail2Ban ausgeliefert.

Führen Sie den folgenden Befehl aus, um Fail2Ban sowohl auf Fedora 33 als auch auf CentOS 8 zu installieren.

$ sudo dnf install fail2ban

Nach der Installation müssen wir den Dienst aktivieren.

$ sudo systemctl enable fail2ban

Als nächstes starten Sie den Dienst fail2ban.

$ sudo systemctl start fail2ban

Sie können jetzt den Status des Dienstes überprüfen, um zu sehen, ob er richtig funktioniert.

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Fail2Ban konfigurieren

Der Fail2Ban-Dienst speichert seine Konfigurationsdateien in /etc/fail2ban Verzeichnis. Sie werden auf eine Datei jail.conf stoßen drin. Diese Datei wird normalerweise während Paketaktualisierungen überschrieben, daher sollte sie nicht bearbeitet werden.

Stattdessen sollten alle Konfigurationen in einer neuen Datei vorgenommen werden, die wir jail.local nennen werden . Einstellungen in diesen 2 Dateien können weiter über Dateien aus /etc/fail2ban/jail.d/ überschrieben werden Verzeichnis.

Konfigurationen werden in der folgenden Reihenfolge angewendet:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , Alphabetisch
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local , Alphabetisch

jail.conf enthält einen [DEFAULT] Abschnitt, gefolgt von Abschnitten für einzelne Dienste. Jeder dieser Abschnitte kann überschrieben werden, indem er in .local definiert wird Dateien.

Jail.local konfigurieren

Wir werden eine neue jail.local erstellen Datei.

$ sudo nano /etc/fail2ban/jail.local

Fügen Sie den folgenden Code ein.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Drücken Sie Strg + X um den Editor zu schließen und drücken Sie Y wenn Sie aufgefordert werden, die Datei zu speichern. Dies setzt eine neue Standard-bantime ändert für alle Dienste das Backend in systemd und aktiviert den `sshd Gefängnis.

Starten Sie Fail2ban neu, um die neuen Änderungen zu implementieren.

$ sudo systemctl restart fail2ban

Wir können die neu angewendeten Einstellungen mit fail2ban-client bestätigen Dienstprogramm.

$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

Wir können auch den detaillierten Status jedes Gefängnisses speziell auf folgende Weise abrufen.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Weitere Einstellungen

jail.conf bietet viel mehr Einstellungen, die mit /jail.local angepasst werden können Datei. Als Nächstes gehen wir einige Einstellungen durch.

IP auf die weiße Liste setzen

Mit dem folgenden Code können Sie IPs auf die Whitelist setzen/ignorieren, damit sie nicht von Fail2ban blockiert werden.

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Wenn Sie IPs nur für bestimmte Jails auf die Whitelist setzen möchten, können Sie dies über fail2ban-client tun .

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Ersetzen Sie JAIL im obigen Befehl mit dem Namen des Gefängnisses, für das Sie die Einstellung bearbeiten möchten.

Sperrzeit und Wiederholungsbetrag

Es gibt 3 Einstellungen, die die Zeit und die Anzahl der Wiederholungsversuche für eine Sperrung festlegen können.

bantime - ist die Zeitspanne in Sekunden, für die eine IP gesperrt ist. Um eine dauerhafte Sperre festzulegen, setzen Sie diesen Wert auf eine negative Zahl. Der Standardwert ist 10 Minuten oder 600 Sekunden.

findtime - ist die Zeitspanne zwischen Anmeldeversuchen, bevor ein Bann gesetzt wird. Dieser Wert ist immer eine Anzahl von Sekunden. Wenn Fail2ban beispielsweise so eingestellt ist, dass eine IP nach 5 fehlgeschlagenen Anmeldeversuchen gesperrt wird, müssen diese 5 Versuche innerhalb der festgelegten 10 Minuten bantime erfolgen begrenzen.

maxretry - ist die Anzahl der Wiederholungen von einer einzelnen IP-Adresse, bevor ein Bann verhängt wird. Der Standardwert ist 3.

Um diese Einstellungen anzupassen, fügen Sie die folgenden Zeilen in \etc\fail2ban\jail.local ein Datei unter [DEFAULT] Abschnitt.

bantime = 3600
findtime = 300
maxretry = 4

E-Mail-Benachrichtigungen

Um E-Mail-Benachrichtigungen zu senden, müssen Sie zuerst einen Mail Transfer Agent (MTA) installieren. Für unseren Zweck werden wir sendmail installieren .

$ sudo dnf install sendmail

Um die E-Mail zu erhalten, fügen Sie den folgenden Code in \etc\fail2ban\jail.local ein Datei unter [DEFAULT] Abschnitt.

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemail bezieht sich auf die Ziel-E-Mail-ID, die die ID ist, unter der Sie die E-Mails erhalten möchten, sendername bezieht sich auf den Namen des Absenders, also verwenden wir dafür Fail2Ban. mta bezieht sich auf den verwendeten Mail Transfer Agent, also sendmail hier. Wenn Sie Postfix verwenden , verwenden Sie dann den Wert mail für den mta Variable.

action bezieht sich auf die Standardaktion, die ausgeführt wird, sobald ein Eindringen erkannt wird. Der Standardwert ist %(action_)s was den Benutzer nur bannt. %(action_mw)s wird sperren und eine E-Mail mit einem Whois-Bericht senden; während %(action_mwl)s wird gesperrt und eine E-Mail mit dem Whois-Bericht zusammen mit Informationen aus den entsprechenden Protokolldateien gesendet. Dies kann auch gefängnisspezifisch geändert werden.

Einstellungen für individuelle Jails

Wie wir bereits wissen, [DEFAULT] Abschnitt für alle Jails gilt, ist es an der Zeit, sich einige spezifische Jails und ihre Einstellungen anzusehen.

SSHD-Gefängnis

[sshd] haben wir bereits definiert früher in unserem jail.local Datei. Wir können es mit dem folgenden Code ein wenig mehr anpassen.

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

In diesem Fall verwenden wir eine vordefinierte Variable ssh für den Port, der der Standard-SSH-Port ist. Wenn Sie einen anderen SSH-Port verwenden, sollten Sie ihn ändern. logpath bezieht sich auf den Speicherort der zu überwachenden Protokolldatei. %(ssh_log)s verwendet einen Wert, der in der Standardkonfigurationsdatei von Fail2ban definiert ist (/etc/fail2ban/paths-common.conf ).

Nginx-Gefängnis

Nginx hat mehrere Jails, die in Fail2Ban verwendet werden können. Wenn beispielsweise ein passwortgeschützter Teil Ihrer Website wiederholt angegriffen wird, können Sie einen Abschnitt [nginx-http-auth] verwenden in jail.local Datei dafür.

[nginx-http-auth]
enabled = true

Wir können auch einen Abschnitt namens [nginx-botsearch] hinzufügen um Anfragen an nicht existierende Ordner oder Speicherorte zu stoppen.

[nginx-badbots]
enabled  = true

Es gibt auch andere Nginx-Gefängnisse, aber sie sind nicht mit Fail2Ban vorkonfiguriert. Sie müssen manuell erstellt werden und die meisten von ihnen können auf den Apachen basieren, mit denen Fail2Ban ausgeliefert wird.

Fail2Ban-Filter und Failregexs

Es gibt eine weitere Einstellung in der Fail2Ban-Konfiguration namens Filter. Filter entscheiden, ob eine Zeile in der Protokolldatei auf eine fehlgeschlagene Authentifizierung hinweist.

Der Filterwert in der Konfigurationsdatei ist ein Verweis auf eine Datei in /etc/fail2ban/filter.d Verzeichnis mit seiner .conf Erweiterung entfernt.

Sie können sehen, welche Art von Filtern verfügbar sind, indem Sie das Verzeichnis überprüfen.

$ ls /etc/fail2ban/filter.d

Darin sehen Sie 2 Protokolldateien für Nginx; nginx-badbots.conf und nginx-http-auth.conf .

Diese Konfigurationsdateien verwenden reguläre Ausdrücke (regex), um Protokolldateien zu analysieren. Diese werden Failregexs genannt. Sie können Filter anpassen oder neue erstellen, indem Sie Ihre eigenen regulären Ausdrücke schreiben. Wir werden diese regulären Ausdrücke nicht ausführlich behandeln, da sie den Rahmen dieses Tutorials sprengen würden.

Fail2Ban-Protokolle und Firewall überwachen

Sie können den Status von Fail2Ban mit systemctl überprüfen wie bereits erwähnt.

$ sudo systemctl status fail2ban

Um etwas mehr Details zu erhalten, können Sie journalctl verwenden Befehl.

$ sudo journalctl -b -u fail2ban

Sie können auch fail2ban-client verwenden um den Status von fail2ban-server abzufragen oder und Einzelgefängnis.

$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name

Sie können auch die Logdatei von Fail2ban abfragen.

$ sudo tail -F /var/log/fail2ban.log

Sie können die aktuell für iptables konfigurierten Regeln auflisten.

$ sudo iptables -L

Sie können die iptables-Regeln auch in einem Format auflisten, das die Befehle widerspiegelt, die zum Aktivieren dieser Regeln erforderlich sind.

$ sudo iptables -S

Schlussfolgerung

Damit ist unser Tutorial zur Installation und Konfiguration von Fail2Ban auf einem Fedora 33- oder CentOS 8-basierten Server abgeschlossen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.


Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. So installieren und konfigurieren Sie Fail2ban unter CentOS 8

  3. So installieren und konfigurieren Sie Redis 6 auf Fedora 34

  4. Wie installiere und konfiguriere ich Fail2ban unter CentOS 8?

  5. So installieren und konfigurieren Sie CyberPanel unter CentOS 8

So installieren und konfigurieren Sie Nagios 4.0.7 unter CentOS 7

So installieren und konfigurieren Sie ISPConfig CP unter CentOS 7

So installieren und konfigurieren Sie ownCloud auf CentOS 7

So installieren und konfigurieren Sie Samba unter CentOS 8

So installieren und konfigurieren Sie Fail2ban unter CentOS 8

So installieren und konfigurieren Sie HAproxy unter CentOS 6