Гид по технологиям

Защита SSH на CentOS 7 с двухфакторной аутентификацией WiKID

6 min read Безопасность Обновлено 03 Oct 2025
Защита SSH на CentOS 7 с WiKID 2FA
Защита SSH на CentOS 7 с WiKID 2FA

Зачем добавлять 2FA для SSH

SSH сам по себе обеспечивает шифрованный канал, но стандартная аутентификация имеет ограничения, которые могут вызывать замечания при аудите:

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

Двухфакторная аутентификация через WiKID решает эти задачи: пользователю нужен одноразовый код (OTP) и PIN, а проверка выполняется централизованно на WiKID-сервере.

Кому и когда это полезно

  • Организациям с требованиями PCI, ISO и внутренними политиками доступа.
  • При управлении удалёнными серверами через общедоступные сети.
  • Когда нужно централизованно отзывать доступ или проводить учёт доступа.

Важно: 2FA решает аутентификацию, но не заменяет хорошую практику управления учётными записями и правами.

Что понадобится перед началом

  • Рабочий сервер CentOS 7 с правами root или sudo.
  • Доступ к админке WiKID Strong Authentication (сервер WiKID) для создания домена и сетевых клиентов.
  • Установленный компилятор и набор для сборки пакетов (build tools) на CentOS.
  • Резервный метод доступа (консоль или KVM) на случай ошибок при удалённой настройке.

Добавление домена на сервер WiKID

При создании домена в админке WiKID обратите внимание на формат «Domain Server Code» — это IP-адрес сервера, дополненный нулями слева до 12 цифр. Например, для IP 54.83.0.181 код будет 054083000181.

/files/deb45972-dc02-4897-aa0b-b482e9364092.jpg

Подпись: Форма добавления домена на сервере WiKID — поле для кода сервера и имени домена.

Создание сетевого клиента

После сохранения домена перейдите на вкладку «Network Client» и нажмите «Create New Network Client». Укажите имя клиента и IP-адрес SSH-шлюза или целевого сервера в локальной сети. В качестве протокола выберите RADIUS и укажите созданный домен.

/files/dd20292b-6343-45bd-b2d3-2661db94f746.jpg

Подпись: Создание сетевого клиента в интерфейсе WiKID — выбор протокола RADIUS и указание IP.

На следующей странице задайте общий секрет (shared secret) для RADIUS и сохраните. Повторите процесс для каждого сервера, который будет аутентифицироваться через WiKID.

/files/46e89566-4c67-4452-a263-00f8e200317e.jpg

Подпись: Ввод общего секрета RADIUS для сетевого клиента в WiKID.

Настройка SSH на CentOS 7 для RADIUS-аутентификации

В этом разделе описано, как установить pam_radius и интегрировать его с SSH через PAM. Мы используем pam_radius_auth от FreeRADIUS.

Шаги:

  1. Скачайте архив с исходниками (версия из примера — 1.3.17):
$ wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.17.tar.gz
  1. Распакуйте архив:
$ tar -xzvf pam_radius-1.3.17.tar.gz
  1. Установите зависимости для сборки (pam-devel):
$ sudo yum install pam-devel
  1. Перейдите в распакованный каталог и выполните make:
$ make

В процессе сборки могут появиться предупреждения; главное — чтобы был создан файл pam_radius_auth.so.

  1. Скопируйте библиотеку в каталог безопасности в зависимости от архитектуры:
$ sudo cp pam_radius_auth.so /lib/security/
$ sudo cp pam_radius_auth.so /usr/lib64/security/

(Скопируйте в тот путь, который соответствует вашей архитектуре; при сомнении проверьте наличие каталога.)

  1. Настройте SSH для использования RADIUS через PAM. Откройте /etc/pam.d/sshd и добавьте строку (второй строкой в файле):
auth       sufficient     /lib/security/pam_radius_auth.so

Примечание: параметр sufficient позволит сначала попробовать RADIUS, но при сбое даст возможность штатной аутентификации. Для жёсткого требования RADIUS замените sufficient на required, но делайте это только после проверки доступа через консоль.

  1. Укажите адрес RADIUS-сервера и общий секрет. Создайте или отредактируйте файл /etc/pam_radius_auth.conf и добавьте строку в формате:
«other-server    other-secret       3»

Замените other-server на IP или hostname вашего WiKID-сервера, а other-secret на общий секрет, который вы задали при создании сетевого клиента в WiKID.

  1. Тестирование: запустите в одном окне логирование системных сообщений:
$ sudo tail -f /var/log/secure

и в другом — попытайтесь выполнить SSH-подключение. Смотрите логи на предмет сообщений от pam_radius и WiKID.

Рекомендации по безопасному развёртыванию

  • Сначала разверните 2FA на тестовом сервере и проверьте восстановление доступа.
  • Оставьте временно доступ по паролю/ключу (sufficient), прежде чем переводить в required.
  • Настройте мониторинг и логирование попыток аутентификации.
  • Централизуйте авторизацию через LDAP/AD и используйте RADIUS только для аутентификации (код + PIN).
  • Имейте аварийный доступ к консоли (KVM/IPMI) для восстановления в случае проблем.

Когда такой подход не подходит

  • В средах, где нет стабильной связи с WiKID-сервером (latency/отключения), строгий required может блокировать админов.
  • Для очень старых или минималистичных систем без возможности установки pam_radius.
  • Если бюджет или политика запрещает использование внешнего вендора — тогда рассмотрите open-source варианты локально (например, FreeRADIUS + Google Authenticator), но они дают другую модель управления.

Альтернативы и дополнения

  • Duo Security, Google Authenticator (плагин PAM), YubiKey (FIDO/U2F) — альтернативные способы 2FA.
  • FreeRADIUS в связке с LDAP/AD — вариант для полного контроля собственной RADIUS-инфраструктуры.
  • U2F/FIDO2 считаются более устойчивыми к перехвату кодов и фишингу, но требуют поддержки клиента.

Плейбук развёртывания (краткий чек-лист)

  • Создать резервный доступ (KVM/консоль).
  • Создать домен в WiKID и получить Domain Server Code.
  • Для каждого сервера создать Network Client в WiKID и задать shared secret.
  • Установить pam_radius на целевом сервере и скопировать pam_radius_auth.so.
  • Добавить строку в /etc/pam.d/sshd и заполнить /etc/pam_radius_auth.conf.
  • Тестировать входы, проверять /var/log/secure.
  • Перейти с sufficient на required после тестов и утверждений.

Роли и обязанности

  • Системный администратор: установка pam_radius, правка PAM, тестирование доступа.
  • Администратор WiKID: создание доменов, управление токенами, сброс PIN и блокировка пользователей.
  • Команда безопасности: утверждение политики 2FA, аудит логов и инцидент-ответ.

Критерии приёмки

  • Пользователь не может войти по SSH без одноразового кода WiKID.
  • Логи аутентификации содержат запись об успешной/неуспешной попытке через RADIUS.
  • Для критических серверов реализован резервный доступ через консоль.
  • Документированы шаги отката (возврат к password/ssh-key аутентификации).

Безопасность и приватность

  • WiKID хранит ключи и валидирует PIN/OTP — убедитесь, что доступ к админке WiKID ограничен.
  • Логи на серверах будут содержать информацию о попытках входа и логины — обрабатывайте их в соответствии с политикой конфиденциальности.
  • Если вы интегрируете с AD/LDAP, убедитесь, что передача данных между компонентами происходит по защищённым каналам.

Короткий план отката при проблемах

  1. Подключиться к серверу через консоль/KVM.
  2. Удалить или закомментировать строку pam_radius в /etc/pam.d/sshd.
  3. Вернуть предыдущую конфигурацию PAM и перезапустить sshd:
$ sudo systemctl restart sshd
  1. Проверить доступ и затем отладить проблему на тестовом окружении.

Мини-словарь

  • WiKID — сервер для двухфакторной аутентификации (OTP + PIN).
  • RADIUS — протокол для аутентификации, авторизации и учёта запросов.
  • PAM — Pluggable Authentication Modules, модульная система аутентификации в Linux.
  • OTP — одноразовый пароль/код.

Заключение

Интеграция CentOS 7 с WiKID через pam_radius повышает уровень безопасности SSH-доступа и даёт централизованный контроль над одноразовыми токенами и блокировкой пользователей. Следуйте постепенному плану внедрения, обязательно тестируйте и имейте резервный доступ. Это решение особенно полезно для сред с требованиями аудита и строгой политикой доступа.

Ссылки:

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Защита от Logjam на Ubuntu/Debian
Безопасность

Защита от Logjam на Ubuntu/Debian

Dark Sky: гиперлокальный прогноз дождя
Погода

Dark Sky: гиперлокальный прогноз дождя

Защита SSH на CentOS 7 с WiKID 2FA
Безопасность

Защита SSH на CentOS 7 с WiKID 2FA

Как остановить автоматические обновления Windows 10
Windows

Как остановить автоматические обновления Windows 10

Как нанять Stay Dry Roofing Indianapolis
Ремонт

Как нанять Stay Dry Roofing Indianapolis

Исправить «DNS‑сервер не отвечает» в Windows 11
Сеть

Исправить «DNS‑сервер не отвечает» в Windows 11