Обмежте спроби введення пароля в 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 / log / secure).
  • заперечувати=2Це встановлює максимальну кількість невдалих спроб введення пароля, перш ніж обліковий запис буде заблоковано. У цьому прикладі це 2, але ви можете збільшити її (3, 5, 10…).
  • unlock_time=120: вказує час блокування в секундах. Тут це буде 120 секунд (2 хвилини), перш ніж обліковий запис буде автоматично повторно активовано.
  • тихийЯкщо вона присутня, Це не показує користувачеві, що його заблокувалиВін просто перестає приймати логіни, що робить систему менш "багаторозмовною" для зловмисника.

Одна важлива деталь полягає в тому, що за замовчуванням, корінь виключено з цього блокуЯкщо ви хочете, щоб ті самі правила застосовувалися і до нього, вам потрібно додати параметр навіть_забороняти_корінь у рядках pam_faillock розділу auth. Це посилює безпеку, але слід зважити ризик втрати доступу, якщо ви зробите забагато помилок.

Коли обліковий запис заблоковано, і ви не використовуєте параметр тихийСистема може відображати явні повідомлення, що попереджають про те, що користувач перевищив дозволену кількість спроб. Це корисно в тестових середовищах для перевірки конфігурації, хоча у виробництві зазвичай краще не надавати забагато інформації.

Щоб переглянути невдалі спроби входу певного користувача, на системах Red Hat можна скористатися командою блокування від помилок вказуючи на обліковий запис, який вас цікавить:

faillock --user lionel

Ця команда показує Скільки невдалих спроб накопичив користувач?, включаючи IP-адресу, що використовується у випадку SSH, та інші деталі, що стосуються аудиту. Крім того, ви завжди можете переглянути, що відображається в / var / log / secureде ці події безпеки будуть записані.

обмежити спроби введення пароля в 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 секунд для звичайних користувачів та протягом 600 секунд для root-користувачів. Крім того, якщо з модулем виникає будь-яка помилка (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, який налаштовано у файлі / etc / 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_RETRIES: максимальна кількість спроб, дозволених у запиті входу перед перериванням процесу.
  • LOGIN_TIMEOUT: максимальний час у секундах, протягом якого сеанс входу може очікувати введення даних користувачем.

Наприклад, якщо ви налаштуєте LOGIN_RETRIES З обмеженням у 3 паролі користувач матиме лише три спроби ввести свій пароль за один сеанс входу, перш ніж система закриє цю спробу, змушуючи його перезапустити процес. Це не блокує обліковий запис як такий, але обмеження кількості спроб за сеанс.

У тому ж файлі login.defs Ви також можете налаштувати інші відповідні параметри безпеки, такі як:

  • PASS_MAX_DAYS: максимальна кількість днів, протягом яких пароль можна використовувати, перш ніж його буде примусово змінено.
  • PASS_MIN_DAYSмінімальна кількість днів між змінами пароля, щоб уникнути надмірно частих та «ланцюгових» змін.
  • PASS_WARN_AGE: попередження за кілька днів до закінчення терміну дії пароля, щоб користувач мав час відреагувати.
  • PASS_MIN_LEN y PASS_MAX_LENмінімальна та максимальна довжина пароля.
  • PASS_ALWAYS_WARN: попереджає, коли пароль не відповідає певним критеріям надійності.
  • СПРОБИ_PASS_CHANGE: максимальна кількість спроб зміни пароля, якщо новий пароль вважається занадто простим.
  • ENCRYPT_METHOD: алгоритм хешування для паролів (сьогодні це зазвичай SHA-512, позначено як $ 6 $).

Ці директиви стосуються, перш за все, нових користувачів Вони створюються після налаштування login.defs, тому це зручний спосіб встановити базову політику для всієї організації.

Керування спробами та терміном дії за допомогою /etc/shadow та команди change

Файл / etc / shadow Тут система зберігає зашифровані паролі локальних користувачів разом з усією інформацією про термін дії. Хоча вони не змінюються вручну щодня, розуміння їхньої структури значно допомагає в аудиті та вдосконаленні політик безпеки.

У кожному рядку / etc / shadow З’являється кілька полів, розділених двокрапками. Найбільш релевантними для наших правил є:

  • Ім'я користувача: визначає обліковий запис, до якого належать решта полів.
  • Зашифрований пароль: зберігається як $id$salt$hashedде $id$ вказує на алгоритм (1 долар США, 5 доларів США, $2a$/$2р$ Blowfish, $5 SHA-256, $6 SHA-512), а потім сіль та гашиш.
  • Остання зміна пароля: кількість днів з 1 січня 1970 року (епохи), коли його востаннє змінювали.
  • Мінімальний та максимальний дні використанняВони контролюють, коли пароль можна знову змінити та коли він закінчується.
  • Дні повідомлення про закінчення терміну дії: за скільки днів до закінчення терміну дії починається сповіщення користувача.
  • Дні бездіяльностіПісля закінчення терміну дії пароля, скільки часу знадобиться, щоб обліковий запис було повністю заблоковано?
  • Абсолютна дата закінчення терміну дії облікового запису: також у форматі днів з 1970 року, позначає момент, коли вхід для цього користувача більше не дозволено.

Для керування цими параметрами без безпосереднього контакту з /etc/shadow використовується наступна команда: зміна (змінити вік), що дозволяє налаштувати пароль та термін дії облікового запису для певних користувачів.

Деякі поширені варіанти для зміна звук:

  • -d, –останнього дня: встановлює день останньої зміни пароля (у форматах днів з епохи або у форматі дати, що читається).
  • -E, –термін дії: встановлює дату, з якої закінчується термін дії облікового запису.
  • -Я, –неактивний: позначає обліковий запис як неактивний через певну кількість днів після закінчення терміну дії пароля.
  • -м, –хвднів: визначає мінімальну кількість днів між змінами пароля.
  • -M, –максимум днів: вказує максимальну кількість днів, протягом яких пароль залишається дійсним.
  • -W, – дні попередження: встановлює, за скільки днів до закінчення терміну дії почнеться сповіщення.
  • -l, –список: показує поточний статус закінчення терміну дії користувача.

Наприклад, щоб перевірити інформацію про термін дії користувача Pepe Його можна виконати:

chage -l pepe

Вихід вкаже дата останньої зміни, термін дії пароля, дані про неактивність, а також мінімальна та максимальна кількість днів...серед інших даних. За допомогою цього інструменту ви можете застосовувати політики окремо, для кожного користувача окремо або у скриптах, які обробляють цілі групи облікових записів.

Політики складності паролів за допомогою pam_cracklib та pam_pwquality

Обмеження спроб введення пароля – це чудово, але якщо паролі на кшталт «123456» або «qwerty», то далеко не заїдете. Ось чому це критично важливо. примусово встановлювати надійні паролі використання PAM-модулів, таких як pam_cracklib а в новіших версіях, якість_pam_pw.

Модуль якість_pam_pw Це еволюція cracklib, і вона інтегрується з такими бібліотеками, як libpwquality щоб перевірити, чи паролі відсутні у словниках, чи не є вони занадто короткими та чи не повторюють прості шаблони чи особисті дані користувача. Він вбудований у середовища на основі RHEL і може бути встановлений у Debian/Ubuntu за допомогою таких пакетів, як libpam-cracklib y libpam-pwquality.

Після встановлення основна конфігурація зазвичай виконується у файлі /etc/security/pwquality.confде можна визначити параметри складності, такі як:

  • difok: кількість символів, яка має відрізнятися від попереднього пароля.
  • мінленмінімальна прийнятна довжина нового пароля.
  • dcredit, ucredit, lcredit, ocreditПодяки за включення цифр, великих літер, малих літер та інших символів.
  • minclassмінімальна необхідна кількість різних класів символів (нижній регістр, верхній регістр, цифри, символи).
  • maxrepeat: максимальна дозволена кількість послідовних однакових символів.
  • maxclassrepeat: максимальна кількість послідовних символів одного класу.
  • gecoscheck: перевіряє, чи пароль не містить слів з поля GECOS (коментар) користувача у файлі /etc/passwd.
  • dictpath: шлях до словника, який використовується для перевірки, чи є пароль частиною відомого слова.
  • погані словасписок слів, які явно заборонені.

Система Росії кредити Це особливо гнучко. По суті, пароль отримує кредити за включення різноманітних символів; ці кредити можуть компенсувати дещо меншу довжину. Наприклад, за допомогою хв.=10 y dcredit=28-символьний пароль із 2 цифр може пройти фільтр, оскільки він додає 2 додаткові кредити. Однак, якщо ви визначаєте від’ємні кредити, вам потрібен принаймні один від’ємний символ (наприклад, dcredit=-1 (потрібна щонайменше одна цифра, без винятків).

з minclass Ви можете вимагати, щоб пароль включав кілька різних класів. Значення 2 вимагає, наприклад, комбінації літер і цифр або літер і символів тощо. мінімальний клас=4 Це вимагатиме одночасного використання малих літер, великих літер, цифр та спеціальних символів, що дуже типово для вимогливих корпоративних політик.

Такі інструменти, як pwscore Вони дозволяють перевірити надійність пароля відповідно до визначених політик. Коли пароль передається через pwscoreЦе показує, чи відповідає ключ вимогам, і якщо ні, то яке правило він порушує (недостатня довжина, занадто простий, занадто схожий на попередній тощо).

Налаштуйте надійні політики на Debian та Ubuntu за допомогою pam_cracklib

У системах Debian/Ubuntu дуже поширене використання pam_cracklib (або pwquality через PAM) для забезпечення дотримання політики паролів. Ключовий файл тут /etc/pam.d/common-password, який визначає, як керуються зміни паролів для системних користувачів.

Перш ніж щось робити, гарною практикою буде зробити резервну копію файлу:

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

Потім ви можете редагувати його за допомогою вашого улюбленого текстового редактора (nano, vim тощо) з правами суперкористувача. Усередині ви знайдете рядок, подібний до:

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

Тут визначені такі параметри, як наступні:

  • повторити спробу: кількість спроб, дозволених користувачеві під час зміни пароля, перш ніж зміна завершиться невдачею.
  • мінленмінімальна довжина пароля.
  • difok: кількість символів, яка має відрізнятися від попереднього пароля.
  • ucredit, lcredit, dcredit, ocredit: додатні або від’ємні кредити для великих літер, малих літер, цифр та інших символів.

Наприклад, досить вимоглива політика може бути такою:

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

де -x 30 встановлює максимальний термін дії пароля 30 днів та -ж 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/common-password, /etc/login.defs, / etc / ssh / sshd_config і зрозуміти, як ці рішення відображаються в / etc / shadowЦе відрізняє «стандартну» систему від справді захищеного середовища від несанкціонованого доступу та атак методом грубої сили.

nmap
Пов'язана стаття:
Аудит вашої локальної мережі за допомогою Nmap та Wireshark крок за кроком

Додати як пріоритетне джерело в Google