Ograničite pokušaje unosa lozinke u Linuxu To nije samo hir paranoičnih administratora; to je jedna od najefikasnijih mjera za zaustavljanje napada grubom silom i neovlaštenog pristupa, kako u desktop tako i u serverskim okruženjima. Ako vaš računar sadrži osjetljive informacije ili se povezuje na internet, poželjet ćete osigurati ovaj dio sistema. revidirajte svoju lokalnu mrežu.
Pored 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ćava vam kombiniranje ove zaštite s drugim politikama lozinki (istek, složenost, ponovna upotreba itd.). Pogledajmo, smireno, ali detaljno, kako se to radi u različitim distribucijama i na različitim nivoima sistema.
Zaključavanje računa zbog neuspjelih pokušaja prijave na Red Hat, CentOS i derivate
U distribucijama zasnovano na Red Hatu (RHEL, CentOS, Rocky, AlmaLinux…)Blokiranje računa zbog neuspjelih pokušaja se upravlja pomoću PAM modula pam_faillockOvaj modul kontrolira koliko je neuspjelih pokušaja prijave dozvoljeno, 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, potrebno je 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 sistemu (prijava na konzolu, sudo, SSH, itd.).
Ove datoteke sadrže slične redove, unutar sekcije 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 tokom faze računModifikacijom parametara možete prilagoditi politiku svojim potrebama.
Najčešći parametri pam_faillock To su:
- revizijaOmogućava detaljno evidentiranje pokušaja prijave, tako da se tragovi ostavljaju u sistemskim zapisnicima (na primjer, u / var / log / secure).
- poricanje=2Ovo postavlja maksimalan 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…).
- unlock_time=120: označava vrijeme blokiranja u sekundama. Ovdje bi to bilo 120 sekundi (2 minute) dok se račun automatski ne ponovo aktivira.
- SilentAko je prisutno, Ne pokazuje korisniku da je blokiranJednostavno prestaje prihvatati prijave, čineći sistem manje "opširnim" za napadača.
Jedan važan detalj je da, po zadanim postavkama, korijen je isključen iz ovog blokaAko želite da se ista pravila primjenjuju i na njega, potrebno je dodati parametar čak_odbija_korjenjenje u linijama pam_faillock sekcije auth. Ovo jača sigurnost, ali trebali biste procijeniti rizik gubitka pristupa ako napravite previše grešaka.
Kada je račun zaključan i ne koristite parametar SilentSistem može prikazati eksplicitne poruke upozorenja da je korisnik prekoračio dozvoljeni broj pokušaja. Ovo je korisno u testnim okruženjima za provjeru konfiguracije, iako je u produkciji obično najbolje ne davati previše informacija.
Da biste pregledali neuspješne pokušaje prijave određenog korisnika, na Red Hat sistemima možete koristiti naredbu zaključavanje pokazujući na račun koji vas zanima:
faillock --user lionel
Ova komanda prikazuje Koliko neuspjelih pokušaja je korisnik akumulirao?, uključujući IP adresu korištenu u slučaju SSH-a i druge detalje relevantne za reviziju. Osim toga, uvijek možete pregledati šta se pojavljuje u / var / log / securegdje će se ovi sigurnosni događaji evidentirati.

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 korišteni PAM modul mijenja. 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_faillockUprkos tome, pam_tally2 je i dalje veoma prisutan u mnogim vodičima i okruženjima.
Da biste primijenili zaključavanje na osnovu broja neuspjelih pokušaja u tipičnom Debianu, obično uređujete datoteku /etc/pam.d/common-authkoji definira standardnu politiku autentifikacije za većinu lokalnih servisa. Možete mu dodati liniju poput ove:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 audit even_deny_root root_unlock_time=600
Sa ovom konfiguracijom, sistem 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 dozvoljen.
Glavni parametri pam_tally2 To su:
- onerr=neuspjehAko postoji problem s čitanjem ili ažuriranjem brojača pokušaja, autentifikacija se odbija kako bi se izbjeglo slučajno ostavljanje otvorenih vrata.
- poricanje=3Maksimalan broj neuspjelih pokušaja prije nego što se račun zaključa. Vrijednost 3 je obično sasvim razumna u praksi.
- unlock_time=120: vrijeme u sekundama tokom kojeg će račun ostati zaključan za standardne korisnike.
- revizija: zapisuje informacije o neuspješnoj autentifikaciji (u Debianu je to obično /var/log/auth.log).
- čak_odbija_korjenjenje: prisiljava da se i root uračuna u ovaj sistem zaključavanja, što treba koristiti s oprezom.
- root_unlock_time=600: specifično vrijeme zaključavanja za root račun, u sekundama, nezavisno od ostalih korisnika.
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. Ovo omogućava administratoru da otkrije sumnjivo ponašanje i upozori korisnika da nešto nije u redu.
Da biste vidjeli neuspješne pokušaje 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ćava vam ručno resetiranje brojača ako je potrebno, s dodatnim opcijama. Nadalje, baš kao i u Red Hatu, uvijek imate mogućnost pregleda /var/log/auth.log da biste detaljnije vidjeli šta se dogodilo u svakom pokušaju autentifikacije.
Ograničite SSH pokušaje pomoću MaxAuthTries
Jedna od najčešćih ulaznih tačaka na Linux serverima je SSHZato je ključno kontrolirati koliko je pokušaja autentifikacije dozvoljeno po konekciji. Tu politika dolazi do izražaja. MaxAuthTries, koji je konfigurisan u datoteci / etc / ssh / sshd_config sa OpenSSH servera.
Ideja je jednostavna: MaxAuthTries definira maksimalan broj pokušaja autentifikacije dozvoljenih po SSH konekciji.Ako se prekorači ovaj limit, server prekida vezu, prisiljavajući napadača da započne novu sesiju kako bi nastavio isprobavati kombinacije, što značajno usporava automatizirane brute-force napade.
Da biste ga konfigurirali, jednostavno uredite konfiguracijsku datoteku:
sudo nano /etc/ssh/sshd_config
Zatim pronađite ili dodajte liniju poput ove:
MaxAuthTries 3
Sa ovom vrijednošću, Dozvoljena su samo tri pokušaja autentifikacije po SSH konekciji.Ako korisnik napravi istu grešku više puta, sshd daemon ga odjavljuje. Da bi promjena stupila na snagu, servis se mora ponovo učitati ili restartovati, na primjer sa:
sudo systemctl restart sshd
MaxAuthTries ne zamjenjuje PAM module kao što su pam_tally2 ili pam_faillock, već radi paralelnoSSH server kontroliše koliko uzastopnih pokušaja je dozvoljeno u jednoj sesiji, dok PAM vodi globalni broj po korisniku i može blokirati njihov račun na nivou sistema.
Pored MaxAuthTries, preporučljivo je kombinovati i druge SSH sigurnosne mjere kako bi servis bio mnogo robusniji:
- 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 korištenjem SSH ključeva eliminira problem slabih lozinki i mnogo je robusnija od napada grubom silom.
- Ograničite izvore pomoću zaštitnog zida ili konfigurirajte DMZDozvoljavanje SSH-a samo sa određenih IP adresa ili mrežnih raspona dodaje vrlo učinkovitu barijeru na nivou mreže.
Ograničite pokušaje lokalne autentifikacije pomoću PAM-a
Osim SSH-a, lokalna autentifikacija (konzola, TTY-i, sudo, upravitelj grafičkog prikaza) se također 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 sistemima njegovu ulogu igra... sistemska autentifikacija (a ponekad i autentifikacija lozinkom).
Pored namjenskih modula za blokiranje poput pam_faillock ili pam_tally2, neke distribucije omogućavaju ograničavanje pokušaja i vremena prijave direktno putem prijava.defsU ovoj datoteci, koja se nalazi u /etc/login.defsDeklarisane su vrijednosti poput sljedećih:
- PONOVNI POKUŠAJI PRIJAVE: maksimalan broj dozvoljenih ponovnih pokušaja na prompt-u za prijavu prije prekida procesa.
- VRIJEME_PREKIDANJA_PRIJAVE: maksimalno vrijeme, u sekundama, koje je dozvoljeno da sesija prijave čeka 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 sistem zatvori taj pokušaj, prisiljavajući korisnika da ponovo pokrene proces. To ne zaključava račun per se, ali... 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 prisilno 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 obavještenja prije isteka lozinke, kako bi korisnik imao vremena za reakciju.
- PASS_MIN_LEN y PASS_MAX_LEN: minimalna i maksimalna dužina lozinke.
- PASS_ALWAYS_WARN: upozorava kada lozinka ne ispunjava određene kriterije jačine.
- PROLAZ_PROMJENA_POKUŠAJA: maksimalan broj pokušaja promjene lozinke ako se nova lozinka smatra previše jednostavnom.
- METODA_ŠIFROVANJA: algoritam heširanja koji se koristi za lozinke (uobičajena stvar danas je SHA-512, označeno kao 6 $).
Ove direktive prvenstveno utiču na novim korisnicima Ovo se kreira nakon podešavanja login.defs datoteke, tako da je to praktičan način za uspostavljanje osnovne politike za cijelu organizaciju.
Upravljanje pokušajima i istekom pomoću /etc/shadow i naredbe change
Fajl / etc / shadow Ovdje sistem pohranjuje šifrirane lozinke lokalnih korisnika, zajedno sa svim informacijama o isteku. Iako se ne mijenjaju ručno na dnevnoj bazi, razumijevanje njihove strukture uveliko pomaže u reviziji i usavršavanju sigurnosnih politika.
U svakom redu od / etc / shadow Pojavit će se nekoliko polja, odvojenih dvotačkama. Najrelevantnija za naše politike su:
- Korisničko ime: identificira račun kojem pripadaju ostala polja.
- Šifrirana lozinka: se pohranjuje kao $id$salt$hashed, gdje $id$ označava algoritam (1 dolar od 5 dolara, Blowfish 2a$/2$ god., 5 dolara SHA-256, 6 dolara SHA-512), nakon čega slijede sol i hašiš.
- Posljednja promjena lozinke: broj dana od 1. januara 1970. (epoha) kada je posljednji put izmijenjeno.
- Minimalni i maksimalni broj dana korištenjaOni kontrolišu kada se lozinka može ponovo promijeniti i kada ističe.
- Dani isteka obavještenjaKoliko dana prije isteka roka počinje obavještavati korisnika.
- Dani neaktivnostiNakon isteka lozinke, koliko vremena je potrebno da se račun potpuno deaktivira?
- Apsolutni datum isteka računa: također u dnevnom formatu od 1970. godine, označava trenutak kada prijava više nije dozvoljena za tog korisnika.
Za upravljanje ovim parametrima bez direktnog dodirivanja /etc/shadow, koristi se sljedeća naredba: promjena (promjena dobi), što vam omogućava da prilagodite lozinku i istek računa za određene korisnike.
Neke uobičajene opcije za promjena To su:
- -d, –prošli dan: postavlja dan posljednje promjene lozinke (u formatu dana od epohe ili s čitljivim datumom).
- -E, –ističe: postavlja datum od kojeg račun ističe.
- -Ja, –neaktivan: označava račun kao neaktivan nakon određenog broja dana od isteka lozinke.
- -m, –minuta: definiše minimalni broj dana između promjena lozinke.
- -M, –maks. dana: označava maksimalni broj dana tokom kojih lozinka ostaje važeća.
- -W, –dani upozorenja: postavlja koliko dana prije isteka će početi s obavještavanjem.
- -l, –lista: prikazuje trenutni status isteka korisnika.
Na primjer, da provjerite informacije o isteku korisnika pepe Može se izvršiti:
chage -l pepe
Izlaz će naznačiti datum posljednje promjene, da li lozinka ističe ili ne, neaktivnost i 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.
Politike složenosti lozinki sa 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. forsirati jake lozinke 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 obrasce ili lične podatke korisnika. Izvorno je uključen u okruženja zasnovana 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:
- Žao mi je: broj znakova koji se mora razlikovati od prethodne lozinke.
- minlen: minimalna prihvatljiva dužina za novu lozinku.
- kredit, ucredit, lcredit, on verujeZahvaljujemo se na uključivanju cifara, velikih slova, malih slova i ostalih znakova.
- minclass: minimalan broj različitih klasa znakova potreban (mala slova, velika slova, cifre, simboli).
- maxrepeat: maksimalan dozvoljeni broj uzastopnih identičnih znakova.
- maxclassrepeat: maksimalan broj uzastopnih znakova iste klase.
- gecoscheck: provjerava da li lozinka sadrži riječi iz GECOS (komentar) polja korisnika u /etc/passwd.
- dictpath: putanja do rječnika koji se koristi za provjeru da li je lozinka dio poznate riječi.
- loše riječi: lista riječi koje su eksplicitno zabranjene.
Sistem krediti Posebno je fleksibilna. U osnovi, lozinka dobija kredite za uključivanje različitih znakova; ti krediti mogu kompenzirati nešto kraću dužinu. Na primjer, sa minlen=10 y dcredit=2Lozinka od 8 znakova s 2 cifre mogla bi proći filter 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 cifra, bez izuzetaka).
con 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, cifara i specijalnih znakova, što je vrlo tipično za zahtjevne korporativne politike.
Alati poput pwscore Omogućavaju vam da testirate jačinu lozinke u odnosu na definirane politike. Kada se lozinka propusti pwscoreOvo vam govori da li ključ ispunjava zahtjeve ili ne i, ako ne, koje pravilo krši (nedovoljna dužina, previše jednostavan, previše sličan prethodnom, itd.).
Konfigurišite robusne politike na Debianu i Ubuntuu pomoću pam_cracklib-a
U Debian/Ubuntu sistemima je vrlo uobičajeno koristiti pam_cracklib (ili pwquality putem PAM-a) za sprovođenje politike lozinki. Ključna datoteka ovdje je /etc/pam.d/common-password, koji definira kako se upravlja promjenama lozinki za korisnike sistema.
Prije nego što bilo šta dirate, dobra je praksa napraviti sigurnosnu kopiju datoteke:
sudo cp /etc/pam.d/common-password /root/
Zatim ga možete urediti pomoću svog omiljenog tekstualnog editora (nano, vim, itd.) s privilegijama superkorisnika. Unutra ćete pronaći liniju sličnu ovoj:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3
Ovdje su definirani parametri kao što su sljedeći:
- pokušaj ponovo: broj pokušaja dozvoljenih korisniku prilikom promjene lozinke, prije nego što promjena ne uspije.
- minlen: minimalna dužina lozinke.
- Žao mi je: broj znakova koji se mora razlikovati od prethodne lozinke.
- ucredit, lcredit, kredit, on verujepozitivni ili negativni krediti za velika slova, mala slova, brojeve i ostale znakove.
Na primjer, prilično zahtjevna politika može 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 cifre i 3 simbola. To je vrlo stroga politika, ali izuzetno efikasna protiv trivijalnih lozinki.
Nakon što promijenite politiku, možete je testirati promjenom vlastite lozinke pomoću:
sudo passwd
Ako lozinka ne ispunjava zahtjeve, sistem će prikazati poruke koje ukazuju na razlog: prekratka, slična riječi iz rječnika, prekomjerno ponavljanje znakova itd. Nakon što lozinka bude u skladu s pravilima, promjena će biti primijenjena bez problema.
Pored pooštravanja politike za nove promjene, Debian i Ubuntu dozvoljavaju prisiliti postojeće korisnike da promijene lozinku da se prilagodi novim pravilima. Pomoću naredbe:
passwd -e USUARIO
Lozinka tog korisnika je označena kao istekla i prilikom sljedeće prijave, morat će postaviti novu lozinku koja je u skladu s trenutnim pravilima. Također možete kontrolirati globalni istek lozinke pomoću:
passwd -w 5 -x 30 USUARIO
gdje -x 30 utvrđuje maksimalni rok važenja lozinke od 30 dana i -w 5 Ovo će vas podstaći da sistem počne 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 isteka roka, prisiljavajući administratora da interveniše kako bi ga ponovo aktivirao.
Iako se rotiranje lozinki često preporučuje već godinama, moderne sigurnosne smjernice (kao što su one NIST-a) kvalifikuju ovu praksu: Poželjno je odabrati duge i složene lozinke, kao i sisteme 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 / shadowOvo označava razliku između "standardnog" sistema i zaista ojačanog okruženja protiv neovlaštenog pristupa i napada grubom silom.
