Ochrana SSH démona proti útokům (4)
Způsobů jak ochránit SSH démona proti útokům je mnoho. Jednou z dalších možností jak zabránit "brute force" útokům je využití modulů PAM (Pluggable Authentication Modules), konkrétně pak "auto blacklist" modulu pam_abl.
Jak to funguje?
Jednoduše řečeno - PAM je systém knihoven, které jednotlivé programy
(např. login
, su
, ...) volají v případě, když
je potřeba autentizovat (ověřit totožnost) uživatele. Jak už napovídá
název, PAM (Pluggable Authentication Modules) je vytvořen tak, že jej
lze snadno konfigurovat, takže je na správci jak si jej přizpůsobí
k obrazu svému.
My tedy do procesu autentizace jednoduše vložíme ještě výše zmíněný modul pam_abl, který poskytuje možnost automaticky přidat do black listu ty počítače (IP adresy nebo jejich názvy) a uživatele, kteří se opakovaně neúspěšně pokusili o přihlášení (jinak řečeno překročili limit neúspěšných přihlášení uvedený v konfiguračním souboru) do systému přes SSH protokol.
Tento způsob funguje trochu jinak než blokování s využitím iptables (např. pomocí sshdfilteru). Uživateli nezamezíme přístup k ssh démonu, ale veškeré jeho další pokusy o přihlášení do systému přes SSH protokol budou neúspěšné i kdyby zadal správné uživatelské jméno a heslo. Toto někomu nemusí vyhovovat, každopádně je to stejně účinná ochrana jako blokování přístupu s využítím IP filtru iptables. Můžeme nastavit i dobu po jejímž uplynutí bude záznam z black list databáze automaticky odstraněn, stejně jako tomu je i u sshdfilteru.
Modul pam_abl lze použít pro jakýkoliv program využívající pro autentizaci uživatele PAM, tzn. kromě SSH démona jej můžeme využít např. pro FTP démona vsftpd, pro blokování lokálně přihlašovaných uživatelů a podobně.
Nastavení
Dag Wieers nám opět ušetřil práci, takže instalace modulu pam_abl bude velice jednoduchá a pokud máte nastaven jeho repozitář RPMForge, tak vám pro instalaci bude stačit následující příkaz:
yum install pam_abl
Nejprve přidáme modul pam_abl do konfiguračního souboru, který využívá
SSH démon pro PAM autentizaci. Tento soubor se v CentOSu nazývá
/etc/pam.d/sshd
. Po jednoduché úpravě spočívající
v přidání druhého řádku týkajícího se modulu pam_abl bude tento
soubor vypadat následovně:
#%PAM-1.0 auth required pam_abl.so config=/etc/security/pam_abl.conf auth include system-auth account required pam_nologin.so account include system-auth password include system-auth session optional pam_keyinit.so force revoke session include system-auth session required pam_loginuid.so
Konfigurační soubor modulu pam_abl, který leží v souboru
/etc/security/pam_abl.conf
je součástí RPM balíčku
a jeho obsah vypadá následovně:
# /etc/security/pam_abl.conf # debug host_db=/var/lib/abl/hosts.db host_purge=2d host_rule=*:10/1h,30/1d user_db=/var/lib/abl/users.db user_purge=2d user_rule=!ondra:10/1h,30/1d
Direktiva host_db
a user_db
udává cestu
k Berkeley DB se seznamem blokovaných
počítačů a uživatelů. Direktivou host_purge
a
user_purge
se nastavuje doba po
kterou se daný počítač nebo uživatel bude blokovat. V tomto případě je
blokování nastaveno na dva dny. Direktivou host_rule
a user_rule
se nastavují
pravidla, kdy se začně počítač nebo uživatel blokovat.
host_rule=*:10/1h,30/1d
Výše uvedené pravidlo začne blokovat přihlášení z počítače ze kterého bude 10 neúspěšných pokusů o přihlášení v průběhu jedné hodiny nebo 30 neúspěšných pokusů v průběhu jednoho dne.
user_rule=!ondra:10/1h,30/1d
Výše uvedené pravidlo začne blokovat přihlášení jakéhokoliv uživatele (kromě uživatele ondra) na něhož bude 10 neúspěšných pokusů o přihlášení v průběhu jedné hodiny nebo 30 neúspěšných pokusů v průběhu jednoho dne.
Podrobnější popis pravidel, jejich syntaxi a další příklady pravidel naleznete v dokumentaci k modulu pam_abl.
Pokud máte vše správně nastavené, tak by se vám při překročení zadaného počtu
neúspěšných pokusů o přihlášení přes SSH protokol za danou časovou
jednotku měl v logu /var/log/secure
objevit
záznam podobný níže uvedenému:
Dec 15 18:23:54 tachecn pam_abl[8892]: Blocking access from www.tachec.org to service sshd, user ondra
Součástí RPM balíčku pam_abl je i stejnojmenný nástroj, který slouží k výpisu blokovaných počítačů z databáze a případně ke smazání počítačů či užavatelů (tedy ke zrušení blokování) z této databáze.
pam_abl -v Reading config from /etc/security/pam_abl.conf Failed users: ondra (1) Sat Dec 15 19:13:10 2007 Failed hosts: www.tachec.org (1) Sat Dec 15 19:13:10 2007
Vypíše seznam neúspěšných přihlášení včetne data a času, kdy k neúspěšnému přihlášení došlo.
Pokud bych chtěl zrušit blokování například pro celou doménu tachec.org,
tak to s pomocí příkazu pam_abl
provedu následovně:
pam_abl -v --okhost=*.tachec.org Reading config from /etc/security/pam_abl.conf Deleted 1 item