Введение
Безопасность паролей является критически важным компонентом защиты систем и данных от несанкционированного доступа. Слабые или скомпрометированные пароли — один из наиболее распространенных векторов атаки. Внедрение надежной политики паролей — это фундаментальная практика безопасности.
В этой лабораторной работе вы научитесь применять несколько лучших практик безопасности паролей в системе Linux. Вы настроите правила сложности паролей, настроите многофакторную аутентификацию (MFA), поймете роль менеджеров паролей, обеспечите ротацию паролей и узнаете о важности обучения пользователей.
Понимание требований к сложности паролей
На этом шаге вы настроите правила сложности паролей, чтобы пользователи создавали надежные пароли. Надежный пароль обычно включает в себя комбинацию прописных и строчных букв, цифр и специальных символов, а также имеет достаточную длину. Для достижения этой цели мы будем использовать модуль подключаемой аутентификации (PAM) pam_pwquality.
Сначала установим пакет libpam-pwquality, который предоставляет необходимые инструменты.
sudo apt-get install libpam-pwquality -y
Теперь необходимо настроить стек PAM для использования этого модуля при смене паролей. Мы отредактируем файл /etc/pam.d/common-password. Этот файл содержит общую конфигурацию управления паролями.
Откройте файл с помощью редактора nano:
sudo nano /etc/pam.d/common-password
Найдите строку, содержащую pam_unix.so, и добавьте следующую строку перед ней. Это гарантирует, что проверка качества будет выполнена до фактического изменения пароля модулем pam_unix.
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Разберем эти параметры:
retry=3: У пользователя есть 3 попытки ввести соответствующий пароль.minlen=12: Минимальная длина пароля составляет 12 символов.ucredit=-1: Требуется как минимум одна прописная буква.lcredit=-1: Требуется как минимум одна строчная буква.dcredit=-1: Требуется как минимум одна цифра.ocredit=-1: Требуется как минимум один специальный (другой) символ.
Ваш файл должен выглядеть примерно так (некоторые строки могут отличаться):
## /etc/pam.d/common-password
...
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
password [success=1 default=ignore] pam_unix.so obscure sha512
...
Нажмите Ctrl+X, затем Y и Enter, чтобы сохранить файл и выйти из nano.
Теперь протестируем новую политику. Попробуем сменить пароль для пользователя labex.
passwd
Сначала введите текущий пароль (вы можете просто нажать Enter, так как для labex пароль не установлен). Затем попробуйте установить слабый пароль, например password. Система должна отклонить его и показать сообщение об ошибке, поскольку он не соответствует требованиям к сложности.
(current) UNIX password:
New password:
BAD PASSWORD: The password is shorter than 12 characters
Retype new password:
Sorry, passwords do not match.
passwd: Authentication token manipulation error
passwd: password unchanged
Теперь попробуйте снова с надежным паролем, например Labex!P@ssw0rd. Этот пароль должен быть принят.
Вы успешно настроили требования к сложности паролей в вашей системе.
Реализация многофакторной аутентификации
На этом шаге вы научитесь реализовывать многофакторную аутентификацию (MFA). MFA добавляет второй уровень безопасности, требуя от пользователей предоставления двух или более факторов проверки для получения доступа. Мы будем использовать модуль PAM Google Authenticator для добавления аутентификации на основе временных одноразовых паролей (TOTP).
Сначала установите пакет libpam-google-authenticator.
sudo apt-get install libpam-google-authenticator -y
Далее вам нужно сгенерировать конфигурацию MFA для вашего пользователя. Выполните следующую команду от имени пользователя labex (не с sudo).
google-authenticator
Команда задаст вам ряд вопросов. Для целей этой лабораторной работы отвечайте на них следующим образом:
Do you want authentication tokens to be time-based (y/n): НажмитеyиEnter.- Вы увидите QR-код, секретный ключ и резервные коды для экстренных случаев. В реальных условиях вы бы отсканировали QR-код с помощью приложения-аутентификатора на вашем телефоне. Для этой лабораторной работы мы просто продолжим.
Do you want me to update your "/home/labex/.google_authenticator" file? (y/n): НажмитеyиEnter. Это сохранит ваш секретный ключ.Do you want to disallow multiple uses of the same authentication token?: НажмитеyиEnter.Do you want to increase the time-skew window?: НажмитеnиEnter.Do you want to enable rate-limiting for the authentication module?: НажмитеyиEnter.
Это создаст файл .google_authenticator в вашем домашнем каталоге (/home/labex).
Теперь настроим SSH для использования этого токена MFA. Сначала нам нужно указать PAM требовать его для SSH-сессий.
Откройте файл /etc/pam.d/sshd:
sudo nano /etc/pam.d/sshd
Добавьте следующую строку в конец файла:
auth required pam_google_authenticator.so
Сохраните и выйдите из файла (Ctrl+X, Y, Enter).
Далее мы должны включить аутентификацию по запросу-ответу в конфигурации SSH-сервера.
Откройте /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Найдите строку ChallengeResponseAuthentication no и измените ее на yes. Если строка закомментирована символом #, удалите его.
## /etc/ssh/sshd_config
...
ChallengeResponseAuthentication yes
...
Сохраните и выйдите из файла. В реальной системе вы бы перезапустили службу SSH. Однако в этой контейнеризированной среде перезапуск таких служб, как sshd, не поддерживается. Главное — понять шаги настройки, необходимые для включения MFA для SSH.
Использование менеджеров паролей
На этом шаге мы обсудим важность менеджеров паролей. Повторное использование паролей в различных сервисах представляет собой серьезный риск безопасности. Если один сервис будет скомпрометирован, злоумышленники смогут использовать утекший пароль для доступа к вашим другим учетным записям. Менеджер паролей помогает вам генерировать, хранить и управлять уникальными, надежными паролями для каждого сервиса.
KeePassXC — это популярный, бесплатный менеджер паролей с открытым исходным кодом, который хранит ваши пароли в безопасной зашифрованной базе данных. Хотя это графическое приложение, мы установим его, чтобы понять, как такие инструменты интегрируются в рабочий процесс пользователя.
Установим KeePassXC с помощью apt-get.
sudo apt-get install keepassxc -y
После завершения установки вы можете проверить ее, проверив наличие команды.
which keepassxc
Вы должны увидеть следующий вывод, указывающий, что приложение установлено и доступно в пути вашей системы.
/usr/bin/keepassxc
В настольной среде вы бы запустили KeePassXC, создали новую зашифрованную базу данных с надежным мастер-паролем и начали добавлять свои учетные данные для входа на различные веб-сайты и сервисы. Приложение также может автоматически генерировать для вас очень надежные пароли. Ключевой принцип заключается в том, чтобы запомнить один надежный мастер-пароль для разблокировки менеджера, а менеджер позаботится обо всех ваших других сложных паролях.
Регулярная смена паролей
На этом шаге вы научитесь принудительно менять пароли, также известной как старение паролей (password aging). Регулярная смена паролей ограничивает окно возможностей для злоумышленника, который мог украсть пароль.
В Linux вы можете установить общесистемные политики старения паролей в файле /etc/login.defs. Вы также можете установить политики для отдельных пользователей с помощью команды chage. Мы сосредоточимся на команде chage.
Сначала давайте посмотрим текущие настройки старения паролей для пользователя labex.
sudo chage -l labex
Вы увидите вывод, похожий на этот, где большинство значений установлено в never.
Last password change : May 20, 2024
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Значение Maximum number of days between password change установлено в 99999, что фактически означает, что пароль никогда не истекает. Давайте изменим это, чтобы требовать смену пароля каждые 90 дней.
Используйте команду chage с опцией -M для установки максимального срока действия.
sudo chage -M 90 labex
Теперь снова проверьте настройки, чтобы подтвердить изменение.
sudo chage -l labex
Вывод теперь должен показать, что максимальное количество дней равно 90. Дата Password expires также будет соответствующим образом обновлена.
Last password change : May 20, 2024
Password expires : Aug 18, 2024
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Вы успешно настроили политику ротации паролей для пользователя.
Обучение пользователей правилам безопасности паролей
На этом шаге мы сосредоточимся на человеческом факторе безопасности. Технические средства контроля важны, но они наиболее эффективны, когда пользователи также соблюдают правила безопасности паролей. Обучение пользователей лучшим практикам безопасности является важнейшим нетехническим средством контроля.
Вот несколько ключевых моментов правил безопасности паролей:
- Не используйте повторно пароли: Используйте уникальный пароль для каждой учетной записи.
- Не делитесь паролями: Никогда не сообщайте свой пароль никому, включая сотрудников ИТ-отдела.
- Остерегайтесь фишинга: Будьте подозрительны к электронным письмам или сообщениям, которые запрашивают ваши учетные данные.
- Блокируйте экран: Всегда блокируйте свой компьютер, когда отходите от него.
- Используйте парольные фразы: Длинная парольная фраза, такая как
correct-horse-battery-staple, может быть более безопасной и ее легче запомнить, чем короткий, сложный пароль, такой какJ%7d*fQ!.
Чтобы смоделировать создание документа с политикой для пользователей, давайте создадим простой текстовый файл в нашем каталоге проекта, который излагает эти правила.
Сначала создайте файл и добавьте первое правило, используя команду echo и перенаправление вывода >.
echo "1. Do not share your password with anyone." > ~/project/password_policy.txt
Теперь добавим еще два правила в файл, используя оператор добавления >>.
echo "2. Use a unique password for each service." >> ~/project/password_policy.txt
echo "3. Beware of phishing emails asking for credentials." >> ~/project/password_policy.txt
Наконец, отобразим содержимое вашего нового документа с политикой, используя команду cat.
cat ~/project/password_policy.txt
Вы должны увидеть следующий вывод:
1. Do not share your password with anyone.
2. Use a unique password for each service.
3. Beware of phishing emails asking for credentials.
Это простое упражнение демонстрирует, как политики безопасности могут быть документированы и распространены. В реальной организации это было бы частью более широкой программы повышения осведомленности о безопасности.
Итоги
В этой лабораторной работе вы успешно внедрили несколько ключевых лучших практик безопасности паролей в среде Linux. Многоуровневый подход, сочетающий технические средства контроля с обучением пользователей, обеспечивает самую надежную защиту от несанкционированного доступа.
Вы научились:
- Обеспечивать создание надежных паролей, настраивая требования к сложности с помощью
pam_pwquality. - Добавлять критически важный второй уровень безопасности, настраивая многофакторную аутентификацию (MFA) с помощью
pam_google_authenticator. - Понимать роль менеджеров паролей, таких как KeePassXC, в создании и хранении уникальных, надежных паролей.
- Внедрять политики ротации паролей с помощью команды
chageдля снижения риска от скомпрометированных учетных данных. - Осознавать важность обучения пользователей и документирования политик безопасности для соблюдения правил безопасности паролей.
Применяя эти практики, вы можете значительно улучшить состояние безопасности любой системы, которой вы управляете.


