Omezení pokusů o zadání hesla v Linuxu pro ochranu kritických služeb

  • Konfigurace PAM modulů, jako jsou pam_faillock a pam_tally2, umožňuje blokovat účty po několika neúspěšných pokusech na Red Hatu, Debianu a Ubuntu.
  • Úpravou MaxAuthTries v sshd_config se omezí počet opakovaných pokusů na SSH připojení, což doplňuje zásady blokování na úrovni systému.
  • Soubory jako /etc/login.defs, /etc/shadow a nástroje jako chage a passwd spravují parametry platnosti hesla a globální parametry.
  • Moduly pam_cracklib a pam_pwquality zvyšují složitost hesla, čímž zabraňují vzniku slabých klíčů a jejich nezabezpečenému opětovnému použití.

Zabezpečení omezením pokusů o zadání hesla v Linuxu

Omezení počtu pokusů o zadání hesla v Linuxu Není to jen vrtoch paranoidní administrátorky; je to jedno z nejúčinnějších opatření k zastavení útoků hrubou silou a neoprávněného přístupu, a to jak v prostředí stolních počítačů, tak i serverů. Pokud váš počítač obsahuje citlivé informace nebo se připojuje k internetu, budete chtít tuto část systému zabezpečit. audit vaší místní sítě.

Kromě nastavení silného hesla, konfigurovat dočasné nebo trvalé zámky po několika selháních To je klíčové: zpomaluje to útočníky, generuje to více protokolů pro audit a umožňuje to kombinovat tuto ochranu s dalšími zásadami pro hesla (expirace, složitost, opětovné použití atd.). Pojďme se klidně, ale podrobně podívat na to, jak se to dělá v různých distribucích a na různých úrovních systému.

Zablokování účtu z důvodu neúspěšných pokusů o přihlášení na systémech Red Hat, CentOS a jejich derivátech

V distribucích založené na Red Hatu (RHEL, CentOS, Rocky, AlmaLinux…)Blokování účtu z důvodu neúspěšných pokusů je spravováno pomocí modulu PAM. pam_faillockTento modul řídí, kolik neúspěšných pokusů o přihlášení je povoleno, jak dlouho je účet uzamčen a kteří uživatelé jsou ovlivněni (včetně, pokud chcete, uživatele root).

Chcete-li tuto zásadu použít, je nutné upravit globální soubory PAM, obvykle /etc/pam.d/system-auth a v některých verzích také /etc/pam.d/password-authTyto soubory fungují jako šablony pro většinu autentizačních služeb v systému (přihlášení do konzole, sudo, SSH atd.).

Tyto soubory obsahují řádky podobné těmto v sekci auth y účet:

auth required pam_faillock.so preauth silent audit deny=2 unlock_time=120
auth pam_faillock.so authfail audit deny=2 unlock_time=120
account required pam_faillock.so

První linie jedná před skutečným ověřováním (preauth)Druhý se spustí, když selže ověření, a třetí je zodpovědný za kontrolu stavu uzamčení účtu během fáze účetÚpravou parametrů si můžete zásady přizpůsobit svým potřebám.

Nejběžnější parametry pam_faillock Zvuk:

  • audit: Umožňuje podrobné protokolování pokusů o přihlášení, takže v systémových protokolech zůstávají stopy (například v / var / log / zabezpečit).
  • popřít=2Toto nastavuje maximální počet neúspěšných pokusů o zadání hesla, než bude účet uzamčen. V tomto příkladu jsou to 2, ale můžete jej zvýšit (3, 5, 10…).
  • unlock_time=120: označuje dobu blokování v sekundách. Zde by to bylo 120 sekund (2 minuty), než bude účet automaticky znovu aktivován.
  • tichýPokud je přítomna, Neukazuje uživateli, že byl zablokovánJednoduše přestane přijímat přihlašovací údaje, čímž se systém stane pro útočníka méně „podrobným“.

Jedním důležitým detailem je, že ve výchozím nastavení kořen je z tohoto bloku vyloučenPokud chcete, aby se na něj vztahovala stejná pravidla, musíte přidat parametr even_deny_root v řádcích pam_faillock sekce auth. Tím se posílí zabezpečení, ale měli byste zvážit riziko ztráty přístupu, pokud uděláte příliš mnoho chyb.

Když je účet uzamčen a parametr nepoužíváte tichýSystém může zobrazit explicitní zprávy s upozorněním, že uživatel překročil povolený počet pokusů. To je užitečné v testovacích prostředích k ověření konfigurace, i když v produkčním prostředí je obvykle nejlepší neposkytovat příliš mnoho informací.

Chcete-li zobrazit neúspěšné pokusy o přihlášení konkrétního uživatele, můžete na systémech Red Hat použít příkaz faillock ukazující na účet, o který máte zájem:

faillock --user lionel

Tento příkaz ukazuje Kolik neúspěšných pokusů uživatel nashromáždil?, včetně použité IP adresy v případě SSH a dalších podrobností relevantních pro audit. Kromě toho si můžete kdykoli prohlédnout, co se objevuje v / var / log / zabezpečitkde budou tyto bezpečnostní události zaznamenávány.

omezit počet pokusů o zadání hesla v Linuxu

Zablokování účtu kvůli neúspěšným pokusům o přihlášení v Debianu a Ubuntu

V případě Debian, Ubuntu a derivátyLogika je podobná, ale použitý PAM modul se mění. Tradičně se používal pam_tally2 počítat neúspěšné pokusy a automaticky blokovat účty, ačkoli v moderních verzích se doporučuje migrovat na pam_faillockI tak je pam_tally2 stále velmi přítomná v mnoha průvodcích a prostředích.

Chcete-li v typickém Debianu použít zámek na základě počtu neúspěšných pokusů, obvykle upravíte soubor /etc/pam.d/common-authkterý definuje standardní ověřovací zásady pro většinu lokálních služeb. Můžete k němu přidat řádek podobný tomuto:

auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 audit even_deny_root root_unlock_time=600

S touto konfigurací systém Účet je zablokován po 3 neúspěšných pokusech.Pro běžné uživatele udržuje zámek 120 sekund a pro uživatele s oprávněním root 600 sekund. Navíc, pokud dojde k jakékoli chybě modulu (onerr=selhání), z bezpečnostních důvodů je přístup odepřen, nikoli povolen.

Hlavní parametry pam_tally2 Zvuk:

  • onerr=selháníPokud se vyskytne problém s načtením nebo aktualizací počítadla pokusů, ověření je odmítnuto, aby se zabránilo nechtěnému ponechání otevřených dveří.
  • popřít=3: Maximální počet neúspěšných pokusů před uzamčením účtu. Hodnota 3 je v praxi obvykle docela rozumná.
  • unlock_time=120: doba v sekundách, po kterou bude účet pro standardní uživatele uzamčen.
  • audit: zaznamenává informace o selhání ověření (v Debianu je to obvykle /var/log/auth.log).
  • even_deny_root: vynutí, aby se v tomto zamykacím systému započítával i root, což je třeba používat s opatrností.
  • root_unlock_time=600: specifický čas uzamčení pro root účet v sekundách, nezávislý na ostatních uživatelích.

Po aktivaci blokování se uživateli zobrazí zpráva, že jeho účet byl dočasně deaktivován z důvodu příliš velkého počtu neúspěšných pokusů o přihlášení. To umožňuje administrátorovi odhalit podezřelé chování a upozornit uživatele, že je něco v nepořádku.

Chcete-li zobrazit neúspěšné pokusy zaznamenané uživatelem pam_tally2 Pro konkrétního uživatele (například lionel) můžete použít:

pam_tally2 -u lionel

Tento příkaz zobrazuje počet nahromaděných selhání A umožňuje vám v případě potřeby ručně vynulovat počítadlo s dalšími možnostmi. Navíc, stejně jako v Red Hatu, máte vždy možnost si ho prohlédnout. /var/log/auth.log abyste si podrobněji prohlédli, co se stalo při každém pokusu o ověření.

Omezení pokusů o SSH pomocí MaxAuthTries

Jedním z nejběžnějších vstupních bodů na linuxových serverech je SSHProto je zásadní kontrolovat, kolik pokusů o ověření je povoleno na jedno připojení. A právě zde přichází na řadu daná politika. MaxAuthTries, který je nakonfigurován v souboru / etc / ssh / sshd_config ze serveru OpenSSH.

Myšlenka je jednoduchá: MaxAuthTries definuje maximální počet pokusů o ověření povolených na jedno SSH připojení.Pokud je tento limit překročen, server ukončí připojení a donutí útočníka zahájit novou relaci, aby mohl pokračovat v zkoušení kombinací, což výrazně zpomaluje automatizované útoky hrubou silou.

Pro konfiguraci stačí upravit konfigurační soubor:

sudo nano /etc/ssh/sshd_config

Dále vyhledejte nebo přidejte řádek takto:

MaxAuthTries 3

S touto hodnotou, Na jedno SSH připojení jsou povoleny pouze tři pokusy o ověření.Pokud uživatel udělá stejnou chybu vícekrát, démon sshd ho odhlásí. Aby se změna projevila, je nutné službu znovu načíst nebo restartovat, například pomocí:

sudo systemctl restart sshd

MaxAuthTries nenahrazuje PAM moduly jako pam_tally2 nebo pam_faillock, ale spíše pracuje paralelněSSH server řídí, kolik po sobě jdoucích pokusů je povoleno v jedné relaci, zatímco PAM uchovává globální počet pro každého uživatele a může jeho účet zablokovat na úrovni systému.

Kromě MaxAuthTries je vhodné kombinovat další bezpečnostní opatření SSH, aby byla služba mnohem robustnější:

  • Změňte výchozí portPřestaňte používat port 22 a přesuňte SSH na méně zřejmý port, což pomůže odfiltrovat mnoho základních automatických skenů.
  • Používejte veřejné klíče místo pouhých heselAutentizace pomocí SSH klíčů eliminuje problém slabých hesel a je mnohem odolnější vůči útokům hrubou silou.
  • Omezení zdrojů pomocí firewallu nebo konfigurace DMZPovolení SSH pouze z konkrétních IP adres nebo síťových rozsahů přidává velmi účinnou bariéru na úrovni sítě.

PAM Linux

Omezení lokálních pokusů o ověření pomocí PAM

Kromě SSH, lokální ověřování (konzole, TTY, sudo, grafický správce zobrazení) je také spravován pomocí PAM. Například v Debianu a Ubuntu soubor /etc/pam.d/common-auth Je to srdce této konfigurace a v systémech Red Hat hraje jeho roli systémové ověřování (a někdy i ověřování heslem).

Kromě specializovaných blokovacích modulů, jako jsou pam_faillock nebo pam_tally2, některé distribuce umožňují omezit pokusy o přihlášení a jejich časy přímo prostřednictvím login.defsV tomto souboru, který se nachází v /etc/login.defsJsou deklarovány hodnoty, jako například následující:

  • PŘIHLÁŠENÍ_OPĚTOVNÉ_POKUSY: maximální počet povolených pokusů při přihlašovacím řádku před přerušením procesu.
  • ČASOVÝ OUT_PŘIHLÁŠENÍ: maximální doba v sekundách, po kterou může přihlašovací relace čekat na vstup uživatele.

Například, pokud upravíte PŘIHLÁŠENÍ_OPĚTOVNÉ_POKUSY S limitem 3 hesel bude mít uživatel pouze tři pokusy o zadání hesla v rámci jedné přihlašovací relace, než systém tento pokus ukončí a donutí ho restartovat proces. Účet se tím sice nezamkne, ale ano. omezuje počet pokusů na relaci.

Ve stejném souboru login.defs Můžete také upravit další relevantní bezpečnostní parametry, jako například:

  • PASS_MAX_DAYS: maximální počet dní, po které lze heslo používat, než je nutné jej změnit.
  • PASS_MIN_DAYSMinimální počet dní mezi změnami hesla, aby se zabránilo příliš častým a „řetězovým“ změnám.
  • VĚK_VAROVÁNÍ_PROHLÁŠENÍ: několik dní před vypršením platnosti hesla, aby uživatel měl čas reagovat.
  • PASS_MIN_LEN y PASS_MAX_LENminimální a maximální délka hesla.
  • VŽDY_PROPUSTIT_VAROVÁNÍ: varuje, pokud heslo nesplňuje určitá kritéria síly.
  • POKUSY_PRO_ZMĚNU_PROHLÁŠENÍ: maximální počet pokusů o změnu hesla, pokud je nové heslo považováno za příliš jednoduché.
  • ZPŮSOB_ŠIFROVÁNÍ: hašovací algoritmus pro použití pro hesla (dnes je to obvyklé SHA-512, označeno jako $ 6 $).

Tyto směrnice se týkají především nových uživatelů Ty se vytvářejí po úpravě souboru login.defs, takže se jedná o pohodlný způsob, jak stanovit základní zásady pro celou organizaci.

Správa pokusů a expirace pomocí /etc/shadow a příkazu change

Soubor / etc / shadow Zde systém ukládá šifrovaná hesla lokálních uživatelů spolu se všemi informacemi o platnosti. I když se hesla denně ručně nemění, pochopení jejich struktury výrazně pomáhá při auditu a zdokonalování bezpečnostních zásad.

V každém řádku / etc / shadow Zobrazí se několik polí oddělených dvojtečkami. Nejrelevantnější pro naše zásady jsou:

  • Uživatelské jméno: identifikuje účet, ke kterému patří zbývající pole.
  • Šifrované heslo: je uloženo jako $id$salt$hashedKde $id$ označuje algoritmus (1 dolar MD5, Blowfish za 2 roky/za 2 roky, 5 dolarů SHA-256, 6 dolarů SHA-512), následovaná solí a hašišem.
  • Poslední změna hesla: počet dní od 1. ledna 1970 (epocha), kdy byla naposledy upravena.
  • Minimální a maximální počet dní používáníŘídí, kdy lze heslo znovu změnit a kdy jeho platnost vyprší.
  • Dny oznámení o vypršení platnostiKolik dní před vypršením platnosti se začne uživateli zobrazovat upozornění.
  • Dny nečinnostiJak dlouho trvá, než je účet po vypršení platnosti hesla zcela deaktivován?
  • Absolutní datum expirace účtu: od roku 1970 také ve formátu dnů, označuje okamžik, kdy se daný uživatel již nemůže přihlásit.

Pro správu těchto parametrů bez přímého kontaktu s /etc/shadow se používá následující příkaz: Chage (změna věku), což umožňuje upravit heslo a platnost účtu pro konkrétní uživatele.

Některé běžné možnosti pro Chage Zvuk:

  • -d, –poslední den: nastavuje den poslední změny hesla (ve formátu epoch nebo s čitelným datem).
  • -E, –platnost vyprší: nastavuje datum, od kterého účet vyprší.
  • -I, –neaktivní: označí účet jako neaktivní po určitém počtu dní od vypršení platnosti hesla.
  • -m, –mindny: definuje minimální počet dní mezi změnami hesla.
  • -M, –maxdnů: označuje maximální počet dní, po které heslo zůstává platné.
  • -W, –dny varování: nastavuje, kolik dní před vypršením platnosti se má začít zobrazovat upozornění.
  • -l, –seznam: zobrazuje aktuální stav vypršení platnosti uživatele.

Například pro kontrolu informací o vypršení platnosti uživatele pepe Lze jej provést:

chage -l pepe

Východ bude ukazovat datum poslední změny, zda platnost hesla vypršela, neaktivita a minimální a maximální počet dní...mimo jiné údaje. Pomocí tohoto nástroje můžete zásady aplikovat jednotlivě, uživatele po uživateli nebo ve skriptech, které zpracovávají celé skupiny účtů.

Zásady pro složitost hesel s pam_cracklib a pam_pwquality

Omezení pokusů o zadání hesla je skvělé, ale pokud jsou hesla například „123456“ nebo „qwerty“, daleko se nedostanete. Proto je to zásadní. vynucení silných hesel pomocí PAM modulů, jako například pam_cracklib a v novějších verzích, pam_pwquality.

Modul pam_pwquality Jedná se o vývojový stupeň cracklibu a integruje se s knihovnami jako například libpwquality ověřit, zda hesla nejsou ve slovnících, zda nejsou příliš krátká a zda neopakují jednoduché vzory ani osobní údaje uživatele. Je nativně zahrnut v prostředích založených na RHEL a lze jej nainstalovat v Debianu/Ubuntu pomocí balíčků jako například libpam-cracklib y libpam-pwquality.

Po instalaci se hlavní konfigurace obvykle provádí v souboru /etc/security/pwquality.confkde můžete definovat parametry složitosti, jako například:

  • difok: počet znaků, které se musí lišit od předchozího hesla.
  • minlen: minimální přijatelná délka nového hesla.
  • dcredit, ukreditovat, lkredit, okreditovatPoděkování za zahrnutí číslic, velkých písmen, malých písmen a dalších znaků.
  • minclassminimální požadovaný počet různých tříd znaků (malá písmena, velká písmena, číslice, symboly).
  • maxrepeat: maximální povolený počet po sobě jdoucích identických znaků.
  • maxclassrepeat: maximální počet po sobě jdoucích znaků stejné třídy.
  • gecoscheck: kontroluje, zda heslo neobsahuje slova z pole GECOS (komentář) uživatele v souboru /etc/passwd.
  • diktátorská cesta: cesta ke slovníku, který se používá ke kontrole, zda je heslo součástí známého slova.
  • BADWORDSseznam slov, která jsou výslovně zakázána.

Systém úvěry Je obzvláště flexibilní. V podstatě heslo získává kredity za zahrnutí různých znaků; tyto kredity mohou kompenzovat mírně kratší délku. Například s minlen=10 y dcredit=2Heslo o délce 8 znaků se 2 číslicemi by mohlo filtrem projít, protože přidává 2 kredity navíc. Pokud však definujete záporné kredity, budete potřebovat alespoň jeden záporný znak (například dcredit=-1 (vyžaduje alespoň jednu číslici, bez výjimek).

s minclass Heslo může obsahovat několik různých tříd. Hodnota 2 například vynutí kombinaci písmen a číslic nebo písmen a symbolů atd. minclass=4 Vyžadovalo by to současné používání malých písmen, velkých písmen, číslic a speciálních znaků, což je v náročných firemních zásadách velmi typické.

Nástroje jako pwscore Umožňují otestovat sílu hesla podle definovaných zásad. Když je heslo předáno pwscoreTo vám řekne, zda klíč splňuje požadavky, a pokud ne, jaké pravidlo porušuje (nedostatečná délka, příliš jednoduchý, příliš podobný předchozímu atd.).

Konfigurace robustních politik v Debianu a Ubuntu pomocí pam_cracklib

V systémech Debian/Ubuntu je velmi běžné používat pam_cracklib (nebo pwquality přes PAM) pro vynucení zásad hesel. Klíčový soubor je zde /etc/pam.d/common-password, který definuje, jak jsou změny hesel spravovány pro uživatele systému.

Než se čehokoli dotknete, je dobrým zvykem si vytvořit záložní kopii souboru:

sudo cp /etc/pam.d/common-password /root/

Pak jej můžete upravit ve svém oblíbeném textovém editoru (nano, vim atd.) s oprávněními superuživatele. Uvnitř najdete řádek podobný tomuto:

password requisite pam_cracklib.so retry=3 minlen=8 difok=3

Zde jsou definovány parametry, jako například následující:

  • opakování: počet pokusů, které má uživatel povoleno změnit heslo, než se změna nezdaří.
  • minlenminimální délka hesla.
  • difok: počet znaků, které se musí lišit od předchozího hesla.
  • ukreditovat, lkredit, dcredit, okreditovat: kladné nebo záporné kredity pro velká písmena, malá písmena, číslice a další znaky.

Například poměrně náročná politika by mohla být:

password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-3 lcredit=-3 dcredit=-3 ocredit=-3

S tímto nastavením Každé nové heslo musí mít alespoň 12 znakůHeslo se musí lišit alespoň o 3 znaky od předchozího a musí obsahovat alespoň 3 velká písmena, 3 malá písmena, 3 číslice a 3 symboly. Je to velmi přísné pravidlo, ale extrémně účinné proti triviálním heslům.

Jakmile změníte zásady, můžete si je otestovat změnou vlastního hesla pomocí:

sudo passwd

Pokud heslo nesplňuje požadavky, systém zobrazí zprávy s uvedením důvodu: příliš krátké, podobné slovníku, nadměrné opakování znaků atd. Jakmile heslo splňuje zásady, změna se bez problémů projeví.

Kromě zpřísnění zásad pro nové změny Debian a Ubuntu umožňují vynutit stávajícím uživatelům změnu hesla přizpůsobit se novým pravidlům. Příkazem:

passwd -e USUARIO

Heslo daného uživatele je označeno jako vypršené a při dalším přihlášení bude muset nastavit nové heslo, které bude splňovat aktuální zásady. Platnost hesla můžete také globálně ovládat pomocí:

passwd -w 5 -x 30 USUARIO

kde -x 30 stanoví maximální platnost hesla 30 dní a -w 5 Díky tomu vás systém začne upozorňovat 5 dní před datem vypršení platnosti. Pokud přidáte -já 1:

passwd -w 5 -x 30 -i 1 USUARIO

Účet bude označen jako neaktivní, pokud si uživatel nezmění heslo. jeden den po jeho vypršení, což donutí administrátora zasáhnout a znovu jej aktivovat.

Ačkoli se rotace hesel často doporučuje již léta, moderní bezpečnostní směrnice (například směrnice NIST) tuto praxi opravňují: Je vhodnější volit dlouhá a složitá hesla a systémy dvoufaktorového ověřování., spíše než vynucovat příliš časté změny, které nakonec generují předvídatelné klíče.

Pečlivě nakonfigurujte moduly PAM (pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) a klíčové soubory, jako například /etc/pam.d/common-auth, /etc/pam.d/common-password, /etc/login.defs, / etc / ssh / sshd_config a pochopit, jak se tato rozhodnutí odrážejí v / etc / shadowTo představuje rozdíl mezi „standardním“ systémem a skutečně odolným prostředím proti neoprávněnému přístupu a útokům hrubou silou.

nmap
Související článek:
Auditujte svou lokální síť pomocí Nmapu a Wiresharku krok za krokem

Přidat jako preferovaný zdroj