Ограничете опитите за парола в Linux, за да защитите критични услуги

  • Конфигурирането на PAM модули като pam_faillock и pam_tally2 ви позволява да блокирате акаунти след няколко неуспешни опита в Red Hat, Debian и Ubuntu.
  • Настройването на MaxAuthTries в sshd_config ограничава повторните опити за SSH връзка, допълвайки политиките за блокиране на системно ниво.
  • Файлове като /etc/login.defs, /etc/shadow и инструменти като chage и passwd управляват изтичането на паролата и глобалните параметри.
  • Модулите pam_cracklib и pam_pwquality подобряват сложността на паролите, предотвратявайки слаби ключове и несигурна повторна употреба.

Сигурност чрез ограничаване на опитите за парола в Linux

Ограничете опитите за въвеждане на парола в Linux Това не е просто прищявка на параноичните администратори; това е една от най-ефективните мерки за спиране на атаки с груба сила и неоторизиран достъп, както в настолни, така и в сървърни среди. Ако компютърът ви съдържа чувствителна информация или се свързва с интернет, ще искате да защитите тази част от системата. одитирайте локалната си мрежа.

В допълнение към задаването на силна парола, конфигуриране на временни или постоянни заключвания след няколко неуспеха Това е ключово: забавя атакуващите, генерира повече лог файлове за одит и ви позволява да комбинирате тази защита с други политики за пароли (срок на изтичане, сложност, повторна употреба и т.н.). Нека разгледаме, спокойно, но подробно, как се прави това в различни дистрибуции и на различни нива на системата.

Блокиране на акаунт поради неуспешни опити за влизане в 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 звук:

  • проверка: Позволява подробно регистриране на опитите за влизане, така че да се оставят следи в системните логове (например в / Var / дневник / сигурна).
  • отричане=2Това задава максималния брой неуспешни опити за въвеждане на парола, преди акаунтът да бъде заключен. В този пример това е 2, но можете да го увеличите (3, 5, 10…).
  • unlock_time=120: показва времето за блокиране в секунди. Тук това би било 120 секунди (2 минути), докато акаунтът се активира автоматично отново.
  • безшуменАко е налице, Не показва на потребителя, че е бил блокиранТой просто спира да приема входни данни, което прави системата по-малко „подробна“ за нападателя.

Един важен детайл е, че по подразбиране, коренът е изключен от този блокАко искате същите правила да важат и за него, трябва да добавите параметъра дори_отказване_корен в редовете pam_faillock на секцията auth. Това засилва сигурността, но трябва да прецените риска от загуба на достъп, ако допуснете твърде много грешки.

Когато акаунтът е заключен и не използвате параметъра безшуменСистемата може да показва изрични съобщения, предупреждаващи, че потребителят е превишил разрешения брой опити. Това е полезно в тестови среди за проверка на конфигурацията, въпреки че в производствена среда обикновено е най-добре да не се предоставя твърде много информация.

За да видите неуспешните опити за влизане на конкретен потребител, в Red Hat системите можете да използвате командата блокиране сочейки към акаунта, който ви интересува:

faillock --user lionel

Тази команда показва Колко неуспешни опита е натрупал потребителят?, включително IP адреса, използван в случай на SSH, и други подробности, свързани с одита. Освен това винаги можете да прегледате какво се появява в / Var / дневник / сигурнакъдето ще бъдат записани тези събития, свързани със сигурността.

ограничаване на опитите за въвеждане на парола в Linux

Блокиране на акаунт поради неуспешни опити за влизане в Debian и Ubuntu

В случай на Debian, Ubuntu и дериватиЛогиката е подобна, но използваният PAM модул се променя. Традиционно той се е използвал пам_тал2 да се броят неуспешните опити и автоматично да се блокират акаунти, въпреки че в съвременните версии се препоръчва мигриране към pam_faillockВъпреки това, pam_tally2 все още е много присъстваща в много ръководства и среди.

За да приложите заключване въз основа на броя неуспешни опити в типичния Debian, обикновено редактирате файла /etc/pam.d/common-authкойто определя стандартната политика за удостоверяване за повечето локални услуги. Можете да добавите към него ред като този:

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

С тази конфигурация, системата Акаунтът е блокиран след 3 неуспешни опита.За обикновените потребители заключването се поддържа за 120 секунди, а за root потребители - за 600 секунди. Освен това, ако възникне грешка с модула (onerr=неуспех), от съображения за сигурност достъпът е отказан, вместо разрешен.

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

  • onerr=неуспехАко има проблем с четенето или актуализирането на брояча на опитите, удостоверяването се отказва, за да се избегне случайно оставяне на врата отворена.
  • отричане=3: Максимален брой неуспешни опити, разрешени преди акаунтът да бъде заключен. Стойност 3 обикновено е доста разумна на практика.
  • unlock_time=120: време в секунди, през което акаунтът ще остане заключен за стандартни потребители.
  • проверка: регистрира информация за неуспешно удостоверяване (в Debian обикновено е /var/log/auth.log).
  • дори_отказване_корен: принуждава root също да се брои в тази заключваща система, нещо, което трябва да се използва с повишено внимание.
  • root_unlock_time=600: специфично време за заключване на root акаунта, в секунди, независимо от другите потребители.

Когато блокирането е активирано, потребителят ще види съобщение, показващо, че акаунтът му е временно деактивиран поради твърде много неуспешни опити за влизане. Това позволява на администратора да открие подозрително поведение и да предупреди потребителя, че нещо не е наред.

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

pam_tally2 -u lionel

Тази команда показва броя на натрупаните повреди И ви позволява ръчно да нулирате брояча, ако е необходимо, с допълнителни опции. Освен това, както в Red Hat, винаги имате възможност да го прегледате /var/log/auth.log за да видите по-подробно какво се е случило при всеки опит за удостоверяване.

Ограничете SSH опитите с MaxAuthTries

Една от най-често срещаните входни точки в Linux сървърите е SSHЕто защо е изключително важно да се контролира колко опити за удостоверяване са разрешени на връзка. Тук влиза в действие политиката. MaxAuthTries, който е конфигуриран във файла / И т.н. / SSH / sshd_config от 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 Linux

Ограничете локалните опити за удостоверяване с PAM

Отвъд SSH, локално удостоверяване (конзола, TTY, sudo, мениджър на графичен дисплей) също се управлява с PAM. В Debian и Ubuntu, например, файлът /etc/pam.d/common-auth Това е сърцето на тази конфигурация, а в Red Hat системите неговата роля се играе системно удостоверяване (и понякога удостоверяване с парола).

В допълнение към специални блокиращи модули като pam_faillock или pam_tally2, някои дистрибуции позволяват ограничаване на опитите за влизане и времето директно чрез login.defsВ този файл, намиращ се в /etc/login.defsДекларират се стойности като следните:

  • ПОВТОРНИ_ОПИТИ_ВХОД: максимален брой повторни опити, разрешени при влизане в системата, преди процесът да бъде прекратен.
  • LOGIN_TIMEOUT: максимално време в секунди, през което сесията за вход може да чака потребителски вход.

Например, ако коригирате ПОВТОРНИ_ОПИТИ_ВХОД С ограничение от 3 пароли, потребителят ще има само три опита да въведе паролата си в една сесия за влизане, преди системата да затвори този опит, принуждавайки го да рестартира процеса. Това не заключва акаунта като цяло, но го прави... ограничава опитите на сесия.

В същия файл login.defs Можете също да коригирате други важни параметри за сигурност, като например:

  • PASS_MAX_DAYS: максимален брой дни, през които може да се използва паролата, преди да бъде принудително променена.
  • PASS_MIN_DAYSминимален брой дни между смяната на паролата, за да се избегнат прекомерно чести и „верижни“ промени.
  • PASS_WARN_AGEдни предизвестие преди изтичане на паролата, така че потребителят да има време да реагира.
  • PASS_MIN_LEN y PASS_MAX_LENминимална и максимална дължина на паролата.
  • PASS_ALWAYS_WARN: предупреждава, когато паролата не отговаря на определени критерии за надеждност.
  • PASS_CHANGE_TRIES: максимален брой опити за промяна на паролата, ако новата парола се счита за твърде проста.
  • МЕТОД_ЗА_ШИФРИРАНЕ: хеш алгоритъм, който да се използва за пароли (обичайното нещо днес е SHA-512, посочено като $ 6 $).

Тези директиви засягат предимно нови потребители Те се създават след коригиране на login.defs, така че е удобен начин за установяване на базова политика за цялата организация.

Управление на опитите и сроковете на валидност с /etc/shadow и командата change

Файлът / и т.н. / сянка Това е мястото, където системата съхранява криптираните пароли на локалните потребители, заедно с цялата информация за изтичане на срока им на валидност. Въпреки че те не се променят ръчно ежедневно, разбирането на тяхната структура помага значително при одитирането и усъвършенстването на политиките за сигурност.

Във всеки ред от / и т.н. / сянка Появяват се няколко полета, разделени с двоеточия. Най-подходящите за нашите правила са:

  • Потребителско име: идентифицира акаунта, към който принадлежат останалите полета.
  • Криптирана парола: се съхранява като $id$salt$hashed, където $id$ показва алгоритъма ($1 MD5, $2a$/$2y$ Blowfish, $5 SHA-256, $6 SHA-512), последвано от сол и хашиш.
  • Последна промяна на паролата: брой дни от 1 януари 1970 г. (епоха), когато е било последно променено.
  • Минимални и максимални дни на употребаТе контролират кога паролата може да бъде променена отново и кога изтича.
  • Дни за предизвестие за изтичане: колко дни преди изтичане започва да уведомява потребителя.
  • Дни на бездействиеСлед като паролата изтече, колко време отнема, преди акаунтът да бъде напълно деактивиран?
  • Абсолютна дата на изтичане на акаунта: също и във формат на дни от 1970 г., отбелязва момента, в който влизането вече не е разрешено за този потребител.

За да управлявате тези параметри, без директно да докосвате /etc/shadow, се използва следната команда: чадж (промяна на възрастта), което ви позволява да коригирате паролата и срока на валидност на акаунта за конкретни потребители.

Някои често срещани опции за чадж звук:

  • -d, –последен ден: задава датата на последната промяна на паролата (в дни от епохата или с четлива дата).
  • -E, –изтича: задава датата, от която акаунтът изтича.
  • -Аз, –неактивен: маркира акаунта като неактивен след определен брой дни от изтичането на паролата.
  • -м, –мин.дни: определя минималния брой дни между смяната на паролата.
  • -M, –maxdays: показва максималния брой дни, през които паролата остава валидна.
  • -W, –предупредителни дни: задава колко дни преди изтичане ще започне да се изпращат известия.
  • -l, –списък: показва текущия статус на изтичане на потребител.

Например, за да проверите информацията за изтичане на срока на валидност на потребителя Пепе Може да се изпълни:

chage -l pepe

Изходът ще показва датата на последната промяна, дали паролата е валидна или не, неактивност и минималният и максималният брой дни...наред с други данни. С този инструмент можете да прилагате правила поотделно, потребител по потребител или в скриптове, които обработват цели групи акаунти.

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

Ограничаването на опитите за въвеждане на парола е чудесно, но ако паролите са нещо като „123456“ или „qwerty“, няма да стигнете далеч. Ето защо е изключително важно. принудително използване на силни пароли използвайки PAM модули, като например pam_cracklib и в по-новите версии, pam_pwquality.

Модулът pam_pwquality Това е еволюция на cracklib и се интегрира с библиотеки като libpwquality да се провери дали паролите не са в речници, не са твърде кратки и не повтарят прости модели или личните данни на потребителя. Включен е вградено в RHEL-базирани среди и може да се инсталира в Debian/Ubuntu с помощта на пакети като libpam-cracklib y libpam-pwquality.

След инсталиране, основната конфигурация обикновено се извършва във файла /etc/security/pwquality.confкъдето можете да дефинирате параметри на сложност, като например:

  • Съжалявам: брой знаци, които трябва да са различни от предишната парола.
  • минлен: минимална приемлива дължина за новата парола.
  • кредит, ucredit, lcredit, той вярваБлагодарности за включването на цифри, главни букви, малки букви и други символи.
  • minclassминимален брой необходими различни класове символи (малки букви, главни букви, цифри, символи).
  • maxrepeat: максималният брой последователни еднакви знаци е разрешен.
  • maxclassrepeat: максимален брой последователни символи от един и същи клас.
  • gecocheck: проверява дали паролата не съдържа думи от полето GECOS (коментар) на потребителя в /etc/passwd.
  • dictpath: път до речника, използван за проверка дали паролата е част от известна дума.
  • лоши думисписък с думи, които са изрично забранени.

Система кредити Това е особено гъвкаво. По принцип, паролата получава кредити за включване на разнообразни символи; тези кредити могат да компенсират малко по-къса дължина. Например, с минлен=10 y dcredit=28-символна парола с 2 цифри може да премине филтъра, защото добавя 2 допълнителни кредита. Ако обаче дефинирате отрицателни кредити, е необходим поне един отрицателен символ (например, dcredit=-1 (изисква се поне една цифра, без изключения).

Con minclass Можете да изисквате паролата да включва няколко различни класа. Стойност 2 налага например комбинация от букви и цифри или букви и символи и т.н. мин.клас=4 Това би изисквало едновременното използване на малки букви, главни букви, цифри и специални символи, нещо много типично за взискателните корпоративни политики.

Инструменти като pwscore Те ви позволяват да тествате силата на паролата спрямо дефинираните правила. Когато паролата се предава през pwscoreТова ви показва дали ключът отговаря на изискванията или не и ако не, кое правило нарушава (недостатъчна дължина, твърде прост, твърде подобен на предишния и т.н.).

Конфигурирайте стабилни политики в Debian и Ubuntu с pam_cracklib

В Debian/Ubuntu системите е много често срещано да се използва pam_cracklib (или pwquality чрез PAM), за да се наложи политиката за пароли. Ключовият файл тук е /etc/pam.d/обща парола, който определя как се управляват промените на паролите за системните потребители.

Преди да докоснете каквото и да било, е добра практика да направите резервно копие на файла:

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

След това можете да го редактирате с любимия си текстов редактор (nano, vim и др.) с права на суперпотребител. Вътре ще намерите ред, подобен на:

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

Тук са дефинирани параметри като следните:

  • повторен опит: брой опити, разрешени на потребителя при промяна на паролата му, преди промяната да е неуспешна.
  • минленминимална дължина на паролата.
  • Съжалявам: брой знаци, които трябва да са различни от предишната парола.
  • ucredit, lcredit, кредит, той вярва: положителни или отрицателни кредити за главни букви, малки букви, цифри и други знаци.

Например, една доста взискателна политика може да бъде:

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

Ако паролата не отговаря на изискванията, системата ще покаже съобщения, указващи причината: твърде кратка, подобна на речникова дума, прекомерно повторение на знаци и др. След като паролата е в съответствие с правилата, промяната ще бъде приложена без проблем.

В допълнение към затягането на политиката за нови промени, Debian и Ubuntu позволяват принуждаване на съществуващите потребители да променят паролата си да се адаптира към новите правила. С командата:

passwd -e USUARIO

Паролата на този потребител е маркирана като изтекла и при следващото си влизане ще трябва да зададе нова парола, която е в съответствие с текущата политика. Можете също така да контролирате глобалното изтичане на паролата с:

passwd -w 5 -x 30 USUARIO

Donde -x 30 установява максимална валидност на паролата от 30 дни и -w 5 Това кара системата да започне да ви уведомява 5 дни преди датата на изтичане. Ако добавите -аз 1:

passwd -w 5 -x 30 -i 1 USUARIO

Акаунтът ще бъде маркиран като неактивен, ако потребителят не промени паролата си. един ден след изтичането му, принуждавайки администратора да се намеси, за да го активира отново.

Въпреки че честото редуване на пароли се препоръчва от години, съвременните насоки за сигурност (като тези на NIST) квалифицират тази практика: За предпочитане е да се изберат дълги и сложни пароли, както и системи за двуфакторно удостоверяване., вместо да се налагат прекалено чести промени, които в крайна сметка генерират предвидими ключове.

Внимателно конфигурирайте PAM модулите (pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) и ключовите файлове, като например /etc/pam.d/common-auth, /etc/pam.d/обща парола, /etc/login.defs, / И т.н. / SSH / sshd_config и да разберат как тези решения се отразяват в / и т.н. / сянкаТова бележи разликата между „стандартна“ система и наистина защитена среда срещу неоторизиран достъп и атаки с груба сила.

Nmap
Свързана статия:
Одитирайте локалната си мрежа с Nmap и Wireshark стъпка по стъпка