Impedire attacchi SSH brute-force con Denyhosts
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Chiunque abbia un server esposto a internet avrà notato nei propri log diversi tentativi di login SSH automatizzati.
Oltre alle normali precauzioni da adottare sul nostro accesso SSH (si veda ad esempio Ssh e autenticazione tramite chiavi) è bene come misura aggiuntiva installare un demone che analizzi i messaggi di log con lo scopo di determinare eventuali host che stanno cercando di forzare il nostro sistema.
DenyHosts è un programma, presente nei repository Debian ([1]), che automaticamente blocca gli attacchi di forza bruta su SSH aggiungendo righe a /etc/hosts.deny
. Informa anche gli amministratori Linux circa gli host che effettuano attacchi, gli utenti attaccati e i login sospetti.
Installazione
Per prima cosa controlliamo che siano installati alcuni requisiti:
# dpkg --list | grep python2 $ python -V Output: Python 2.5.1
Quindi installiamo il software:
# apt-get install denyhosts
Configurazione
Il file di configurazione è /etc/denyhosts.conf
, ma il software richiede anche che siano creati due file per le blacklist e per le whitelist: /etc/hosts.allow
e /etc/hosts.deny
.
Creazione di una whitelist
Creiamo il file:
# vi /etc/hosts.allow
e abilitiamo il nostro indirizzo IP, in modo che non venga mai bloccato da Denyhosts:
sshd: 81.174.67.93
Poi salviamo e chiudiamo il file.
Configurazione di Denyhosts
Apriamo il file di configurazione:
# vi /etc/denyhosts.conf
e impostiamo il nostro indirizzo email per ricevere tutti gli avvisi del software:
ADMIN_EMAIL = ferdybassi@xxxx.it
Di seguito è riportato un file di configurazione minimale, ma perfettamente funzionante. Il file è comunque ottimamente commentato.
############ THESE SETTINGS ARE REQUIRED ############ SECURE_LOG = /var/log/auth.log HOSTS_DENY = /etc/hosts.deny PURGE_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/run/denyhosts.pid ############ THESE SETTINGS ARE OPTIONAL ############ ADMIN_EMAIL = ferdy@xxxx.it SMTP_HOST = localhost SMTP_PORT = 25 SMTP_FROM = DenyHosts <webmaster@dominio.com> SMTP_SUBJECT = DenyHosts Report AGE_RESET_VALID=5d AGE_RESET_ROOT=25d AGE_RESET_RESTRICTED=25d AGE_RESET_INVALID=10d ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ########## DAEMON_LOG = /var/log/denyhosts DAEMON_SLEEP = 30s DAEMON_PURGE = 1h
Riavviamo il demone e il gioco è fatto:
# /etc/init.d/denyhosts restart
--Ferdybassi 09:47, 14 nov 2010 (CET)