Pensare? Perché pensare! Abbiamo i computer che lo fanno per noi.

— Jean Rostand

Limitare le connessioni SSH e tarpitting

  • user warning: Table './stenoweb/node_comment_statistics' is marked as crashed and should be repaired query: SELECT last_comment_timestamp, last_comment_name, comment_count FROM node_comment_statistics WHERE nid = 212 in /home/stenoweb/public_html/modules/comment/comment.module on line 596.
  • user warning: Table './stenoweb/node_comment_statistics' is marked as crashed and should be repaired query: SELECT last_comment_timestamp, last_comment_name, comment_count FROM node_comment_statistics WHERE nid = 24 in /home/stenoweb/public_html/modules/comment/comment.module on line 596.
  • user warning: Table './stenoweb/node_comment_statistics' is marked as crashed and should be repaired query: SELECT comment_count FROM node_comment_statistics WHERE nid = 24 in /home/stenoweb/public_html/modules/comment/comment.module on line 1121.
Tagged:

http://www.stenoweb.it/files/blog/openssh.png Se avete una macchina con una porta aperta come ssh verso internet avrete notato una quantità spropositata di accessi tentati e falliti.

Ci sono tantissimi malware che provano ad intrufolarsi in computer mal configurati con password deboli. Dando per scontato che vi serva mantenere la porta aperta la prima e più utile soluzione è abilitare esclusivamente l’accesso via chiave pubblica.

Possiamo farlo impostando:

PubkeyAuthentication yes 

in sshd_config.

Per evitare di dover scorrere inutilmente log chilometrici potreste anche limitare le connessioni. Esistono software come fail2ban o denyhosts, ma potete implementare tutto usando semplicemente iptables.

Ci sono alcuni moduli che potreste usare, il più semplicemente è probabilmente “recent”, anche se potreste provare a giocare con hashlimit o persino con geoip. Quest’ultimo filtra le connessioni in base agli stati.

Il vero colpo di grazia per questi poveracci che setacciano la rete è il tarpitting. Si tratta in pratica di tenere in ostaggio la connessione del malcapitato senza consentire alcun trasferimento di dati e rallentando il loro “lavoro”. Potete trovare il tarpitting in patch-o-matic.

iptables -N autoban
iptables -I INPUT -p TCP --dport 22 -j autoban
iptables -A autoban -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A autoban -p tcp --dport 22 -m state --state NEW -m recent --update //
--seconds 60 --hitcount 2 --rttl --name SSH -j DROP

Interessante! Io, più pigramente, ho preferito cambiare la porta 22 con un'altra nel range 1024-65535, tolto l'accesso ssh a root, e messo delle password allo stesso tempo complicate e facili da ricordare, come ad esempio:

TurbinaPeltonRotta

ma scritta con i numeri:

Turb1n4P3lt0nR0tt4

Il trucco di intrappolare le connessioni con il tarpitting mi fa molto gola, ma ho un po' bisticciato in passato con patch-o-matic... :)

ciao

Riccardo