Ho già parlato di fail2ban e logcheck, 2 strumenti in grado di eseguire una scansione dei vostri log e fare delle azioni, basandosi su regole che potete dare/modificare, di solito modificare le regole di iptables per fermare gli attacchi attivi contro il server o semplicemente inviare un messaggio di avviso se qualche cosa si trova nei log.
Oggi vedremo uno strumento simile, sshguard , è diverso dagli altri due in quanto è scritto in C, quindi usa meno memoria e CPU durante l’esecuzione pur ottenendo gli stessi risultati.
Quindi, cosa fa sshguard ?
La versione corta è: riceve i messaggi di log, rileva quando un servizio in rete è attaccato basandosi su di essi, e blocca l’indirizzo di chi sta attaccando, dopo qualche tempo, rimuove questo blocco.
La versione completa è: sshguard gira su una macchina come un piccolo demone, e riceve i messaggi di log (in diversi modi, ad esempio da syslog). Quando si determina che l’indirizzo X ha fatto qualcosa di male al servizio Y, attiva una regola nel firewall della macchina (uno dei tanti supportati) per il blocco di X.
Sshguard mantiene X bloccato per qualche tempo, poi lo rilascia automaticamente.
Si prega di notare che, nonostante il suo nome sshguard rileva di base gli attacchi per molti servizi, non solo SSH, ma anche diversi demoni ftpds, Exim e Dovecot. E’ in grado di operare con tutti i principali sistemi di firewalling, e fornisce supporto per IPv6, whitelist, sospensione, e registra i messaggi di autenticazione.
Installazione
Sshguard è distribuito sotto la permissiva licenza BSD: è possibile utilizzare, modificare e ridistribuire il software, a proprio rischio, per qualsiasi uso, anche commerciale, a condizione di conservare l’avviso di copyright originale che si trova al suo interno. Il software è distribuito nel repository principale delle più utilizzate distribuzioni GNU/Linux e per alcuni sistemi *BSD, ma è anche possibile scaricare i sorgenti dalla loro pagina di downlaod .
Per installarlo su Debian ( o altre distribuzioni che utilizzano i .deb come Ubuntu) lanciate da un terminale:
sudo aptitude install sshguard |
Configurazione
Sshguard si interfaccia al sistema in due punti:
- il sistema di logging (come sshguard riceve i messaggi di log per il monitoraggio)
- il firewall (come sshguard blocca gli indirizzi indesiderati )
A partire dalla versione 1.5, sshguard viene fornito con il Log Sucker . Con il Log Sucker, SSHGuard recupera le voci dai log in modo proattivo, e gestisce in modo trasparente eventi come la rotazione dei file di log e la scomparsa e riapparizione dei file.
Nella pagina della documentazione ufficiale ci sono delle istruzioni per molti firewall differenti, io seguirò le istruzioni per netfilter/iptables.
sshguard non ha un file di configurazione. Tutta la configurazione che deve essere fatta è la creazione di una chain chiamata “sshguard” nella catena di INPUT di iptables dove sshguard inserisce automaticamente le regole per i pacchetti provenienti da host malevoli:
# for regular IPv4 support: iptables -N sshguard # if you want IPv6 support as well: ip6tables -N sshguard |
Ora aggiornare la catena di INPUT in modo che passi tutto il traffico che si desidera a sshguard, specificare con – dport tutte le porte dei servizi che si desidera proteggere con sshguard. Se si desidera impedire agli aggressori di fare tutto il traffico verso l’host, rimuovere completamente l’opzione:
# block any traffic from abusers iptables -A INPUT -j sshguard ip6tables -A INPUT -j sshguard -- or -- # block abusers only for SSH, FTP, POP, IMAP services (use "multiport" module) iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard |
Se al momento non usate iptables e volete solo avere sshguard installato e funzionante senza alcun ulteriore impatto sul sistema, questi comandi creano e salvano una configurazione iptables che non fa assolutamente nulla se non permettere ad sshguard di funzionare:
# iptables -F # iptables -X # iptables -P INPUT ACCEPT # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT # iptables -N sshguard # iptables -A INPUT -j sshguard # /etc/rc.d/iptables save |
Conclusioni
E questo è tutto quello che dovete fare per avere una installazione di base di sshguard installata e funzionante, vi aiuterà ad avere il vostro ssh, ftp ed altri demoni un po’ più sicuro.
Popular Posts:
- None Found
Hello,
Here’s a perl script that i made quite some time ago to ban in real time ssh attackers.
http://freecode.com/projects/sshdautoban
or directly here:
http://git.coredumb.net/cgit.cgi/coredumb/tree/sshdautoban/trunk/sshd_autoban.pl
The goal is to forward your syslog-ng output to the script to let him ban adresses in real time whether by iptables or by hosts.deny.
Concerning system usage: Around 4MB of ram while running 24/7 banning thousands of IPs
Hope this helps,
Coredumb
Hello Coredumb,
Thanks for the contribution, i think that everything help and that GNU/Linux and Unix in general it’s fantastic because there are so many different ways to do the same thing, so your perl script is more than welcome as alternative.
Best regards
How is this different than fail2ban???
Same goal different implementation
From their FAQ:
Several people wrote and released some scripts for blocking brute force attacks against SSH. Sshguard was started to have something closer to the traditional UNIX daemon: a small application written in C. As a collateral service, it is appealing to have something running standalone, consuming as little memory and computational resources as possible, and not sensitive to the dependencies and the versioning incompatibilities of script interpreters.
Sshguard was then progressively extended with more features. Today, some additional differentials from other tools include log validation, sophisticated whitelisting, touchiness, and automatic blacklisting.
On the top of this, sshguard strives for ease of use and quality of documentation, and the team tries to be as responsive as possible to users.
Well, if there is no configuration file and you cannot configure sshguard, just how the heck can you extend it—without having to editing source code—to match on custom log messages? The way it looks, it can’t do that, and thus falls short.
What configuration could be used if the server has ufw installed?
Well you can use fail2ban too and it is more universal, because it can be used for other services like apache, ftp etc. as well. Furthermore, i suggest to change ssh port if you fear bruteforces and so on. Correct me if I am wrong 🙂
Ottimo articolo, guida molto utile! Non conoscevo SSHGuard e sarà il prossimo demone che installerò sul VPS!
Se ti interessa uno scambio di link fammi sapere.
Ciao
Piccola integrazione: come al solito Mamma Debian ci semplifica la vita: il pacchetto di sshguard presente in Debian 7 Wheezy provvede già ad abilitare le regole del firewall tramite lo script init in /etc/init.d/sshguard.
Quindi se uno non ha previsto un altro script che reimposti le regole di iptables, dopo l’installazione di sshguard non c’è bisogno di far nulla di più per abilitarlo. 😉