DenyHosts ist eine Open-Source-Software, die von Phil Schwartz in der Python-Sprache entwickelt wurde. Es dient hauptsächlich dazu, SSH-Serverprotokolle auf ungültige Anmeldeversuche, wörterbuchbasierte Angriffe und Brute-Force-Angriffe zu überwachen und zu analysieren, indem es die Ursprungs-IP-Adressen blockiert, indem es sie zur Datei /etc/hosts.deny auf dem Server hinzufügt und dadurch verhindert IP-Adresse von weiteren Anmeldeversuchen.
Aufgrund seiner Einfachheit und der Möglichkeit, die Regeln manuell zu konfigurieren, wird es häufig als Alternative zu Fail2ban verwendet, das etwas komplizierter zu verwenden und zu konfigurieren ist.
In diesem Tutorial zeige ich Ihnen, wie Sie DenyHosts auf Ihrem CentOS 7-Server installieren und konfigurieren.
Lesen Sie auch:Verwendung von Fail2ban/Client unter CentOS 7
Voraussetzungen
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. Die DenyHosts-Software hängt von der "ipaddr"
ab Python-Modul. Aktualisieren Sie im ersten Schritt Ihre System-Repositories und Softwarepakete einschließlich des Python-Moduls, indem Sie die folgenden Befehle ausführen.
#yum update
#yum install python-ipaddr -y
1. Installieren von DenyHosts aus dem Epel-Repository
Wir müssen dieses Paket über das Epel-Repository installieren, verwenden Sie den folgenden Befehl, um es zu installieren.
#yum install epel-release
#yum install denyhosts -y
Denyhosts konfigurieren
Sobald die Denyhosts installiert sind, müssen Sie Ihre IP-Adresse zur IP-Zulassungsliste hinzufügen, um sicherzustellen, dass Ihre eigene IP-Adresse auf der weißen Liste steht, damit Sie niemals ausgesperrt werden.
# cat /etc/hosts.allow
#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 37.217.142.41
sshd: 37.217.142.42
sshd: 37.217.142.43
sshd: 37.217.142.44
Als nächstes müssen Sie alle erforderlichen IP-Adressen, die Sie blockieren möchten, auf die schwarze Liste setzen. Wir können bestätigen, dass unsere IP-Adresse ebenfalls nicht auf der schwarzen Liste steht.
# cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 78.189.206.37
sshd: 121.14.27.58
sshd: 1.246.228.161
sshd: 103.89.89.47
sshd: 116.29.148.2
# DenyHosts: Tue Jan 9 10:16:15 2018 | sshd: 222.186.174.81
sshd: 222.186.174.81
# DenyHosts: Tue Jan 9 10:40:46 2018 | sshd: 217.61.20.181
sshd: 217.61.20.181
# DenyHosts: Tue Jan 9 13:15:53 2018 | sshd: 112.86.117.182
sshd: 112.86.117.182
DenyHosts-Dienst aktivieren
Sobald es wie erforderlich konfiguriert ist, können wir unseren DenyHosts-Dienst mit den folgenden Befehlen aktivieren und starten:
# systemctl enable denyhosts
# systemctl start denyhosts
# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (running) since Wed 2018-01-10 06:47:54 UTC; 3h 57min ago
Docs: man:systemd-sysv-generator(8)
Process: 30660 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/denyhosts.service
└─30665 python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Starting SYSV: Activates/Deactivates the...
Jan 10 06:47:54 li226-12.members.linode.com denyhosts[30660]: starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Started SYSV: Activates/Deactivates the.
Konfigurieren von E-Mail-Warnungen in DenyHosts
Wir können E-Mail-Benachrichtigungen über verdächtige Anmeldungen und eingeschränkte Hosts einrichten, indem wir Änderungen in einer DenyHosts-Konfigurationsdatei vornehmen. Sie können Ihre E-Mail-Adresse zur Variablen ADMIN_EMAIL
hinzufügen in der Konfigurationsdatei /etc/denyhosts.conf
um E-Mail-Benachrichtigungen über verdächtige Anmeldungen zu erhalten. Sie können der Variablen eine beliebige Anzahl von E-Mail-Adressen hinzufügen, achten Sie jedoch darauf, sie durch Kommas zu trennen. Hier habe ich meine E-Mail-Adresse [email protected] hinzugefügt, um mich über Angriffe zu informieren.
Sie müssen den DenyHosts-Dienst neu starten, nachdem Sie Änderungen an den Konfigurationsdateien vorgenommen haben.
Gesperrte IPs entfernen
Sie können die ssh-Protokolle von denyhosts überwachen, um zu sehen, wie viele Angreifer und Hacker versuchen, Zugriff auf Ihren Server zu erlangen. Sie können den folgenden Befehl verwenden, um die Echtzeitprotokolle anzuzeigen.
# tail -f /var/log/secure
Jan 10 10:56:43 li226-12 sshd[2096]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:08 li226-12 sshd[2102]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:43 li226-12 sshd[2113]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:59:17 li226-12 sshd[2133]: refused connect from 222.186.43.6 (222.186.43.6)
Aus diesen Protokollen ist ersichtlich, dass unser Server versucht, die Verbindung von der IP 222.186.43.6 abzulehnen. Sehen wir uns die Schritte zum Entfernen dieser IP von der schwarzen Liste an.
Wir müssen nach diesem IP-Eintrag in der Datei /etc/hosts.deny und all diesen benutzerdefinierten Deny-Dateien suchen, die mit denyhosts erstellt wurden. Wir können den IP-Eintrag von allen wie folgt entfernen:
# nano /etc/hosts.deny
# nano /var/lib/denyhosts/hosts
# nano /var/lib/denyhosts/hosts-restricted
# nano /var/lib/denyhosts/hosts-root
# nano /var/lib/denyhosts/hosts-valid
# nano /var/lib/denyhosts/users-hosts
Ich konnte diesen Eintrag in meiner hosts.deny-Datei bemerken.
# DenyHosts: Wed Jan 10 03:40:07 2018 | sshd: 222.186.43.6
sshd: 222.186.43.6
Ich habe diesen Eintrag entfernt und denyhosts-Dienst neu gestartet, um zu bestätigen, dass er funktioniert!
2. Installation von Github Repo und Source Distribution
Wir können entweder das Github-Repository herunterladen oder die neueste DenyHosts-Quelldistribution herunterladen und aus diesen Quellpaketen kompilieren. Mal sehen, wie ich Denyhosts aus dem Github Repo installiere.
#yum install git
# git clone https://github.com/denyhosts/denyhosts
Cloning into 'denyhosts'...
remote: Counting objects: 1353, done.
remote: Total 1353 (delta 0), reused 0 (delta 0), pack-reused 1353
Receiving objects: 100% (1353/1353), 263.93 KiB | 0 bytes/s, done.
Resolving deltas: 100% (899/899), done.
Nachdem wir die Dateien von Github heruntergeladen haben, müssen wir sie installieren. Sie können es installieren, indem Sie diesen Befehl aus dem denyhosts-Ordner wie folgt ausführen:
#cd denyhosts
#python setup.py install
Dadurch werden die DenyHosts-Module in das site-packages-Verzeichnis von Python installiert.
Ebenso können Sie von einer Quelldistribution die neuesten Denyhosts herunterladen und wie oben beschrieben installieren. Die restlichen Konfigurationsschritte sind in beiden Fällen gleich.
Denyhosts konfigurieren
Nach der Installation können Sie die Beispielkonfigurationsdatei denyhosts.conf
kopieren erstellt unter dem Installationsordner, der die meisten möglichen Einstellungen im Ordner /etc folder
enthält . Die Konfigurationsdatei enthält verschiedene Einstellungen mit ihrer Beschreibung, die Ihnen helfen sollen, DenyHosts schnell zu konfigurieren. Nachdem Sie Ihre Konfigurationsdatei bearbeitet haben, speichern Sie sie.
# cp -rp denyhosts.conf /etc/
Als nächstes müssen wir das Beispiel daemon-control.dist
kopieren Skript als solches an daemon-control
und ändern Sie den empfohlenen Abschnitt gemäß dem Speicherort Ihrer Konfigurationsdatei.
#cp daemon-control-dist daemon-control
#chmod 700 daemon-control
Jetzt können wir die Daemon-Control-Datei bearbeiten. Sie sollten nur diesen Abschnitt oben wie unten bearbeiten müssen. Ich habe diesen Abschnitt als meine Konfigurationspfade bearbeitet.
###############################################
###############################################
#### Bearbeiten Sie diese entsprechend Ihrer Konfiguration ####
###############################################
DENYHOSTS_BIN ="/usr/bin/denyhosts.py"
DENYHOSTS_LOCK ="/var/run/denyhosts.pid"
DENYHOSTS_CFG ="/etc/denyhosts.conf"
PYTHON_BIN ="/usr/bin/env python"
##########################################
Diese Standardwerte sollten für viele Systeme angemessen sein. Ich empfehle Ihnen jedoch, diese Einstellungen an Ihr spezielles System anzupassen. Nachdem Sie die Konfigurations- und Daemon-Steuerungsdateien bearbeitet haben, stellen Sie sicher, dass die Ausführung des Daemon-Steuerungsskripts auf root beschränkt ist.
DenyHosts manuell starten
Nachdem Sie Denyhosts mit unserem Daemon-Kontrollskript so eingerichtet haben, dass es als Daemon läuft, können Sie es manuell von dort aus starten, indem Sie einfach diesen Befehl aus dem Installationsordner ausführen.
# ./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
Sie können auf das Daemon-Protokoll (/var/log/denyhosts)
verweisen um sicherzustellen, dass DenyHosts erfolgreich ausgeführt wird. Bei Problemen und Fragen zu dieser Software können Sie auf diesen FAQ-Link verweisen.
Darüber hinaus können Sie DenyHosts manuell starten, indem Sie es von der Befehlszeile aus mit Python ausführen, indem Sie die allgemeinen Parameter wie den Speicherort der Binärdatei und die Konfigurationsdatei erwähnen.
# python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
# ps aux | grep denyhosts
root 25650 0.0 1.0 216116 10740 ? S 09:44 0:00 python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
root 25656 0.0 0.2 112668 2200 pts/0 S+ 09:44 0:00 grep --color=auto denyhosts
Der obige Befehl startet DenyHosts und führt es im Hintergrund aus.
Denyhosts automatisch starten
Wir können Cronjobs so einstellen, dass Denyhosts beim Start automatisch gestartet wird. Oder wir können einen symbolischen Link von /etc/init.d
erstellen wie unten:
# cd /etc/init.d
# ln -s /root/denyhosts/daemon-control denyhosts
# ll | grep denyhosts
lrwxrwxrwx 1 root root 30 Jan 10 04:48 denyhosts -> /root/denyhosts/daemon-control
Jetzt können wir diesen Dienst über das normale systemctl
verwalten Befehl.
# systemctl enable denyhosts
denyhosts.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig denyhosts on
# systemctl start denyhosts
# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (exited) since Thu 2018-01-11 09:57:53 UTC; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 25876 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)
Abschluss
In diesem Artikel habe ich besprochen, wie man DenyHosts auf unserem CentOS 7-Server installiert und konfiguriert. Dieses Tool kann einfach konfiguriert werden und unterstützt auch E-Mail-, SMTP- und Syslog-Benachrichtigungen. Diese Anwendung ist eine hervorragende Lösung, um SSH-Serverangriffe wie wörterbuchbasierte Angriffe und Brute-Force-Angriffe abzuwehren. Ich hoffe, dieser Artikel ist nützlich für Sie. Bitte posten Sie Ihre wertvollen Kommentare und Vorschläge dazu.