Статья: Применение РАМ для обеспечения двухфакторной аутентификации через сервис Яндекс.ключ на ОС Альт

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

* Модуль pam_tcb.so реализует поддержку схемы управления теневыми паролями TCB для всех групп управления, определенных в PAM: authentication, account, session, и password [15].

• Модуль pam_passwdqc проверяет надежность пароля. Помимо проверки обычных паролей, он предлагает поддержку парольных фраз и может генерировать случайные пароли [16].

• Модуль pam_google_authenticator.so позволяет использовать аутентификацию через сервис Яндекс.ключ при локальном входе в систему.

Рис. 4 Конфигурационный файл system-auth-local-only

Стоит отметить, что данный конфигурационный файл влияет на всю локальную аутентификацию, поэтому для корректного функционирования системы у каждой учетной записи должна быть привязка к генератору одноразовых паролей через сервис Яндекс.ключ. Например, для входа в режим суперпользователя командой su после добавления настройки необходимо указывать не только постоянный пароль, но и одноразовый.

Рис. 5 Локальная двухфакторная аутентификация для пользователя pavel

Далее производится настройка конфигурации в файле /etc/pam.d/chpasswd. Команда chpasswd предоставляет функционал для изменения паролей одного или нескольких пользователей системы. Её работа аналогична команде passwd, но предоставляет возможность изменения паролей нескольких пользователей одновременно. Для выполнения chpasswd требуются привилегии суперпользователя, и она обеспечивает удобный способ эффективного управления паролями в многопользовательской среде.

Конфигурация файла /etc/pam.d/chpasswd:

• Модуль pam_permit представляет собой простейшую функцию, которая при любых вводных даст положительный результат. Его часто использую как замену отсутствия модуля у обрабатываемого сервиса.

• Модуль pam_userpass.so запрашивает пару пользователь-пароль, но при этом не выполняет никакой аутентификации. При запросе данной пары данный модуль сохраняет ее в стеке pam для дальнейшей аутентификации через pam_tcb [17].

* Конфигурационный файл system-auth-use_first_pass импортирует настройки из двух других конфигурационных файлов system-auth- use_first_pass-local-only и system-auth-common.

Конфигурационный файл system-auth-common был рассмотрен ранее, а файл system-auth-use_first_pass-local-only в свою очередь состоит из одного модуля pam_tcb.so, использующегося в двух сервисах: аутентификации и управления паролями.

Рис. 6 Конфигурационный файл chpasswd

Для того, чтобы реализовать использование механизма двухфакторной аутентификации при смене паролей пользователей командой chpasswd необходимо добавить в файл /etc/pam.d/chpasswd строку auth include system-auth, которая будет импортировать настройки из конфигурационного файла system-auth-local-only.

Рис. 7 Модифицированный конфигурационный файл chpasswd

Теперь при смене пароля командой chpasswd будут запрашиваться постоянный и одноразовый пароли для того, чтобы добиться более обдуманного подхода к безопасности учетных записей пользователей

Рис. 8 Двухфакторная аутентификация при использовании команды chpasswd

Настройка двухфакторной аутентификации с использованием конфигурационных файлов PAM для сетевых сервисов

двухфакторный аутентификация яндекс сервис

SSH (secure shell) - протокол, предназначенный для обеспечения защищенного удаленного подключения к компьютеру с целью выполнения команд в терминале. Для запуска процедуры подключения необходимо ввести команду ssh пользователь_для_подключения@имя_компьютера после этого ввести пароль пользователя. В базовой конфигурации для удаленного подключения по ssh требуется лишь ввод постоянного пароля пользователя. Для того, чтобы нейтрализовать данную уязвимость системные администраторы часто прибегают к помощи генераторов одноразовых паролей, которые позволяют обеспечить дополнительный уровень защиты системы [18].

Для того, чтобы двухфакторная аутентификация при удаленном подключении по ssh работала необходимо изменить параметр ChallengeResponseAuthentication в конфигурационном файле /etc/openssh/sshd_config с «no» на «yes». Данный параметр активирует аутентификацию типа вызов-ответ, при которой секретный ключ (в данном случае одноразовый пароль) не отправляется через сеть.

Для того, чтобы добавить возможность использования двухфакторной аутентификации при подключении удаленного устройства по ssh необходимо добавить в конфигурационный файл sshd строку: auth include common-login - закомментировав при этом две строки, которые отвечают за аутентификацию: auth required pamuserpass.so и auth include common-login-use_first_pass.

Рис. 9 Модифицированный конфигурационный файл sshd

После внесения всех изменений в файлы pam и /etc/openssh/sshd_config необходимо перезагрузить службу sshd.service командой systemctl restart sshd.service для применения всех совершенных изменений. После перезагрузки статус службы sshd должен измениться на active. Для тестирования был использован компьютер под управлением ОС Kali Linux с ip-адресом 10.0.2.8. Сервер ssh (ОС Альт 10.0.2.9) принял постоянный и одноразовый пароли и разрешил доступ к командной строке из-под учетной записи pavel. Произведенное успешное подключение по ssh к удаленному компьютеру с ip-адресом 10.0.2.9 и пользователем pavel, демонстрирует корректную настройку механизма двухфакторной аутентификации.

Рис. 10 Успешное подключение по ssh с использование двухфакторной аутентификации

Для обеспечения более надежной защиты подключения по ssh внесены настройки в конфигурационной файл /etc/openssh/sshd_config. Установлен порт 1480, на котором будет работать служба ssh, а также параметры аутентификации.

* Параметр LoginGraceTime отвечает за время, доступное пользователю для выполнения аутентификации (30s). По истечению данного времени аутентификация прекратиться.

• Параметр PermitRootLogin позволяет настроить запрет на подключение по ssh к суперпользователю (no).

• Параметр AllowUsers отвечает за настройку доступа подключения только к определенным пользователям (pavel)

• Параметр MaxAuthTries определяет доступное количество попыток подключения в созданной сессии (2) [19].

Данные настройки помогут обезопасить систему от брутфорс-атак и других попыток несанкционированного доступа к системе, так как сетевые протоколы чаще всего подвергаются атакам со стороны злоумышленников.

Рис. 11 Подключение по ssh с обновленными параметрами службы

Протокол ftp используется для передачи файлов в сети Интернет или в локальных сетях, однако спроектированный довольно долгое время назад, данный протокол сегодня совершенно не отвечает требованиям безопасности ввиду передачи команд открытым текстом [20]. Для обеспечения механизма двухфакторной аутентификации при использовании ftp можно использовать команду sftp, которая обеспечивает защищенное подключение через порт службы ssh. Ввиду того, что ранее были произведены настройки в конфигурационном файле sshd, никаких действий более производить не нужно.

Рис. 12 Успешное подключение по ftp Уязвимости актуальные для сетевых сервисов ssh и ftp

Уязвимости в сетевых сервисах, таких как SSH и FTP, могут быть использованы злоумышленниками для получения несанкционированного доступа, перехвата данных или выполнения атак на целевые системы. Эти уязвимости чаще всего возникают либо по причине использования устаревших версий программного обеспечения, либо связаны с ошибками при настройке и эксплуатации самого сервиса [21].

• CVE-2016-2183. Тип: разглашение информации. Описание: "sweet32" -- это уязвимость, касающаяся шифрования данных в различных протоколах, таких как TLS, SSH и IPSec. Уязвимость связана с использованием шифрования DES (Data Encryption Standard) и Triple DES (3DES). Эти шифры имеют ограничение, связанное с количеством блоков данных, которые они могут обработать безопасным образом [22]. Влияние: среднее.

• CVE-2017-15906. Тип: повышение привилегий. Описание: эта уязвимость связана с ошибкой в sftp-server, используемым в OpenSSH до версии 7.6. Проблема заключается в том, что функция process_open в файле sftp-server.c неправильно контролирует возможность записи (write operations) в режиме "только для чтения" (readonly mode). Это позволяет злоумышленникам создавать файлы нулевой длины (zero-length files) даже в случае, когда такое должно быть запрещено [23]. Влияние: среднее.

• CVE-2018-15473. Тип: разглашение информации. Описание: уязвимость в OpenSSH до версии 7.7 связана с возможностью осуществить идентификацию пользователей злоумышленниками (user enumeration). Эта проблема обусловлена отсутствием задержки в прекращении обработки запроса на аутентификацию для недопустимого пользователя до полного разбора пакета, содержащего этот запрос. Конкретные файлы кода, затронутые уязвимостью, включают auth2-gss.c, auth2-hostbased.c и auth2- pubkey.c [24]. Влияние: высокое.

• CVE-2016-10009. Тип: выполнение произвольного кода.

Описание: уязвимость в ssh-agent в OpenSSH до версии 7.4 связана с недостаточной проверкой путей поиска (untrusted search path vulnerability). Эта проблема возникает в части кода ssh-agent.c, отвечающей за конфигурацию агента, осуществляющего аутентификацию SSH. Атакующий может использовать уязвимость, при условии наличия возможности управлять агентом SSH и перенаправлять сокет агента (agent-socket) в свою систему [25].

Влияние: очень высокое.

• CVE-2016-10012. Тип: повышение привилегий. Описание: уязвимость в OpenSSH до версии 7.4 связана с менеджером общей памяти, который используется в процессе сжатия данных перед аутентификацией (preauthentication compression). Этот менеджер общей памяти, используемый внутри sshd, не обеспечивает корректную проверку границ массивов для всех компиляторов, поэтому, когда атакующий, являясь локальным пользователем, получил доступ к привилегированному процессу, который работает в изолированном окружении (sandboxed), манипулируя структурами данных m_zback и m_zlibможет, может повысить свои привилегии [26]. Влияние: высокое.

• CVE-2016-6515. Тип: отказ в обслуживании. Описание: уязвимость в OpenSSH до версии 7.3 связана с функцией auth_password, которая отвечает за обработку паролей при аутентификации по паролю (password authentication). Проблема заключается в том, что данная функция не ограничивает длину пароля, предоставленного для аутентификации. Атакующий может использовать эту уязвимость, предоставив очень длинную строку в качестве пароля в процессе аутентификации. Это может привести к отказу в обслуживании (denial of service) из-за чрезмерного использования вычислительных ресурсов для обработки длинного пароля [27]. Влияние: очень высокое.

Заключение

В данной статье были представлены настройки, реализующие механизм двухфакторной аутентификации в локальных и сетевых сервисах на операционной системе ОС Альт. Основное внимание уделено интеграции сервиса Яндекс.ключ с использованием пакета libpam-google-authenticator в рамках конфигурационных файлов Pluggable Authentication Modules (PAM).

Представленные настройки призваны обеспечить высокий уровень безопасности системы, предоставляя дополнительный слой защиты для критически важных сервисов. Это особенно актуально в контексте современных вызовов в области кибербезопасности, где злоумышленники часто применяют инструменты брутфорса и другие методы для проникновения в систему.

Интеграция сервиса Яндекс.ключ через libpam-google-authenticator представляется возможной для реализации двухфакторной аутентификации, что существенно повышает уровень защиты от потенциальных атак. Эти настройки не только повышают общую устойчивость системы к угрозам, но и служат практическим решением для обеспечения безопасности в условиях постоянно эволюционирующих киберугроз.

Библиографический список

1. Греков, В. С. Перспективы кибербезопасности в нефтегазовой отрасли / В. С. Греков, А. Г. Уймин // Губкинский университет в решении вопросов нефтегазовой отрасли России: Тезисы докладов VI Региональной научно-технической конференции, посвященной 100-летию М.М. Ивановой, Москва, 19-21 сентября 2022 года. Москва: Российский государственный университет нефти и газа (национальный исследовательский университет) имени И.М. Губкина, 2022. С. 1108-1109.

2. Brian Donohue Двухфакторная аутентификация: что это и зачем оно нужно? // АО «Лаборатория Касперского» [Электронный ресурс] URL: https://www.kaspersky.ru/blog/what_is_two_factor_authenticatio/4272/ (дата обращения: 11.01.2024).

3. Подключаемые Модули Аутентификации (PAM) // FreeBSD [Электронный ресурс] URL: https://docs.freebsd.org/ru/articles/pam/ (дата обращения: 03.01.2024).

4. Руководство администратора ЛКНВ.11100-01 90 01 // ООО «Базальт СПО», 2019 [Электронный ресурс] URL: https://www.basealt.ru/fileadmin/user_upload/8_sp_ruk_adm.pdf (дата обращения: 11.01.2024).

5. PAM // Gentoo Authors [Электронный ресурс] URL: https://wiki.gentoo.org/wiki/PAM/ru (дата обращения: 03.01.2024).

6. Авторизация с помощью PAM // Документация openSUSE [Электронный ресурс] URL: http://open-suse.ru/opensuse-doc/cha.pam.html (дата обращения: 03.01.2024).

7. Яндекс Ключ // Яндекс Справка [Электронный ресурс] URL: https://yandex.ru/ support/id/authorization/twofa.html (дата обращения:.

8. TOTP (Time-based one-time Password algorithm) // Habr [Электронный ресурс] URL: https://habr.com/ru/articles/534064/ (дата обращения: 03.01.2024).

9. pam_securetty // OpenNET Интерактивная система просмотра системных руководств [Электронный ресурс] URL: https://www.opennet.ru/man.shtml?topic=pam_securetty&category=8&russian=2 (дата обращения: 03.01.2024).

10. Как работает PAM (Pluggable Authentication Modules) // OpenNET Stanislav Ievlev [Электронный ресурс] URL: https://www.opennet.ru/base/dev/pam_linux.txt.html (дата обращения.

11. pam_loginuid // OpenNET Интерактивная система просмотра системных руководств [Электронный ресурс] URL: https://www.opennet.ru/man.shtml?topic=pam_loginuid&category=8&russian=2 (дата обращения: 03.01.2024).

12. Модуль PAM_SYSTEMD // freedesktop [Электронный ресурс] URL: https://www.freedesktop.org/software/systemd/man/latest/pam_systemd.html (дата обращения: 03.01.2024).

13. Ограничение использования консолей // ALT Linux Wiki [Электронный ресурс] URL: https://www.altlinux.org/%D0%9E%D0%B3%D1%80%D0%B0%D0%BD%D0% B8%D 1 %87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D 1 %81 %D0% BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0% BD%D0%B8%D 1 %8F_%D0%BA%D0%BE%D0%BD%D 1 %81 %D0%BE%D0 %BB%D0%B5%D0%B9 (дата обращения: 03.01.2024).