09 februari 2006

Denyhosts

Aangezien de post van Hendrik over dit fijne scriptseltje per abuis een beetje weggegooid is en Google's cache helaas niet op tijd was, bij deze nog maar eens een beschrijving. Denyhosts is dus een progje dat kijkt of mensen proberen in te breken op je ssh-server. Dat doet het door de logs (/var/logs/auth.log) te checken op een verdacht hoog aantal foutieve inlog pogingen van eenzelfde ip-adres. Als hij zo'n neppe inbreker heeft gevonden gooit ie hem op een blokkeerlijst en is het dus over met de pret voor onze 1337 h@xx0r.

Om te beginnen halen we hier een van de rpm's op, afhankelijk van welke versie van python je gebruikt (om hier achter te komen kun je $ python -V doen). Natuurlijk werken we hier liever met debjes dus toveren we de boel met alien even om in een deb pakket (zie Jos' alien post). Installeer dit pakket vervolgens met

$ sudo dpkg -i denyhosts_versie_all.deb

Nu moet er nog even een configuratie bestand aangemaakt worden. Kopieer hiervoor gewoon het voorbeeld bestand naar /etc en open het om het aan te passen met

$ sudo cp /usr/share/denyhosts/denyhosts.cfg-dist /etc/denyhosts.cfg $ sudo gedit /etc/denyhosts.cfg

Een paar dingetjes moeten hier worden aangepast:

  • Kies in het SECURE_LOG deel voor de /var/log/auth.log optie (haal de # ervoor weg en zet een # voor degene die het eerst niet had).
  • Bij LOCK_FILE moet je vanzelfsprekend de Debian LOCK_FILE kiezen (bla/denyhosts.pid).
  • Vul achter ADMIN_EMAIL de gebruikersnaam van degene die in z'n mail moet krijgen wat denyhosts te vertellen heeft (nieuwe geblokkeerde ip's bijvoorbeeld). Dit zal meestal je eigen gebruikersnaam zijn of die van de systeembeheerder.
Vervolgens moet er nog wat gekopieerd worden om het script automatisch in de achtergrond te laten draaien:

$ sudo cp /usr/share/denyhosts/daemon-control-dist /usr/share/denyhosts/daemon-control $ sudo gedit /usr/share/denyhosts/daemon-control

Zoek de regels die lijken op hieronder en verander ze daar in:

DENYHOSTS_BIN = "/usr/bin/denyhosts.py" DENYHOSTS_LOCK = "/var/run/denyhosts.pid" DENYHOSTS_CFG = "/etc/denyhosts.cfg"

Geef nu de volgende commando's om het programma bij het opstarten van de computer te starten:

$ sudo chmod 700 daemon-control $ cd /etc/init.d $ sudo ln -s /usr/share/denyhosts/daemon-control denyhosts $ sudo update-rc.d denyhosts defaults

En dan is je shizzle geconfigureerd. Rest enkel nog het programma aan te zetten met het volgende commando:

$ sudo ./denyhosts start

Dit hoef je dus bij de volgende reboot niet meer te doen. Je kunt ook rebooten om het programma te starten dus, maar dat is natuurlijk niet des Linuxs.

Nu ben je dus een beetje beschermd tegen mensen die telkens het verkeerde wachtwoord intypen. Het komt alleen natuurlijk ook wel eens voor dat je zelf je wachtwoord niet meer helemaal goed uit je vingers krijgt geschud. Je wilt dan natuurlijk niet zelf geblokkeerd worden. Om dit te voorkomen kun je een lijst van ip's maken die nooit geblokkeerd worden. Doe dit door het bestand /usr/share/denyhosts/data/allowed-hosts aan te maken met gedit of emacs of iets dergelijks en daarin de niet te blokkeren ip-adressen te zetten, elk op een eigen regel.

Pfioew, flink verhaal uiteindelijk, maar zeker worth the trouble.

Reacties:

Anonymous Anoniem had het volgende te zeggen:

DenyHost is zonder meer een van de meest handige scripts die ik op mijn server heb draaien. Gemiddeld logt het progje ongeveer twee tot drie attacks per dag, dus ik ben er erg happy mee.

vrijdag, februari 10, 2006 1:26:00 p.m.  

Plaats ook een reactie

<< Terug naar de hoofdpagina