GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer et configurer Denyhost dans Centos 7 Linux

DenyHosts est un logiciel open source développé en langage Python par Phil Schwartz. Il est principalement conçu pour surveiller et analyser les journaux du serveur SSH pour les tentatives de connexion invalides, les attaques basées sur un dictionnaire et les attaques par force brute en bloquant les adresses IP d'origine en l'ajoutant au fichier /etc/hosts.deny sur le serveur et en empêchant ainsi le adresse IP de faire d'autres tentatives de connexion de ce type.

En raison de sa simplicité et de la possibilité de configurer manuellement les règles, il est largement utilisé comme alternative à Fail2ban qui est un peu plus compliqué à utiliser et à configurer.

Dans ce tutoriel, je vais vous montrer comment installer et configurer DenyHosts sur votre serveur CentOS 7.

Lisez aussi :Comment utiliser Fail2ban/Client sur CentOS 7

Prérequis

Avant de procéder à l'installation, nous devons nous assurer que notre système répond à toutes les exigences logicielles pour compiler et installer l'application. Et aussi, il doit être configuré avec une adresse IP statique. Le logiciel DenyHosts dépend du "ipaddr" Module Python. Lors de la première étape, mettez à jour vos référentiels système et vos packages logiciels, y compris le module python, en exécutant les commandes ci-dessous.

#yum update
#yum install python-ipaddr -y

1. Installation de DenyHosts à partir du référentiel Epel

Nous devons installer ce package à l'aide du référentiel Epel, utilisez la commande suivante pour l'installer.

#yum install epel-release
#yum install denyhosts -y

Configuration de Denyhosts

Une fois les Denyhosts installés, vous devez ajouter votre IP à la liste IP autorisée pour vous assurer que votre propre adresse IP est sur liste blanche, afin que vous ne soyez jamais bloqué.

# 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

Ensuite, vous devez mettre sur liste noire toutes les adresses IP requises que vous souhaitez bloquer. Nous pouvons également confirmer que notre adresse IP ne figure pas sur la liste noire.

# 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

Activation du service DenyHosts

Une fois configuré comme requis, nous pouvons activer et démarrer notre service DenyHosts avec les commandes ci-dessous :

# 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.

Configuration des alertes par e-mail dans DenyHosts

Nous pouvons définir des alertes par e-mail sur les connexions suspectes et les hôtes restreints en apportant des modifications dans un fichier de configuration DenyHosts. Vous pouvez ajouter votre adresse e-mail à la variable ADMIN_EMAIL dans le fichier de configuration /etc/denyhosts.conf pour recevoir des alertes par e-mail sur les connexions suspectes. Vous pouvez ajouter n'importe quel nombre d'adresses e-mail à la variable, assurez-vous simplement de la séparer à l'aide de virgules. Ici, j'ai ajouté mon adresse e-mail [email protected] pour m'alerter de toute attaque.

Vous devez redémarrer le service DenyHosts après avoir apporté des modifications aux fichiers de configuration.

Suppression des IP interdites

Vous pouvez surveiller les journaux ssh de denyhosts pour voir combien d'attaquants et de pirates tentent d'accéder à votre serveur. Vous pouvez utiliser la commande suivante pour afficher les journaux en temps réel.

# 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)

Il est évident que notre serveur essaie de refuser la connexion à partir de l'IP 222.186.43.6 à partir de ces journaux. Voyons les étapes pour supprimer cette IP de la liste noire.

Nous devons vérifier cette entrée IP dans le fichier /etc/hosts.deny et tous ces fichiers de refus personnalisés créés avec denyhosts. Nous pouvons supprimer l'entrée IP de chacun d'eux comme ci-dessous :

# 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

J'ai pu remarquer cette entrée dans mon fichier hosts.deny.

# DenyHosts: Wed Jan 10 03:40:07 2018 | sshd: 222.186.43.6
sshd: 222.186.43.6

J'ai supprimé cette entrée et redémarré le service denyhosts pour confirmer son fonctionnement !

2. Installation à partir du référentiel Github et de la distribution source

Nous pouvons soit télécharger le référentiel Github, soit télécharger la dernière distribution source de DenyHosts et la compiler à partir de ces packages source. Voyons comment j'installe denyhosts à partir du référentiel Github.

#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.

Après avoir téléchargé les fichiers depuis le Github, nous devons l'installer. Vous pouvez l'installer en exécutant cette commande à partir du dossier denyhosts comme ci-dessous :

#cd denyhosts
#python setup.py install

Cela installera les modules DenyHosts dans le répertoire site-packages de python.

De même, à partir d'une distribution source, vous pouvez télécharger les derniers Denyhosts et les installer comme expliqué ci-dessus. Le reste des étapes de configuration est le même dans ces deux cas.

Configuration de Denyhosts

Après l'installation, vous pouvez copier l'exemple de fichier de configuration denyhosts.conf créé sous le dossier d'installation qui contient la plupart des paramètres possibles du dossier /etc folder . Le fichier de configuration contient divers paramètres ainsi que leur description qui devraient vous aider à configurer rapidement DenyHosts. Après avoir modifié votre fichier de configuration, enregistrez-le.

# cp -rp denyhosts.conf /etc/

Ensuite, nous devons copier l'exemple daemon-control.dist script en tant que tel à daemon-control et modifiez la section recommandée en fonction de l'emplacement de votre fichier de configuration.

#cp daemon-control-dist daemon-control
#chmod 700 daemon-control

Nous pouvons maintenant éditer le fichier daemon-control. Vous ne devriez avoir besoin de modifier cette section qu'en haut, comme ci-dessous. J'ai modifié cette section en tant que mes chemins de configuration.

##############################################

##############################################
#### Modifiez-les en fonction de votre configuration ####
##############################################

DENYHOSTS_BIN ="/usr/bin/denyhosts.py"
DENYHOSTS_LOCK ="/var/run/denyhosts.pid"
DENYHOSTS_CFG ="/etc/denyhosts.conf"

PYTHON_BIN ="/usr/bin/env python"

#########################################

Ces valeurs par défaut devraient être raisonnables pour de nombreux systèmes. Mais je vous recommande de personnaliser ces paramètres en fonction de votre système particulier. Une fois que vous avez modifié les fichiers de configuration et de contrôle du démon, assurez-vous de limiter l'exécution du script de contrôle du démon à root.

Démarrer manuellement DenyHosts

Après avoir configuré Denyhosts pour qu'il s'exécute en tant que démon avec notre script de contrôle de démon, vous pouvez le démarrer manuellement à partir de là en exécutant simplement cette commande à partir du dossier d'installation.

# ./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf

Vous pouvez vous référer au journal du démon (/var/log/denyhosts) pour vous assurer que DenyHosts s'exécute correctement. Vous pouvez vous référer à ce lien FAQ pour tout problème et question concernant ce logiciel.

De plus, vous pouvez démarrer DenyHosts manuellement en l'exécutant à partir de la ligne de commande en utilisant Python comme ceci en mentionnant les paramètres communs comme son emplacement de fichier binaire et son fichier de configuration.

# 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

La commande ci-dessus lance DenyHosts et l'exécute en arrière-plan.

Démarrer Denyhosts automatiquement

Nous pouvons définir des cronjobs pour démarrer Denyhosts automatiquement au démarrage. Ou nous pouvons créer un lien symbolique depuis /etc/init.d comme ci-dessous :

# 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

Nous pouvons maintenant gérer ce service à partir du systemctl normal commande.

# 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)

Conclusion

Dans cet article, j'ai expliqué comment installer et configurer DenyHosts sur notre serveur CentOS 7. Cet outil peut être facilement configuré et prend également en charge les notifications par e-mail, SMTP et syslog. Cette application est une excellente solution pour défendre les attaques de serveur SSH comme les attaques basées sur un dictionnaire et les attaques par force brute. J'espère que cet article vous sera utile. Veuillez publier vos précieux commentaires et suggestions à ce sujet.


Cent OS
  1. Comment installer et configurer Nginx sur CentOS 7

  2. Comment installer et configurer R sur le système Linux RHEL 8 / CentOS 8

  3. Comment installer et configurer docker dans Rocky Linux/Centos 8

  4. Comment installer et configurer Ansible sur Rocky Linux/CentOS 8

  5. Comment installer et configurer Mono sur Rocky Linux 8 et CentOS 8

Comment installer et configurer Nagios 4.0.7 sur CentOS 7

Comment installer et configurer ISPConfig CP sur CentOS 7

Comment installer et configurer ownCloud sur CentOS 7

Comment installer et configurer Samba sur CentOS 8

Comment installer et configurer Fail2ban sur CentOS 8

Comment installer DenyHost sur CentOS 6