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

So verwenden Sie Fail2ban zum Sichern von SSH unter CentOS 7

Fail2ban ist das neueste Sicherheitstool, um Ihren Server vor Brute-Force-Angriffen zu schützen. Es schützt den Server automatisch vor Hackern. Es funktioniert, indem es Protokolldateien überwacht und auf beleidigende Aktionen wie wiederholte fehlgeschlagene Anmeldeversuche reagiert. Der Prozess besteht aus dem Hinzufügen einer neuen Regel in einer Firewall-Kette und dem Senden einer E-Mail-Benachrichtigung. Mit diesem einfachen Dokument können Sie fail2ban ganz einfach installieren und konfigurieren.

Bevor wir mit der Installation fortfahren, müssen wir sicherstellen, dass unser System alle Softwareanforderungen zum Kompilieren und Installieren der Anwendung erfüllt. Außerdem sollte es mit einer statischen IP-Adresse konfiguriert werden. Aktualisieren Sie im ersten Schritt Ihre System-Repositories und Softwarepakete, indem Sie die folgenden Befehle auf CentOS ausführen.

# yum update

Fail2ban auf CentOS installieren

Um Fail2Ban auf einem CentOS 7-Server zu installieren, müssen wir zuerst das EPEL-Repository (Extra Packages for Enterprise Linux) installieren. EPEL enthält zusätzliche Pakete für alle CentOS-Versionen. Wir können diesen folgenden Befehl vom Stamm ausführen, um dieses Paket zu installieren.

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2ban benötigt einige Abhängigkeiten. Diese werden automatisch aus dem Repository heruntergeladen.

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

Konfigurieren der Einstellungen für Fail2ban auf CentOS

Die Standardkonfigurationsdatei von fail2ban befindet sich unter /etc/fail2ban/jail.conf
Alle Konfigurationen von fail2ban müssen in einer lokalen Datei vorgenommen werden. Sie müssen /etc/fail2ban/jail.conf kopieren in /etc/fail2ban/jail.local

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Nach dem Kopieren müssen wir die Software mit einem jail.local konfigurieren und anpassen Konfigurationsdatei. Die Datei jail.local überschreibt die Datei jail.conf und wird verwendet, um Ihr benutzerdefiniertes Konfigurationsupdate sicher zu machen.

Hauptkonfigurationen in der standardmäßigen jail.local

Der Dateicode kann aus vielen Codezeilen bestehen, die ausgeführt werden, um eine oder mehrere IP-Adressen auf die Whitelist zu setzen oder zu sperren, die Sperrzeit, die Anzahl der Fehlversuche usw. festzulegen. Um einen Dienst zu aktivieren, können Sie den aktivierten Status von „false“ auf „true“ setzen. Sie müssen einige Begriffe kennen, die in der Konfigurationsdatei verwendet werden.

  • ignoreip :Dies kann eine IP-Adresse, eine CIDR-Maske oder ein DNS-Host sein. Sie können jede IP-Adresse auf die Whitelist setzen, indem Sie sie zu dieser Liste hinzufügen. Mehrere Adressen können mit Leerzeichen definiert werden.
  • bantime :Es ist die Anzahl der Sekunden, die ein Host gesperrt ist.
  • Findtime :Dies ist der Parameter, der verwendet wird, um zu prüfen, ob ein Host gesperrt werden muss oder nicht. Wenn der Host in seiner letzten Findtime maxretry generiert, wird er gebannt.
  • Maxretry :Dies ist der Parameter, der verwendet wird, um das Limit für die Anzahl der Wiederholungen durch einen Host festzulegen. Wenn dieses Limit überschritten wird, wird der Host gesperrt.

Auf dem CentOS 7-Server müssen Sie die Backend-Option in jail.local von auto auf systemd ändern.

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

fail2ban für SSH-Schutz konfigurieren

In CentOS 7 sind standardmäßig keine Jails aktiviert. Um den SSH-Schutz zu aktivieren, müssen Sie die folgenden Zeilen in jail.local auskommentieren Datei wie folgt:

# JAILS
# SSH servers
#

[sshd]

enabled =true# Um einen aggressiveren sshd-Filter zu verwenden (einschließlich sshd-ddos failregex):#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

Parameter enabled ist auf true gesetzt, um Schutz zu bieten, um den Schutz zu deaktivieren, können wir ihn auf false setzen. Der Parameter filter prüft die sshd-Konfigurationsdatei fail2ban, die sich im Pfad /etc/fail2ban/filter.d/sshd.conf befindet .

Der Parameter action wird verwendet, um die IP-Adresse abzuleiten, die gesperrt werden muss, indem der Filter verwendet wird, der in /etc/fail2ban/action.d/firewallcmd-ipset.conf.

verfügbar ist
  • Port :Dieser Parameter kann auf einen neuen Wert wie port=2222 geändert werden, wenn Sie Ihren Port auf 2222 anstatt auf den Standardport verschoben haben. Für den Standardport 22 muss dieser Parameter nicht geändert werden.
  • Logpath :Gibt den Pfad an, in dem die Protokolldatei gespeichert ist. Diese Protokolldatei wird von Fail2Ban gescannt.
  • Maxretry :Es wird verwendet, um die maximale Grenze für fehlgeschlagene Anmeldeeingaben festzulegen.
  • Bantime :Dies wird verwendet, um die Dauer in Sekunden festzulegen, für die ein Host gesperrt werden muss.
  • filter :Der Name der Datei, die sich in /etc/fail2ban/filter.d befindet die die Failregex-Informationen enthält, die verwendet werden, um Protokolldateien entsprechend zu parsen.

Fail2ban-Dienst aktivieren

Sie müssen sicherstellen, dass der CentOS-Firewalld-Dienst aktiviert und gestartet wird, um diese Software auszuführen.

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

Stellen Sie bei allen Konfigurationsänderungen sicher, dass Sie den Dienst neu starten, um diese Änderungen mit dem folgenden Befehl anzuhängen:

#systemctl restart fail2ban

Fail2ban-Client verwenden

Fail2ban bietet einen Befehl fail2ban-client die verwendet werden kann, um Fail2ban von der Befehlszeile aus auszuführen. Schauen Sie sich die verschiedenen Befehlszeilenoptionen unten an:

fail2ban-client COMMAND
  • start :startet den Server und die Jails
  • reload :lädt die Konfiguration neu
  • reload <JAIL> neu :lädt das Gefängnis neu
  • stop :stoppt alle Jails und beendet den Server
  • status :Ruft den aktuellen Status des Servers ab
  • ping :testet, ob der Server aktiv ist
  • help :gibt diese Ausgabe zurück
  • version :gibt die Serverversion zurück

Um beispielsweise zu überprüfen, ob Fail2Ban ausgeführt wird und ob SSHd Jail aktiviert ist, führen Sie Folgendes aus:

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

Für weitere Informationen zu diesem Befehl können Sie man fail2ban-client ausführen .

Nachverfolgung der fehlgeschlagenen Anmeldeversuche

Wir können das SSH-Protokoll mit dem folgenden Befehl überprüfen, um zu überprüfen, ob es fehlgeschlagene Versuche gab, sich über den SSH-Port am Server anzumelden. Wir können eine Liste der fehlgeschlagenen Root-Passwort-Versuche von verschiedenen IP-Adressen ähnlich dieser Ausgabe erhalten.

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

Mit dem folgenden Befehl können Sie die Liste der gesperrten IPs anzeigen, die die maximale Anzahl von Fehlversuchen erreicht haben:

#iptables -L -n

Eine IP-Adresse entsperren

Um eine IP-Adresse aus der Sperrliste zu entfernen, wird der Parameter IPADDRESS auf die entsprechende IP gesetzt, die auf die Whitelist gesetzt werden muss. Der Name „sshd“ ist der Name des Gefängnisses, in diesem Fall das „sshd“-Gefängnis, das wir oben konfiguriert haben. Dafür können wir den folgenden Befehl ausführen.

#fail2ban-client set sshd unbanip IPADDR

Abschluss

Fail2ban arbeitet im Hintergrund und durchsucht die Protokolldateien kontinuierlich nach ungewöhnlichen Anmeldemustern und Sicherheitsverletzungsversuchen. Dieser Artikel bietet Ihnen eine kurze Einführung in dieses Thema, weitere Informationen dazu erhalten Sie in diesem Fail2ban-Wiki. Ich hoffe, das ist nützlich für Sie. Bitte posten Sie Ihre wertvollen Kommentare und Vorschläge dazu.


Cent OS
  1. So installieren Sie Fail2Ban unter CentOS 7

  2. So verwenden Sie Salt auf Centos 8

  3. So ändern Sie den SSH-Port in CentOS

  4. So richten Sie SSH-Schlüssel unter CentOS 8 ein

  5. So schützen Sie Apache und SSH mit Fail2Ban unter CentOS 8

So generieren Sie einen SSH-Schlüssel in CentOS 8

So installieren Sie Fail2Ban auf CentOS

So installieren Sie Fail2Ban unter CentOS 7

So installieren Sie Fail2Ban unter CentOS 8

So verwenden Sie Port Knocking zum Sichern des SSH-Dienstes unter Linux

So sichern Sie SSH mit Fail2Ban