Impedire attacchi SSH brute-force con Denyhosts

Debian-swirl.png Versioni Compatibili

soltanto:
Debian 6 "squeeze"
Debian 7 "wheezy"

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 guida su SSH) è 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




Guida scritta da: Ferdybassi 09:47, 14 nov 2010 (CET)   Debianized 40%
Estesa da:
Verificata da:
marzolinus

Verificare ed estendere la guida | Cos'è una guida Debianized