Sikring af SSH på Debian vha. DenyHost

DenyHost er et lille program der kører i baggrunden og holder øje med hvor mange mislykkedes ssh forsøg maskinen modtaget, og hvis den modtager for mange fra den samme IP Adresse blokeres denne adresse simpelthen.

Det er ikke særligt svært at sætte op, men nu sider jeg og skal installere det på en lang række maskiner så jeg tænkte at jeg lige ville bruge lejligheden til at få skrevet et blogindlæg om det 😉

Først:

# apt-get install denyhosts

og nu virker det faktisk, lad os teste:

# ssh lab01.mikjaer.com
lab01:~# ssh server -l root
root@server's password: 
Permission denied, please try again.
root@server's password: 
Permission denied, please try again.
root@server's password: 
Permission denied (publickey,password).
lab01:~# ssh server -l root
root@server's password: 
Permission denied, please try again.
root@server's password: 
Permission denied, please try again.
root@server's password: 
Permission denied (publickey,password).
lab01:~# ssh server -l root
ssh_exchange_identification: Connection closed by remote host

Efter relativt få forsøg bliver forbindelsen blokeret og vi får ikke længere lov at forsøge os frem, så langt så godt, men jeg kunne godt tænke mig at blive informeret når det sker, derfor retter jeg i /etc/denyhosts.conf: (Tilpas flg. værdier)

ADMIN_EMAIL = root@localhost
SMTP_HOST = smtp.eksempel.dk
SMTP_FROM = DenyHosts <nobody@server>

Herefter:

# /etc/init.d/denyhosts restart

Gentag nu ovenstående test (slet ip adressen på din server i /etc/hosts.deny for at fjerne den tidligere opnåede spærring). Det skulle gerne resultere i en mail som denne:

Added the following hosts to /etc/hosts.deny:

208.254.58.144 (mobismtp.vls-global.com)
218.77.120.142 (unknown)
209.165.131.61 (osscszibscnvm-2.gci.net)
109.75.21.200 (as1.navacom.de)
77.76.109.119 (77-76-109-119.static.unassigned.as8607.net)
93.189.94.179 (pixeliastudio.siliconpeople.net)
116.58.221.96 (116-58-221-96.net-infinity.net)
1.234.20.21 (unknown)
192.168.0.212 (lab1.mikjaer.com)

Det sidste, men absolut ikke ubetydelige, er muligheden for at synkronisere dine indstillinger med denyhost’s egen database over angrebsadresser, rediger igen /etc/denyhosts.conf, og udkommenter flg. linie:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911

Playing the waiting game … hvis du går ud og laver en kop kaffe og venter 10-20 minutter, så kan du i /var/log/denyhosts se noget lign.:

2012-10-08 22:47:46,188 - sync        : INFO     sent 2 new hosts
2012-10-08 22:47:46,188 - sync        : ERROR    [Errno 2] No such file or directory: '/var/lib/denyhosts/sync-timestamp'
2012-10-08 22:47:46,526 - sync        : INFO     received 0 new hosts

Hvilket viser at kommunikation med sync-serveren fungerer, og du kan nu tjekke indholdet af /var/lib/denyhosts/sync-timestamp og konkludere at filen nu ér oprettet, og dermed ikke er “Not found” næste gang sync kører.

Lidt senere:

2012-10-08 22:52:47,171 - sync        : INFO     received 20 new hosts
2012-10-08 22:52:47,172 - denyhosts   : INFO     received new hosts: ['175.184.20.235', '180.153.148.20', '61.155.178.242', '117.21.208.26', '222.68.193.150', '50.63.141.243', '159.226.43.35', '115.124.104.71', '199.201.126.83', '75.117.157.193', '212.250.207.123', '183.203.15.239', '81.169.170.213', '190.146.233.184', '88.191.123.49', '182.140.140.7', '12.43.112.222', '122.155.7.225', '202.117.3.104', '94.142.233.169']

Evt. verificer i /etc/hosts.deny at ip adresserne er oprettet i filen, det er den hos mig.

Ergo virker det!

Nu har du ikke blot taget et vigtigt skridt for at sikre dig selv, men også hjulpet til med at beskytte andre ved automatisk at indmelde angrebsforsøg til de centrale servere.

En sidste ting du kan gøre, hvis du vil undgå at risikere at lukke dig selv ude er at whiteliste din egen ip adresse, tilføj flg. til /etc/hosts.allow:

ALL: 10.20.30.40

Happy hacking 😉

Dette indlæg blev udgivet i Knowledge Base, Linux, Networking, Old Base. Bogmærk permalinket.

Skriv et svar