Ograničite pokušaje zadavanja lozinke na Linuxu kako biste zaštitili ključne usluge.

  • Konfiguriranje PAM modula poput pam_faillock i pam_tally2 omogućuje vam blokiranje računa nakon nekoliko neuspjelih pokušaja na Red Hatu, Debianu i Ubuntuu.
  • Prilagođavanje MaxAuthTries u sshd_config ograničava ponovne pokušaje po SSH vezi, nadopunjujući pravila blokiranja na razini sustava.
  • Datoteke poput /etc/login.defs, /etc/shadow i alati poput chage i passwd upravljaju istekom lozinke i globalnim parametrima.
  • Moduli pam_cracklib i pam_pwquality povećavaju složenost lozinki, sprječavajući slabe ključeve i nesigurnu ponovnu upotrebu.

Sigurnost ograničavanjem pokušaja zadavanja lozinke u Linuxu

Ograničite pokušaje unosa lozinke u Linuxu To nije samo hir paranoičnih administratora; to je jedna od najučinkovitijih mjera za zaustavljanje napada grubom silom i neovlaštenog pristupa, kako u okruženjima stolnih računala tako i na poslužiteljima. Ako vaše računalo sadrži osjetljive podatke ili se spaja na internet, poželjet ćete osigurati ovaj dio sustava. revidirajte svoju lokalnu mrežu.

Osim postavljanja jake lozinke, konfigurirajte privremene ili trajne blokade nakon nekoliko kvarova Ovo je ključno: usporava napadače, generira više logova za reviziju i omogućuje vam kombiniranje ove zaštite s drugim pravilima o lozinkama (istek, složenost, ponovna upotreba itd.). Pogledajmo, mirno, ali detaljno, kako se to radi u različitim distribucijama i na različitim razinama sustava.

Zaključavanje računa zbog neuspjelih pokušaja prijave na Red Hat, CentOS i derivate

U distribucijama bazirano na Red Hatu (RHEL, CentOS, Rocky, AlmaLinux…)Blokiranje računa zbog neuspjelih pokušaja upravlja se PAM modulom pam_faillockOvaj modul kontrolira koliko je neuspjelih pokušaja prijave dopušteno, koliko dugo je račun zaključan i koji su korisnici pogođeni (uključujući, ako želite, root korisnika).

Da biste primijenili ovu politiku, morate urediti globalne PAM datoteke, obično /etc/pam.d/system-auth a u nekim verzijama i /etc/pam.d/password-authOve datoteke služe kao predlošci za većinu servisa za autentifikaciju na sustavu (prijava u konzolu, sudo, SSH itd.).

Ove datoteke sadrže retke slične ovim, unutar odjeljka auth y račun:

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

Prva linija djeluje prije stvarne autentifikacije (preauth)Drugi se pokreće kada autentifikacija ne uspije, a treći je odgovoran za provjeru statusa zaključavanja računa tijekom faze računPromjenom parametara možete prilagoditi pravila svojim potrebama.

Najčešći parametri pam_faillock zvuk:

  • revizijaOmogućuje detaljno zapisivanje pokušaja prijave, tako da se tragovi ostavljaju u sistemskim zapisnicima (na primjer, u /var/log/secure).
  • poricanje=2Ovim se postavlja maksimalni broj neuspjelih pokušaja unosa lozinke prije nego što se račun zaključa. U ovom primjeru to je 2, ali možete ga povećati (3, 5, 10…).
  • vrijeme_otključavanja=120: označava vrijeme blokiranja u sekundama. Ovdje bi to bilo 120 sekundi (2 minute) dok se račun automatski ne ponovno aktivira.
  • šutiAko je prisutno, Ne pokazuje korisniku da je blokiranJednostavno prestaje prihvaćati prijave, čineći sustav manje "opširnim" za napadača.

Jedan važan detalj je da, prema zadanim postavkama, korijen je isključen iz ovog blokaAko želite da se ista pravila primjenjuju i na njega, morate dodati parametar čak_odbija_korjenjenje u retcima pam_faillock odjeljka auth. To jača sigurnost, ali trebali biste procijeniti rizik gubitka pristupa ako napravite previše pogrešaka.

Kada je račun zaključan i ne koristite parametar šutiSustav može prikazati eksplicitne poruke upozorenja da je korisnik prekoračio dopušteni broj pokušaja. To je korisno u testnim okruženjima za provjeru konfiguracije, iako je u produkciji obično najbolje ne davati previše informacija.

Za pregled neuspjelih pokušaja prijave određenog korisnika, na Red Hat sustavima možete koristiti naredbu zaključavanje pokazujući na račun koji vas zanima:

faillock --user lionel

Ova naredba prikazuje Koliko je neuspjelih pokušaja korisnik sakupio?, uključujući IP adresu korištenu u slučaju SSH-a i ostale detalje relevantne za reviziju. Osim toga, uvijek možete pregledati što se pojavljuje u /var/log/securegdje će se ovi sigurnosni događaji zabilježiti.

Ograničite pokušaje zadavanja lozinke u Linuxu

Zaključavanje računa zbog neuspjelih pokušaja prijave u Debianu i Ubuntuu

U slučaju Debian, Ubuntu i derivatiLogika je slična, ali se mijenja korišteni PAM modul. Tradicionalno se koristio pam_tally2 brojati neuspješne pokušaje i automatski blokirati račune, iako se u modernim verzijama preporučuje migracija na pam_faillockUnatoč tome, pam_tally2 je i dalje vrlo prisutna u mnogim vodičima i okruženjima.

Za primjenu zaključavanja na temelju broja neuspjelih pokušaja u tipičnom Debianu obično se uređuje datoteka /etc/pam.d/common-authkoji definira standardnu ​​politiku autentifikacije za većinu lokalnih usluga. Možete mu dodati redak poput ovog:

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

S ovom konfiguracijom, sustav Račun je blokiran nakon 3 neuspješna pokušaja.Održava zaključavanje 120 sekundi za obične korisnike i 600 sekundi za root korisnike. Nadalje, ako se dogodi bilo kakva greška s modulom (onerr=neuspjeh), iz sigurnosnih razloga pristup je odbijen umjesto dopušten.

Glavni parametri pam_tally2 zvuk:

  • onerr=neuspjehAko postoji problem s čitanjem ili ažuriranjem brojača pokušaja, autentifikacija se odbija kako bi se izbjeglo slučajno ostavljanje vrata otvorenima.
  • poricanje=3: Maksimalan broj neuspjelih pokušaja prije nego što se račun zaključa. Vrijednost 3 je obično sasvim razumna u praksi.
  • vrijeme_otključavanja=120: vrijeme u sekundama koliko će račun ostati zaključan za standardne korisnike.
  • revizija: bilježi informacije o neuspješnoj autentifikaciji (u Debianu je to obično /var/log/auth.log).
  • čak_odbija_korjenjenje: prisiljava da se root također računa u ovom sustavu zaključavanja, što treba koristiti s oprezom.
  • root_unlock_time=600: specifično vrijeme zaključavanja za root račun, u sekundama, neovisno o ostalim korisnicima.

Kada se blokada aktivira, korisnik će vidjeti poruku koja označava da je njegov račun privremeno onemogućen zbog previše neuspjelih pokušaja prijave. To administratoru omogućuje otkrivanje sumnjivog ponašanja i upozorava korisnika da nešto nije u redu.

Za pregled neuspjelih pokušaja koje je zabilježio pam_tally2 Za određenog korisnika (na primjer, lionel), možete koristiti:

pam_tally2 -u lionel

Ova naredba prikazuje broj akumuliranih kvarova I omogućuje vam ručno resetiranje brojača ako je potrebno, s dodatnim opcijama. Nadalje, baš kao u Red Hatu, uvijek imate mogućnost pregleda /var/log/auth.log kako biste detaljnije vidjeli što se dogodilo u svakom pokušaju autentifikacije.

Ograničite SSH pokušaje s MaxAuthTries

Jedna od najčešćih ulaznih točaka na Linux serverima je SSHZato je ključno kontrolirati koliko je pokušaja autentifikacije dopušteno po vezi. Tu na scenu stupa politika. MaxAuthTries, što je konfigurirano u datoteci / Etc / ssh / sshd_config s OpenSSH poslužitelja.

Ideja je jednostavna: MaxAuthTries definira maksimalan broj dopuštenih pokušaja autentifikacije po SSH vezi.Ako se prekorači ovo ograničenje, poslužitelj prekida vezu, prisiljavajući napadača da započne novu sesiju kako bi nastavio isprobavati kombinacije, što značajno usporava automatizirane brute-force napade.

Za konfiguraciju jednostavno uredite konfiguracijsku datoteku:

sudo nano /etc/ssh/sshd_config

Zatim pronađite ili dodajte redak poput ovog:

MaxAuthTries 3

S ovom vrijednošću, Dopuštena su samo tri pokušaja autentifikacije po SSH vezi.Ako korisnik napravi istu grešku više puta, sshd daemon ga odjavljuje. Da bi promjena stupila na snagu, uslugu je potrebno ponovno učitati ili ponovno pokrenuti, na primjer s:

sudo systemctl restart sshd

MaxAuthTries ne zamjenjuje PAM module kao što su pam_tally2 ili pam_faillock, već radi paralelnoSSH poslužitelj kontrolira koliko je uzastopnih pokušaja dopušteno u jednoj sesiji, dok PAM vodi globalni broj po korisniku i može blokirati njihov račun na razini sustava.

Uz MaxAuthTries, preporučljivo je kombinirati i druge SSH sigurnosne mjere kako bi usluga bila znatno robusnija:

  • Promijenite zadani portPrestanak korištenja porta 22 i premještanje SSH-a na manje očigledan port pomaže u filtriranju mnogih osnovnih automatskih skeniranja.
  • Koristite javne ključeve umjesto samo lozinkiAutentifikacija pomoću SSH ključeva eliminira problem slabih lozinki i puno je robusnija od napada grubom silom.
  • Ograničite izvore pomoću vatrozida ili konfigurirajte DMZDopuštanje SSH-a samo s određenih IP adresa ili mrežnih raspona dodaje vrlo učinkovitu barijeru na razini mreže.

PAM Linux

Ograničite pokušaje lokalne autentifikacije pomoću PAM-a

Osim SSH-a, lokalna autentifikacija (konzola, TTY-i, sudo, upravitelj grafičkog prikaza) također se upravlja pomoću PAM-a. U Debianu i Ubuntuu, na primjer, datoteka /etc/pam.d/common-auth To je srce ove konfiguracije, a u Red Hat sustavima njegovu ulogu igra autentifikacija sustava (a ponekad i autentifikacija lozinkom).

Uz namjenske module za blokiranje poput pam_faillock ili pam_tally2, neke distribucije omogućuju ograničavanje pokušaja i vremena prijave izravno putem prijava.defsU ovoj datoteci, koja se nalazi u /etc/login.defsDeklarisane su vrijednosti poput sljedećih:

  • PONOVNI POKUŠAJI PRIJAVE: maksimalan broj dopuštenih ponovnih pokušaja na upitu za prijavu prije prekida postupka.
  • VRIJEME_PREKIDANJA_PRIJAVE: maksimalno vrijeme, u sekundama, koliko sesija prijave smije čekati korisnički unos.

Na primjer, ako prilagodite PONOVNI POKUŠAJI PRIJAVE S ograničenjem od 3 lozinke, korisnik će imati samo tri pokušaja unosa lozinke u jednoj sesiji prijave prije nego što sustav zatvori taj pokušaj, prisiljavajući korisnika da ponovno pokrene postupak. To ne zaključava račun per se, ali ga ipak... ograničava pokušaje po sesiji.

U istoj datoteci prijava.defs Također možete prilagoditi i druge relevantne sigurnosne parametre, kao što su:

  • PASS_MAX_DAYS: maksimalan broj dana koliko se lozinka može koristiti prije nego što se mora promijeniti.
  • PASS_MIN_DAYS: minimalni broj dana između promjena lozinke, kako bi se izbjegle prečeste i "lančane" promjene.
  • PASS_WARN_AGE: dana obavijesti prije isteka lozinke, kako bi korisnik imao vremena reagirati.
  • PASS_MIN_LEN y PASS_MAX_LEN: minimalna i maksimalna duljina lozinke.
  • PASS_ALWAYS_WARN: upozorava kada lozinka ne zadovoljava određene kriterije jačine.
  • PROLAZ_PROMJENA_POKUŠAJA: maksimalan broj pokušaja promjene lozinke ako se nova lozinka smatra previše jednostavnom.
  • METODA_ŠIFRIRANJA: algoritam za hashiranje koji se koristi za lozinke (danas je to uobičajeno SHA-512, označeno kao 6 USD).

Ove direktive prvenstveno utječu novih korisnika Oni se stvaraju nakon prilagodbe login.defs datoteke, pa je to prikladan način za uspostavljanje osnovne politike za cijelu organizaciju.

Upravljanje pokušajima i istekom pomoću /etc/shadow i naredbe change

Datoteka / etc / shadow Ovdje sustav pohranjuje šifrirane lozinke lokalnih korisnika, zajedno sa svim informacijama o isteku. Iako se ne mijenjaju ručno na dnevnoj bazi, razumijevanje njihove strukture uvelike pomaže u reviziji i poboljšanju sigurnosnih politika.

U svakom retku / etc / shadow Pojavit će se nekoliko polja, odvojenih dvotočkama. Najrelevantnija za naše politike su:

  • Korisničko ime: identificira račun kojem pripadaju ostala polja.
  • Šifrirana lozinka: pohranjeno je kao $id$salt$hashed, gdje $id$ označava algoritam (1 USD MD5, Blowfish 2a$/2$ y$, 5 dolara SHA-256, 6 dolara SHA-512), nakon čega slijede sol i hašiš.
  • Posljednja promjena lozinke: broj dana od 1. siječnja 1970. (epoha) kada je zadnji put izmijenjeno.
  • Minimalni i maksimalni broj dana korištenjaOni kontroliraju kada se lozinka može ponovno promijeniti i kada ističe.
  • Dani isteka obavijestiKoliko dana prije isteka počinje obavještavati korisnika.
  • Dani neaktivnostiNakon isteka lozinke, koliko je vremena potrebno da se račun potpuno deaktivira?
  • Apsolutni datum isteka računa: također u formatu dana od 1970., označava trenutak kada prijava više nije dopuštena za tog korisnika.

Za upravljanje ovim parametrima bez izravnog dodirivanja /etc/shadow, koristi se sljedeća naredba: mijenjati (promjena dobi), što vam omogućuje podešavanje isteka lozinke i računa za određene korisnike.

Neke uobičajene opcije za mijenjati zvuk:

  • -d, –zadnji dan: postavlja dan posljednje promjene lozinke (u formatu dana od epohe ili s čitljivim datumom).
  • -E, – isteći: postavlja datum od kojeg račun istječe.
  • -Ja, –neaktivan: označava račun kao neaktivan nakon određenog broja dana od isteka lozinke.
  • -m, –mindani: definira minimalni broj dana između promjena lozinke.
  • -M, –maks. dana: označava maksimalni broj dana tijekom kojih lozinka ostaje važeća.
  • -W, –dani upozorenja: postavlja koliko dana prije isteka će početi slati obavijesti.
  • -l, –lista: prikazuje trenutni status isteka korisnika.

Na primjer, za provjeru podataka o isteku korisnika Pepe Može se izvršiti:

chage -l pepe

Izlaz će naznačiti datum posljednje promjene, istek lozinke ili ne, neaktivnost te minimalni i maksimalni broj dana...između ostalih podataka. Pomoću ovog alata možete primjenjivati ​​pravila pojedinačno, za svakog korisnika pojedinačno ili u skriptama koje obrađuju cijele grupe računa.

Pravila složenosti lozinki s pam_cracklib i pam_pwquality

Ograničavanje pokušaja unosa lozinke je odlično, ali ako su lozinke nešto poput "123456" ili "qwerty", nećete daleko stići. Zato je to ključno. prisilno korištenje jakih lozinki korištenjem PAM modula kao što su pam_cracklib i, u novijim verzijama, pam_pwquality.

Modul pam_pwquality To je evolucija crackliba i integrira se s bibliotekama kao što su libpwquality kako bi se provjerilo da lozinke nisu u rječnicima, da nisu prekratke i da ne ponavljaju jednostavne uzorke ili osobne podatke korisnika. Izvorno je uključen u okruženja temeljena na RHEL-u i može se instalirati u Debian/Ubuntu pomoću paketa kao što su libpam-cracklib y libpam-pwquality.

Nakon instalacije, glavna konfiguracija se obično vrši u datoteci /etc/security/pwquality.confgdje možete definirati parametre složenosti kao što su:

  • difok: broj znakova koji se mora razlikovati od prethodne lozinke.
  • minlen: minimalna prihvatljiva duljina za novu lozinku.
  • dcredit, ucredit, lkredit, okreditiratiZasluge za uključivanje znamenki, velikih slova, malih slova i ostalih znakova.
  • minclass: minimalni potreban broj različitih klasa znakova (mala slova, velika slova, znamenke, simboli).
  • maxrepeat: maksimalan dopušteni broj uzastopnih identičnih znakova.
  • maxclassrepeat: maksimalan broj uzastopnih znakova iste klase.
  • gecoscheck: provjerava da lozinka ne sadrži riječi iz GECOS (komentar) polja korisnika u /etc/passwd.
  • dictpath: put do rječnika koji se koristi za provjeru je li lozinka dio poznate riječi.
  • loše riječi: popis riječi koje su izričito zabranjene.

Sistem krediti Posebno je fleksibilna. U osnovi, lozinka dobiva bodove za uključivanje raznih znakova; ti bodovi mogu kompenzirati nešto kraću duljinu. Na primjer, s minlen=10 y dcredit=2Lozinka od 8 znakova s ​​2 znamenke mogla bi proći filtar jer dodaje 2 dodatna kredita. Međutim, ako definirate negativne kredite, potreban vam je barem jedan negativni znak (na primjer, dcredit=-1 (potrebna je barem jedna znamenka, bez iznimki).

s minclass Možete zahtijevati da lozinka uključuje nekoliko različitih klasa. Vrijednost 2 nameće, na primjer, kombinaciju slova i brojeva ili slova i simbola itd. minklasa=4 To bi zahtijevalo istovremenu upotrebu malih slova, velikih slova, znamenki i posebnih znakova, što je vrlo tipično za zahtjevne korporativne politike.

Alati poput pwscore Omogućuju vam testiranje jačine lozinke u odnosu na definirane politike. Kada se lozinka propusti pwscoreOvo vam govori ispunjava li ključ zahtjeve ili ne i, ako ne, koje pravilo krši (nedovoljna duljina, prejednostavan, presličan prethodnom itd.).

Konfigurirajte robusne politike na Debianu i Ubuntuu pomoću pam_cracklib

U Debian/Ubuntu sustavima vrlo je uobičajeno koristiti pam_cracklib (ili pwquality putem PAM-a) za provođenje pravila o lozinkama. Ključna datoteka ovdje je /etc/pam.d/common-password, koji definira kako se upravlja promjenama lozinki za korisnike sustava.

Prije nego što išta dirate, dobra je praksa napraviti sigurnosnu kopiju datoteke:

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

Zatim ga možete urediti svojim omiljenim uređivačem teksta (nano, vim, itd.) s privilegijama superkorisnika. Unutra ćete pronaći redak sličan ovome:

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

Ovdje su definirani parametri kao što su sljedeći:

  • ponovni pokušaj: broj pokušaja dopuštenih korisniku prilikom promjene lozinke prije nego što promjena ne uspije.
  • minlen: minimalna duljina lozinke.
  • difok: broj znakova koji se mora razlikovati od prethodne lozinke.
  • ucredit, lkredit, dcredit, okreditiratipozitivni ili negativni bodovi za velika slova, mala slova, znamenke i ostale znakove.

Na primjer, prilično zahtjevna politika mogla bi biti:

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

Ovim postavljanjem, Svaka nova lozinka mora imati najmanje 12 znakovaLozinka se mora razlikovati za najmanje 3 znaka od prethodne i sadržavati najmanje 3 velika slova, 3 mala slova, 3 znamenke i 3 simbola. To je vrlo strogo pravilo, ali izuzetno učinkovito protiv trivijalnih lozinki.

Nakon što promijenite pravila, možete ih testirati promjenom vlastite lozinke pomoću:

sudo passwd

Ako lozinka ne zadovoljava uvjete, sustav će prikazati poruke koje navode razlog: prekratka, slična riječi iz rječnika, prekomjerno ponavljanje znakova itd. Nakon što lozinka bude u skladu s pravilima, promjena će se primijeniti bez problema.

Osim što pooštravaju politiku za nove promjene, Debian i Ubuntu dopuštaju prisiliti postojeće korisnike da promijene lozinku prilagoditi se novim pravilima. Naredbom:

passwd -e USUARIO

Lozinka tog korisnika označena je kao istekla i prilikom sljedeće prijave morat će postaviti novu lozinku koja je u skladu s trenutnim pravilima. Globalni istek lozinke možete kontrolirati i pomoću:

passwd -w 5 -x 30 USUARIO

gdje -x 30 utvrđuje maksimalnu valjanost lozinke od 30 dana i -w 5 Zbog toga će vas sustav početi obavještavati 5 dana prije datuma isteka. Ako dodate -ja 1:

passwd -w 5 -x 30 -i 1 USUARIO

Račun će biti označen kao neaktivan ako korisnik ne promijeni lozinku. jedan dan nakon što je istekao, prisiljavajući administratora da intervenira kako bi ga ponovno aktivirao.

Iako se rotiranje lozinki često preporučuje već godinama, moderne sigurnosne smjernice (poput onih NIST-a) kvalificiraju ovu praksu: Poželjno je odabrati duge i složene lozinke te sustave dvofaktorske autentifikacije., umjesto forsiranja prečestih promjena koje na kraju generiraju predvidljive ključeve.

Pažljivo konfigurirajte PAM module (pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) i ključne datoteke kao što su /etc/pam.d/common-auth, /etc/pam.d/common-password, /etc/login.defs, / Etc / ssh / sshd_config i razumjeti kako se te odluke odražavaju u / etc / shadowTo označava razliku između "standardnog" sustava i uistinu ojačanog okruženja protiv neovlaštenog pristupa i napada grubom silom.

nmap
Povezani članak:
Revidirajte svoju lokalnu mrežu pomoću Nmapa i Wiresharka korak po korak

Dodaj kao preferirani izvor na Googleu