Bloqueja els atacs del servidor SSH (atacs de força bruta) mitjançant DenyHosts


DenyHosts és un programa de seguretat de prevenció d'intrusions basat en registres de codi obert i gratuït per a servidors SSH desenvolupat en llenguatge Python per Phil Schwartz.

Està pensat per supervisar i analitzar els registres del servidor SSH per a intents d'inici de sessió no vàlids, atacs basats en diccionaris i atacs de força bruta bloquejant les adreces IP d'origen afegint una entrada al fitxer /etc/hosts.deny al servidor i impedeix l'adreça IP. de fer qualsevol altre intent d'inici de sessió.

[ També us pot agradar: Com protegir i endurir el servidor OpenSSH ]

DenyHosts és una eina molt necessària per a tots els sistemes basats en Linux, especialment quan permetem inicis de sessió ssh sense contrasenyes als servidors Linux remots.

En aquest article, us mostrarem com instal·lar i configurar DenyHosts en distribucions Linux basades en RHEL com Fedora, CentOS, Rocky Linux i AlmaLinux.

Vegeu també :

  • Com utilitzar Fail2ban per protegir el vostre servidor Linux
  • Com desactivar l'inici de sessió arrel SSH per limitar l'accés SSH a Linux
  • Com augmentar el temps d'espera de la connexió SSH a Linux

Com instal·lar DenyHosts a Linux

Per defecte, l'eina DenyHosts no està inclosa als sistemes Linux, l'hem d'instal·lar mitjançant l'ordre yum de tercers.

# yum install epel-release
# yum install denyhosts

Configuració de DenyHosts per a adreces IP de llista blanca

Un cop instal·lats els Denyhosts, assegureu-vos de posar a la llista blanca la vostra pròpia adreça IP, de manera que mai no us bloquejarà. Per fer-ho, obriu un fitxer /etc/hosts.allow.

# vi /etc/hosts.allow

A sota de la descripció, afegiu cada adreça IP una per una en una línia separada, que mai voleu bloquejar. El format ha de ser el següent.

#
# 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: 172.16.25.125
sshd: 172.16.25.126
sshd: 172.16.25.127

Configuració de DenyHosts per a alertes per correu electrònic

El fitxer de configuració principal es troba a /etc/denyhosts.conf. Aquest fitxer s'utilitza per enviar alertes per correu electrònic sobre inicis de sessió sospitosos i amfitrions restringits. Obriu aquest fitxer amb l'editor VI.

# vi /etc/denyhosts.conf

Cerqueu ADMIN_EMAIL i afegiu la vostra adreça de correu electrònic aquí per rebre alertes per correu electrònic sobre inicis de sessió sospitosos (per a més alertes de correu electrònic feu servir separades per comes). Si us plau, mireu el fitxer de configuració del meu servidor CentOS 6.3. Cada variable està ben documentada, així que configureu-la segons el vostre gust.

############ DENYHOSTS REQUIRED SETTINGS ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts

############ DENYHOSTS OPTIONAL SETTINGS ############
ADMIN_EMAIL = [email 
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <[email >
SMTP_SUBJECT = DenyHosts Daily Report

############ DENYHOSTS OPTIONAL SETTINGS ############
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

Reiniciant el servei DenyHosts

Un cop hàgiu acabat amb la configuració, reinicieu el servei denyhosts per fer nous canvis. També afegim el servei denyhosts a l'inici del sistema.

# chkconfig denyhosts on
# service denyhosts start

Mireu els registres de DenyHosts

Per veure els registres ssh de denyhosts de quants atacants i pirates informàtics s'intenten accedir al vostre servidor. Utilitzeu l'ordre següent per veure els registres en temps real.

# tail -f /var/log/secure
Nov 28 15:01:43 tecmint sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2
Nov 28 15:01:43 tecmint sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 28 16:44:09 tecmint sshd[25474]: pam_unix(sshd:session): session closed for user root
Nov 29 11:08:56 tecmint sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2
Nov 29 11:08:56 tecmint sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session closed for user root
Nov 29 11:26:42 tecmint sshd[31669]: pam_unix(sshd:session): session closed for user root
Nov 29 12:54:17 tecmint sshd[7480]: Accepted password for root from 172.16.25.125 port 1787 ssh2

Elimina l'adreça IP prohibida de DenyHosts

Si alguna vegada heu bloquejat accidentalment i voleu eliminar aquesta adreça IP prohibida dels hosts denegats. Cal aturar el servei.

# /etc/init.d/denyhosts stop

Per eliminar o eliminar completament l'adreça IP prohibida. Heu d'editar els fitxers següents i eliminar l'adreça IP.

# vi /etc/hosts.deny
# vi /var/lib/denyhosts/hosts
# vi /var/lib/denyhosts/hosts-restricted
# vi /var/lib/denyhosts/hosts-root
# vi /var/lib/denyhosts/hosts-valid
# vi /var/lib/denyhosts/users-hosts

Després d'eliminar l'adreça IP prohibida, reinicieu el servei.

# /etc/init.d/denyhosts start

L'adreça IP ofensiva s'ha afegit a tots els fitxers del directori /var/lib/denyhosts, de manera que és molt difícil determinar quins fitxers contenen l'adreça IP ofensiva. Una de les millors maneres d'esbrinar l'adreça IP mitjançant l'ordre grep. Per exemple, per esbrinar l'adreça IP 172.16.25.125, feu.

cd /var/lib/denyhosts
grep 172.16.25.125 *

Llista blanca d'adreces IP permanentment a DenyHosts

Si teniu una llista d'adreces IP estàtiques que voleu incloure a la llista blanca permanentment. Obriu el fitxer /var/lib/denyhosts/allowed-hosts. Qualsevol adreça IP inclosa en aquest fitxer no es prohibirà per defecte (considereu-ho com una llista de temps).

# vi /var/lib/denyhosts/allowed-hosts

I afegiu cada adreça IP en una línia separada. Desa i tanca el fitxer.

# We mustn't block localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127