Ограничите покушаје лозинке на Линуксу да бисте заштитили критичне сервисе

  • Конфигурисање PAM модула као што су pam_faillock и pam_tally2 вам омогућава да блокирате налоге након неколико неуспелих покушаја на Red Hat-у, Debian-у и Ubuntu-у.
  • Подешавање MaxAuthTries у sshd_config ограничава поновне покушаје по SSH конекцији, допуњујући политике блокирања на нивоу система.
  • Датотеке као што су /etc/login.defs, /etc/shadow и алати као што су chage и passwd управљају истеком лозинке и глобалним параметрима.
  • Модули pam_cracklib и pam_pwquality појачавају сложеност лозинки, спречавајући слабе кључеве и небезбедну поновну употребу.

Безбедност ограничавањем покушаја лозинке у Линуксу

Ограничите покушаје уноса лозинке у Линуксу То није само хир параноичних администратора; то је једна од најефикаснијих мера за заустављање напада грубом силом и неовлашћеног приступа, како у десктоп тако и у серверским окружењима. Ако ваш рачунар садржи осетљиве информације или се повезује на интернет, желећете да обезбедите овај део система. ревидирајте своју локалну мрежу.

Поред подешавања јаке лозинке, конфигуришите привремене или трајне закључавања након неколико кварова Ово је кључно: успорава нападаче, генерише више логова за ревизију и омогућава вам да комбинујете ову заштиту са другим политикама лозинки (истек, сложеност, поновна употреба итд.). Хајде да погледамо, мирно али детаљно, како се ово ради у различитим дистрибуцијама и на различитим нивоима система.

Закључавање налога због неуспелих покушаја пријављивања на Red Hat, CentOS и дериватима

У дистрибуцијама засновано на Red Hat-у (RHEL, CentOS, Rocky, AlmaLinux…)Блокирање налога због неуспелих покушаја се управља помоћу PAM модула pam_faillockОвај модул контролише колико је неуспелих покушаја пријављивања дозвољено, колико дуго је налог закључан и који су корисници погођени (укључујући, ако желите, root корисника).

Да бисте применили ову политику, потребно је да измените глобалне PAM датотеке, обично /etc/pam.d/system-auth а у неким верзијама, такође /etc/pam.d/password-authОве датотеке служе као шаблони за већину сервиса за аутентификацију на систему (пријава на конзолу, sudo, SSH, итд.).

Ове датотеке садрже редове сличне овим, унутар одељка аутх y рачун:

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

Прва линија делује пре стварне аутентификације (преаутентификације)Други се покреће када аутентификација не успе, а трећи је одговоран за проверу статуса закључавања налога током фазе рачунИзменом параметара можете прилагодити политику својим потребама.

Најчешћи параметри pam_faillock звук:

  • ревизијаОмогућава детаљно евидентирање покушаја пријављивања, тако да се трагови остављају у системским евиденцијама (на пример, у / вар / лог / сецуре).
  • одбиј=2Овим се подешава максималан број неуспелих покушаја уноса лозинке пре него што се налог закључа. У овом примеру то је 2, али можете га повећати (3, 5, 10…).
  • време_откључавања=120: означава време блокирања у секундама. Овде би то било 120 секунди (2 минута) док се налог аутоматски поново не активира.
  • ћутиАко је присутно, Не показује кориснику да је блокиранЈедноставно престаје да прихвата пријаве, чинећи систем мање „опширним“ за нападача.

Један важан детаљ је да, подразумевано, корен је искључен из овог блокаАко желите да се иста правила примењују и на њега, потребно је да додате параметар чак_одбијање_корена у линијама pam_faillock одељка auth. Ово јача безбедност, али требало би да процените ризик од губитка приступа ако направите превише грешака.

Када је налог закључан и не користите параметар ћутиСистем може да прикаже експлицитне поруке које упозоравају да је корисник прекорачио дозвољени број покушаја. Ово је корисно у тестним окружењима за проверу конфигурације, иако је у продукцији обично најбоље не наводити превише информација.

Да бисте видели неуспеле покушаје пријављивања одређеног корисника, на Red Hat системима можете користити команду закључавање показујући на налог који вас занима:

faillock --user lionel

Ова команда приказује Колико неуспелих покушаја је корисник акумулирао?, укључујући IP адресу која се користи у случају SSH и друге детаље релевантне за ревизију. Поред тога, увек можете прегледати шта се појављује у / вар / лог / сецурегде ће се ови безбедносни догађаји бележити.

Ограничите покушаје уноса лозинке у Линуксу

Закључавање налога због неуспелих покушаја пријављивања у Дебијану и Убунтуу

У случају Дебиан, Убунту и дериватиЛогика је слична, али се PAM модул који се користи мења. Традиционално се користио пам_талли2 да броји неуспеле покушаје и аутоматски блокира налоге, иако се у модерним верзијама препоручује миграција на pam_faillockУпркос томе, pam_tally2 је и даље веома присутан у многим водичима и окружењима.

Да бисте применили закључавање на основу броја неуспелих покушаја у типичном Дебијану, обично уређујете датотеку /етц/пам.д/цоммон-аутхкоји дефинише стандардну политику аутентификације за већину локалних сервиса. Можете му додати линију попут ове:

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

Са овом конфигурацијом, систем Налог је блокиран након 3 неуспешна покушаја.Одржава закључавање 120 секунди за обичне кориснике и 600 секунди за root кориснике. Штавише, ако дође до било какве грешке са модулом (onerr=неуспех), из безбедносних разлога приступ је забрањен уместо дозвољен.

Главни параметри пам_талли2 звук:

  • onerr=неуспехАко постоји проблем са читањем или ажурирањем бројача покушаја, аутентификација се одбија како би се избегло случајно остављање отворених врата.
  • одбиј=3Максималан број неуспелих покушаја дозвољених пре него што се налог закључа. Вредност 3 је обично сасвим разумна у пракси.
  • време_откључавања=120: време у секундама које ће налог остати закључан за стандардне кориснике.
  • ревизија: бележи информације о неуспеху аутентификације (у Дебијану је то обично /вар/лог/аутх.лог).
  • чак_одбијање_корена: приморава да се и root рачуна у овај систем закључавања, што треба користити са опрезом.
  • root_unlock_time=600: одређено време закључавања за root налог, у секундама, независно од осталих корисника.

Када се блокада активира, корисник ће видети поруку која показује да је његов налог привремено онемогућен због превише неуспелих покушаја пријављивања. Ово омогућава администратору да открије сумњиво понашање и упозори корисника да нешто није у реду.

Да бисте видели неуспеле покушаје које је забележио пам_талли2 За одређеног корисника (на пример, lionel), можете користити:

pam_tally2 -u lionel

Ова наредба приказује број акумулираних кварова И омогућава вам да ручно ресетујете бројач ако је потребно, са додатним опцијама. Штавише, баш као и у Ред Хату, увек имате могућност прегледа /вар/лог/аутх.лог да бисте детаљније видели шта се десило у сваком покушају аутентификације.

Ограничите SSH покушаје помоћу MaxAuthTries

Једна од најчешћих улазних тачака на Линук серверима је ССХЗато је кључно контролисати колико је покушаја аутентификације дозвољено по вези. Ту политика долази до изражаја. МакАутхТриес, што је конфигурисано у датотеци / етц / ссх / ссхд_цонфиг са OpenSSH сервера.

Идеја је једноставна: MaxAuthTries дефинише максималан број покушаја аутентификације дозвољених по SSH конекцијиАко се овај лимит прекорачи, сервер прекида везу, приморавајући нападача да започне нову сесију како би наставио са испробавањем комбинација, што значајно успорава аутоматизоване нападе грубом силом.

Да бисте га конфигурисали, једноставно измените конфигурациону датотеку:

sudo nano /etc/ssh/sshd_config

Затим, пронађите или додајте ред попут овог:

MaxAuthTries 3

Са овом вредношћу, Дозвољена су само три покушаја аутентификације по SSH конекцијиАко корисник направи исту грешку више пута, sshd демон га одјављује. Да би промена ступила на снагу, сервис мора бити поново учитан или рестартован, на пример са:

sudo systemctl restart sshd

MaxAuthTries не замењује PAM модуле као што су pam_tally2 или pam_faillock, већ ради паралелноSSH сервер контролише колико је узастопних покушаја дозвољено у једној сесији, док PAM води глобални број по кориснику и може блокирати њихов налог на нивоу система.

Поред MaxAuthTries, препоручљиво је комбиновати и друге SSH безбедносне мере како би услуга била много робуснија:

  • Промените подразумевани портПрестанак коришћења порта 22 и премештање SSH-а на мање очигледан порт помаже у филтрирању многих основних аутоматских скенирања.
  • Користите јавне кључеве уместо само лозинкиАутентификација помоћу SSH кључева елиминише проблем слабих лозинки и много је робуснија од напада грубом силом.
  • Ограничите изворе помоћу заштитног зида или конфигуришите DMZДозвољавање SSH-а само са одређених IP адреса или мрежних опсега додаје веома ефикасну баријеру на нивоу мреже.

ПАМ Линукс

Ограничите покушаје локалне аутентификације помоћу PAM-а

Поред SSH-а, локална аутентификација (конзола, TTY-ови, sudo, графички менаџер приказа) се такође управља помоћу PAM-а. У Дебијану и Убунтуу, на пример, датотека /етц/пам.д/цоммон-аутх То је срце ове конфигурације, а у Ред Хат системима његова улога се игра системска аутентификација (а понекад и аутентификација лозинком).

Поред наменских модула за блокирање као што су pam_faillock или pam_tally2, неке дистрибуције омогућавају ограничавање покушаја и времена пријављивања директно путем login.defsУ овој датотеци, која се налази у /етц/логин.дефсДекларишу се вредности као што су следеће:

  • ПОНОВНИ ПОРЕСКИВАЊА: максималан број поновних покушаја дозвољених на промпту за пријаву пре прекида процеса.
  • LOGIN_TIMEOUT: максимално време, у секундама, које је сесији пријављивања дозвољено да чека кориснички унос.

На пример, ако прилагодите ПОНОВНИ ПОРЕСКИВАЊА Са ограничењем од 3 лозинке, корисник ће имати само три покушаја да унесе своју лозинку у једној сесији пријављивања пре него што систем затвори тај покушај, приморавајући га да поново покрене процес. То не закључава налог као такав, али га ограничава покушаје по сесији.

У истој датотеци login.defs Такође можете подесити и друге релевантне безбедносне параметре, као што су:

  • ПАСС_МАКС_ДАИС: максималан број дана колико се лозинка може користити пре него што је потребно да се промени.
  • PASS_MIN_DAYSминимални број дана између промена лозинки, како би се избегле претерано честе и „ланчане“ промене.
  • ПРОПУСНИ_УПОЗОРЕЊЕ_УЗРОКданима обавештења пре истека лозинке, како би корисник имао времена да реагује.
  • PASS_MIN_LEN y PASS_MAX_LENминимална и максимална дужина лозинке.
  • УПОЗОРЕЊЕ_ПРЕЗА_УВЕК: упозорава када лозинка не испуњава одређене критеријуме јачине.
  • ПРОПУСТИ_ПРОМЕНУ_ПОКУШАЈА: максималан број покушаја промене лозинке ако се нова лозинка сматра превише једноставном.
  • МЕТОД_ШИФРОВАНИЯ: хеш алгоритам који се користи за лозинке (уобичајена ствар данас је СХА-КСНУМКС, назначено као $ 6 $).

Ове директиве првенствено утичу на Нови Корисници Ови се креирају након подешавања login.defs, тако да је то згодан начин за успостављање основне политике за целу организацију.

Управљање покушајима и истеком помоћу /etc/shadow и команде change

Фајл / етц / схадов Овде систем чува шифроване лозинке локалних корисника, заједно са свим информацијама о истеку. Иако се не мењају ручно свакодневно, разумевање њихове структуре у великој мери помаже у ревизији и усавршавању безбедносних политика.

У сваком реду / етц / схадов Појављује се неколико поља, одвојених двотачкама. Најрелевантнија за наше политике су:

  • Корисничко име: идентификује налог којем припадају остала поља.
  • Шифрована лозинка: се чува као $id$salt$hashedГде $id$ означава алгоритам (1 долар MD5, Блоуфиш 2 а/2/2 године, $5 SHA-256, $6 SHA-512), након чега следе со и хаш.
  • Последња промена лозинке: број дана од 1. јануара 1970. (епоха) када је последњи пут измењено.
  • Минимални и максимални дани коришћењаОни контролишу када се лозинка може поново променити и када истиче.
  • Дани обавештења о истекуКолико дана пре истека почиње да обавештава корисника.
  • Дани неактивностиКада лозинка истекне, колико времена је потребно да се налог потпуно деактивира?
  • Апсолутни датум истека налога: такође у дневном формату од 1970. године, означава тренутак када пријава више није дозвољена за тог корисника.

Да бисте управљали овим параметрима без директног додиривања /etc/shadow, користи се следећа команда: цхаге (промена старости), што вам омогућава да подесите лозинку и рок трајања налога за одређене кориснике.

Неке уобичајене опције за цхаге звук:

  • -д, –прошлог дана: поставља дан последње промене лозинке (у данима од епохе или са читљивим датумом).
  • -Е, –истиче: подешава датум од ког налог истиче.
  • -Ја, –неактиван: означава налог као неактиван након одређеног броја дана од истека лозинке.
  • -м, –миндани: дефинише минимални број дана између промена лозинке.
  • -M, –maks dana: означава максималан број дана током којих лозинка остаје важећа.
  • -W, –дани упозорења: подешава колико дана пре истека ће почети са обавештавањем.
  • -l, –lista: приказује тренутни статус истека важења корисника.

На пример, да бисте проверили информације о истеку корисника пепе Може се извршити:

chage -l pepe

Излаз ће назначити датум последње промене, да ли лозинка истиче или не, неактивност и минимални и максимални број дана...између осталих података. Помоћу овог алата можете примењивати смернице појединачно, корисника по кориснику или у скриптама које обрађују читаве групе налога.

Политике сложености лозинки са pam_cracklib и pam_pwquality

Ограничавање покушаја уноса лозинке је одлично, али ако су лозинке попут „123456“ или „qwerty“, нећете далеко стићи. Зато је то кључно. присилити јаке лозинке коришћењем PAM модула као што су пам_краклиб и, у новијим верзијама, пам_пвкуалити.

Модул пам_пвкуалити То је еволуција cracklib-а и интегрише се са библиотекама као што су libpwquality да би се проверило да лозинке нису у речницима, да нису прекратке и да не понављају једноставне обрасце или личне податке корисника. Изворно је укључен у окружења заснована на RHEL-у и може се инсталирати у Debian/Ubuntu помоћу пакета као што су libpam-cracklib y libpam-pwquality.

Једном инсталирана, главна конфигурација се обично врши у датотеци /etc/security/pwquality.confгде можете дефинисати параметре сложености као што су:

  • дифок: број знакова који морају бити различити од претходне лозинке.
  • минлен: минимална прихватљива дужина за нову лозинку.
  • дцредит, уцредит, лцредит, оцредитЗаслуге за укључивање цифара, великих слова, малих слова и других карактера.
  • минцлассминималан број различитих класа знакова потребан (мала слова, велика слова, цифре, симболи).
  • макрепеат: максималан дозвољени број узастопних идентичних знакова.
  • макцлассрепеат: максималан број узастопних знакова исте класе.
  • гецосцхецк: проверава да ли лозинка не садржи речи из GECOS (коментар) поља корисника у /etc/passwd.
  • дицтпатх: путања до речника који се користи за проверу да ли је лозинка део познате речи.
  • ружне речи: листа речи које су експлицитно забрањене.

Систем од кредити Посебно је флексибилна. У основи, лозинка добија кредите за укључивање различитих карактера; ти кредити могу да надокнаде нешто краћу дужину. На пример, са минлен=10 y dcredit=2Лозинка од 8 знакова са 2 цифре може проћи филтер јер додаје 2 додатна кредита. Међутим, ако дефинишете негативне кредите, потребан вам је барем један негативан знак (на пример, dcredit=-1 (потребна је бар једна цифра, без изузетака).

са минцласс Можете захтевати да лозинка садржи неколико различитих класа. Вредност 2 намеће, на пример, комбинацију слова и бројева или слова и симбола итд. минимална класа=4 То би захтевало истовремену употребу малих слова, великих слова, цифри и специјалних знакова, нешто што је веома типично за захтевне корпоративне политике.

Алати попут pwscore Омогућавају вам да тестирате јачину лозинке у односу на дефинисане политике. Када се лозинка проследи pwscoreОво вам говори да ли кључ испуњава захтеве или не и, ако не, које правило крши (недовољна дужина, превише једноставан, превише сличан претходном итд.).

Конфигуришите робусне политике на Дебијану и Убунтуу помоћу pam_cracklib

У Дебијан/Убунту системима је веома уобичајено користити пам_краклиб (или pwquality преко PAM-а) да би се спровела политика лозинки. Кључна датотека овде је /етц/пам.д/цоммон-пассворд, који дефинише како се управља променама лозинки за кориснике система.

Пре него што било шта додирнете, добра је пракса да направите резервну копију датотеке:

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

Затим га можете уређивати помоћу свог омиљеног уређивача текста (nano, vim, итд.) са привилегијама суперкорисника. Унутра ћете пронаћи ред сличан овом:

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

Овде су дефинисани параметри као што су следећи:

  • покушај поново: број покушаја дозвољених кориснику при промени лозинке, пре него што промена не успе.
  • минленминимална дужина лозинке.
  • дифок: број знакова који морају бити различити од претходне лозинке.
  • уцредит, лцредит, дцредит, оцредит: позитивни или негативни кредити за велика слова, мала слова, цифре и друге знакове.

На пример, прилично захтевна политика може бити:

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

Са овом конфигурацијом, Свака нова лозинка мора бити дугачка најмање 12 карактераЛозинка мора да се разликује за најмање 3 карактера од претходне и да садржи најмање 3 велика слова, 3 мала слова, 3 цифре и 3 симбола. То је веома строга политика, али изузетно ефикасна против тривијалних лозинки.

Када промените политику, можете је тестирати тако што ћете променити сопствену лозинку помоћу:

sudo passwd

Ако лозинка не испуњава захтеве, систем ће приказати поруке које указују на разлог: прекратка, слична речи из речника, прекомерно понављање знакова итд. Када лозинка буде у складу са правилима, промена ће бити примењена без проблема.

Поред пооштравања политике за нове промене, Дебијан и Убунту дозвољавају приморајте постојеће кориснике да промене лозинку да се прилагоди новим правилима. Командом:

passwd -e USUARIO

Лозинка тог корисника је означена као истекла и приликом следећег пријављивања биће потребно да подеси нову лозинку која је у складу са важећим правилима. Такође можете контролисати глобални истек лозинке помоћу:

passwd -w 5 -x 30 USUARIO

где -к 30 утврђује максимални рок важења лозинке од 30 дана и -в 5 Ово ће вас систем почети обавештавати 5 дана пре датума истека. Ако додате -и 1:

passwd -w 5 -x 30 -i 1 USUARIO

Налог ће бити означен као неактиван ако корисник не промени лозинку. један дан након истека рока, приморавајући администратора да интервенише како би га поново активирао.

Иако се ротирање лозинки често препоручује већ годинама, савремене безбедносне смернице (као што су оне од NIST-а) квалификују ову праксу: Пожељно је одабрати дугачке и сложене лозинке, као и системе двофакторске аутентификације., уместо да се форсирају пречесто мењају ствари које на крају генеришу предвидљиве кључеве.

Пажљиво конфигуришите PAM модуле (pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) и кључне датотеке као што су /етц/пам.д/цоммон-аутх, /етц/пам.д/цоммон-пассворд, /етц/логин.дефс, / етц / ссх / ссхд_цонфиг и разумети како се те одлуке одражавају у / етц / схадовОво означава разлику између „стандардног“ система и заиста ојачаног окружења против неовлашћеног приступа и напада грубом силом.

НМАП
Повезани чланак:
Ревидирајте своју локалну мрежу помоћу Nmap-а и Wireshark-а корак по корак