💾 Archived View for byzoni.org › gemlog › 2022-06-29-bezopasnost_servera_linux.gmi captured on 2024-07-08 at 23:26:54. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-07-16)
-=-=-=-=-=-=-
2022-06-29
Это краткое руководство объясняет, как заставить пользователей использовать надёжные пароли с помощью подключаемых модулей аутентификации (PAM) в Debian, Ubuntu и других системах на базе DEB.
Безопасность сервера Linux имеет очень важное значение для защиты ваших данных, а также вашего времени от рук взломщиков.
Если это домашний компьютер, то про безопасность, возможно, и нет смысла беспокоиться настолько сильно, достаточно будет надежных паролей и закрытия доступа к портам из сети интернет. Но в случае публичного сервера стоит обратить внимание на обеспечение его защиты.
Надежный пароль должен содержать не менее 12 символов, включая хотя бы один специальный символ, один цифровой символ, одну заглавную и одну строчную букву.
Что еще более важно, пароли не должны быть легко предсказуемыми и не должны основываться на словарных словах.
Однако некоторые пользователи, не владеющие техникой, не понимают или не заботятся о безопасности.
Они продолжают использовать легко предсказуемые пароли, такие как pass123, welcome123, Welcome@1 и т.д., которые можно легко взломать за несколько попыток.
Кроме того, некоторые пользователи не меняют пароли в течение многих лет. Как системный администратор, вы должны внедрить политику надежных паролей, чтобы защитить систему от атак по словарю и перебором.
Это руководство было официально протестировано в Ubuntu 22.04 LTS и ее предыдущих редакциях. Хотя инструкции, опубликованные здесь, одинаковы для Debian и других дистрибутивов на базе Debian и Ubuntu и т.д.
Подключаемые модули аутентификации (PAM) установлены по умолчанию в системах на базе DEB.
Однако вам необходимо установить дополнительный модуль libpam-cracklib.
Для этого выполните следующую команду в Терминале:
$ sudo apt install libpam-cracklib
В системах на базе Debian политики паролей определяются в файле /etc/pam.d/common-password.
Прежде чем вносить в него какие-либо изменения, сделайте резервную копию этого файла.
$ sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.bak
Теперь отредактируйте файл /etc/pam.d/common-password:
$ sudo nano /etc/pam.d/common-password
Найдите следующую строку и отредактируйте или измените ее, как показано ниже.
Если следующей строки не существует, просто добавьте ее.
password required pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1 difok=2 reject_username
Давайте разберем эту строку и посмотрим, что будет делать каждая опция.
Надеюсь, вы получили основное представление о вышеупомянутых параметрах.
Как определено в приведенном выше файле, пользователи теперь должны использовать пароль с показателем сложности пароля, равным 12. Один “кредит” будет даваться за 1 строчную букву, 1 кредит за 1 заглавную букву, 1 кредит за минимум 2 цифры и 1 кредит за 1 другой символ.
Однако вы можете отключить кредиты, присвоив им отрицательные значения, и заставить пользователя использовать комбинацию различных символов минимальной длины.
Посмотрите следующий пример:
password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1 difok=2 reject_username
Как определено выше, пользователи должны использовать пароль сложности 8 символов, включая 1 строчную букву, 1 заглавную букву, 2 цифры и 1 другой символ.
Обратите внимание, что эти ограничения будут применяться только для обычных пользователей, но не для пользователя root.
Пользователь root может использовать любой тип пароля.
Не используйте пользователя root для администрирования сервера. Создайте для этого не привилегированного пользователя с помощью команд useradd и usermod.
После того как вы определили политику паролей, проверьте, работает она или нет.
Давайте назначим простой пароль, который не соответствует политике паролей, и посмотрим, что произойдет.
Чтобы изменить или назначить пароль вошедшему в систему пользователю, выполните команду:
$ passwd
Пример вывода: Changing password for itsecforu. Current password: New password: BAD PASSWORD: it does not contain enough DIFFERENT characters New password: BAD PASSWORD: it is based on a dictionary word New password: Retype new password: BAD PASSWORD: is too simple New password: BAD PASSWORD: is too simple New password: BAD PASSWORD: is too simple passwd: Have exhausted maximum number of retries for service passwd: password unchanged
Как видно из приведенного выше результата, пользователь не может установить пароль, поскольку заданный пароль не соответствует требованиям.
Теперь попробуйте установить пароль, который соответствует фактическим требованиям политики паролей (т.е. 12 символов, включая как минимум 1 строчный, 1 прописной, 2 цифры, 1 другой символ).
Для генерации паролей можно воспользоваться утилитой pwgen или любой другой утилитой.
pwgen создает безопасные пароли, которые в то же время очень легко запомнить. Легко запоминаемые пароли не будут так же безопасны как действительно случайные, но это приемлемый уровень риска для большинства случаев. Преимущество запоминающихся паролей очевидно - у вас не возникнет желание записать их или сохранить в электронном виде в небезопасном месте.
Команда change позволяет указать количество дней до даты принудительной смены пароля. Эта информация используется системой для определения момента, когда пользователь должен его изменить. Эти настройки находятся в /etc/login.defs. Чтобы отключить старение пароля введите следующую команду:
$ change -l имя_пользователя
Чтобы получить информацию о строке годности пароля введите команду:
Также вы можете все настроить вручную, в файле /etc/shadow:
{пользователь}:{пароль}:{последнее_изменение}:{максимум_дней}:{минимум_дней}:{Предупреждение}:{деактивировать}:{строк_годности}:
Рекомендуется использовать такую команду, вместо редактирования файла /etc/shadow вручную:
$ chage -M 60 -m 7 -W 7 имя_пользователя
Также желательно запретить пользователям использовать старые пароли, иначе все старания с попытками заставить их принудительно менять пароли будут сведены к нулю.
Настройте логгирование и аудит для сбора и сохранения всех неудачных попыток входа и попыток взлома. По умолчанию все логи или по крайней мере, большинство из них находятся в папке /var/log/. Подробнее, о том, за что отвечают определенные лог файлы мы говорили в отдельной статье.
Вы можете смотреть логи с помощью таких утилит, как logwatch или logcheck. Они очень сильно упрощают чтение логов. Вы можете просматривать не весь файл, а только интересующие вас события, а также отправлять себе уведомление на электронный адрес.
Наблюдайте за системой с помощью службы auditd. Программа записывает на диск все события аудита которые вас интересуют. Все настройки аудита хранятся в файле /etc/audit.rules при запуске системы сервис прочитывает все правила из этого файла. Вы можете его открыть и настроить все как нужно или же воспользоваться отдельной утилитой - auditctl. Можно настроить такие моменты:
Теперь безопасность сервера Linux будет намного увеличена. Не забывайте ставить сложные пароли и время от времени проверять систему на руткиты.
На этом пока все.