DenyHosts kasutamine operatsioonisüsteemiga Debian Wheezy

Allikas: Imre kasutab arvutit

Sissejuhatus

DenyHosts http://denyhosts.sourceforge.net/ on Python keeles programmeeritud tarkvara, mis võimaldab logide analüüsi alusel tõkestada süsteemi sisenemist. Tavaliselt kasutatakse seda ssh serverile juurdepääsu takistamiseks.

Tööpõhimõte

DenyHosts piirab serveri protsessidele üle võrgu ligipääsu tcpwrapperi abil, st kirjutades juurde sissekandeid /etc/hosts.deny faili

# cat /etc/hosts.deny
...
# DenyHosts: Mon Apr 29 13:49:32 2013 | sshd: 10.19.121.131
sshd: 10.19.121.131
# DenyHosts: Mon Apr 29 14:08:35 2013 | sshd: 10.222.16.155
sshd: 10.222.16.155

Deemoni oma töötamise ajal loeb seadistusfailis näidatud logifaile ja avastab sealt ebaõnnestunud autentimiskatseid. Tundub, et logifaile jälgitakse reaalajas, vähemalt protsess istub neil küljes

# lsof -n | grep '/var/log/auth.log'
rsyslogd   1126       root    3w      REG              254,0   528981     754660 /var/log/auth.log
python    25722       root    5r      REG              254,0   528981     754660 /var/log/auth.log
# ps aux  | grep 25722 | grep -v grep
root     25722  0.0  1.3  52244 14160 ?        S    Jan19   4:36 python /usr/sbin/denyhosts --daemon --purge

Kui sellised katsed vastavad seadistusfailis kirjeldatud blokeerimise tingimustele, siis vastav ip aadress blokeeritakse. Tulemusena ei saa seadistatud aja jooksul vastavalt ip aadressilt uusi sisselogimise katseid teha sh õiget kasutajanime ja parooli teades vms viisil, nt ssh võtmega siseneda.

DenyHosts ei kasuta paketifiltrit.

Tarkvara paigaldamine

Tarkvara paigaldamiseks sobib öelda

# apt-get install denyhosts

ja failisüsteemi tekivad muuseas

  • /etc/denyhosts.conf - seadistusfail
  • /usr/sbin/denyhosts - daemon

Tarkvara seadistamine

DenyHosts sobib üldiselt vaikeväärtustega kasutamiseks, üle tuleks vaadata

  • Millisel puhul ligipääs piiratakse
  • Kui kauaks ligipääs piiratakse
  • Kuhu saadetakse ligipääsu piiramise kohta teade

Millisel puhul ligipääs piiratakse

Seadisusfailis /etc/denyhosts.conf kirjeldatakse lisaks vaikimisi seadistatud väärtustele nt

BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
...
AGE_RESET_INVALID=10d
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
..
DAEMON_SLEEP = 30s

kus

  • DENY_THRESHOLD_INVALID - süsteemis mitte eksisteeriva kontoga on lubatud teha viis proovi kümne päeva jooksul enne kui ligipääs blokeeritakse
  • DENY_THRESHOLD_VALID - süsteemis eksisteeriva kontoga on lubatud teha kümme proovi viie päeva jooksul enne kui ligipääs blokeeritakse
  • DAEMON_SLEEP - logifaile uuritakse iga 30 sekundi järel

Kui kauaks ligipääs piiratakse

PURGE_DENY = 2h
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

kus

  • PURGE_DENY - blokeerimisel toimub tõkestamine kaks tundi, seejärel blokeering eemaldatakse
  • DAEMON_PURGE - denyhosts protsess käib kord tunnis kontrollimas, kas millelgi blokeerimine tuleb lõpetada

Kuhu saadetakse ligipääsu piiramise kohta teade

Selliste parameetritega kirjeldatakse kuidas ja kuhu saata teateid

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report

Tarkvara käivitamine ja logi

DenyHosts käivitatakse käivitusskriptiga

# /etc/init.d/denyhosts start

mille tulemusena käivitatakse root kasutajana töötav protsess

root 23120  0.0  1.1  50144 12284 ?  S  14:18 0:08 python /usr/sbin/denyhosts --daemon --purge --config=/etc/denyhosts.conf

Töö käigus kirjutatakse sissekandeid logifailidesse, nt

# tail -f /var/log/denyhosts
2013-04-29 12:51:56,475 - denyhosts   : INFO     new denied hosts: ['10.222.16.155']
2013-04-29 13:28:00,354 - denyfileutil: INFO     purging entries older than: Mon Apr 29 13:23:00 2013
2013-04-29 13:28:00,418 - loginattempt: INFO     purging_hosts: ['10.19.121.131', '10.222.16.155']
...

Blokeeritud aadressilt pöördumised logitakse /var/log/auth.log faili sarnaselt

# tail -f /var/log/auth.log
Apr 29 15:07:09 vaatleja sshd[23384]: refused connect from 10.19.121.131 (10.19.121.131)
Apr 29 16:17:28 vaatleja sshd[23646]: refused connect from 10.19.121.131 (10.19.121.131)
Apr 29 17:33:25 vaatleja sshd[23907]: refused connect from 10.19.121.131 (10.19.121.131)
...

Whitelist kasutamine

Selleks, et mitte õigustatud kasutajate eest süsteemi soovimatult ära blokeerida võiks paigutada mõned ip aadressid /etc/hosts.allow faili, nt rida

# cat /etc/hosts.allow
...
sshd: 10.80.109.222

Hosti eemaldamine blokeeritud nimekirjast

  • Peateada denyhosts deemon
# /etc/init.d/denyhosts stop
  • Otsida ip aadress ja eemaldada
# egrep -r 1.1.2.3. /etc/hosts.deny /var/lib/denyhosts
  • Käivitada denyhosts deemon
# /etc/init.d/denyhosts start

Mitme DenyHosts eksemplari töö sünkroniseerimine

Kui DenyHosts tarkvara kasutatakse mitmetel arvutitel, siis saab neid panna oma nö andmebaase sünkronieerima üle võrgu. Eesmärgiga, et kui nö pahalane on ühe arvuti poolt identifitseeritud, on ta kõikjal blokeeritud.

Kasulikud lisamaterjalid