Перейти к основному содержимому

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

В статье описывается настройка сервера Linux для включения двухфакторной аутентификации с одноразовым кодом доступа (OTP) или PUSH уведомлением при выполнении команды sudo.

Перед началом работы

внимание!

Перед продолжением убедитесь, что у вас есть root-доступ для сброса конфигурации sudo в случае некорректной настройки.

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • СМС
  • Аппаратные OTP токены
  • Приложения OTP: Google Authenticator или Яндекс.Ключ
  • Telegram

Принцип работы

  1. SUDO использует модуль PAM_RADIUS для второго фактора проверки подлинности;
  2. Модуль подключается через протокол RADIUS к сервису Мультифактор;
  3. Мультифактор отправляет одноразовый пароль или подтверждение запроса доступа на телефон пользователя;
  4. Пользователь вводит одноразовый пароль или подтверждает запрос в телефоне.

Настройка Мультифактора

Зайдите в систему управления Мультифактором, далее в раздел "Ресурсы" и создайте новый Linux сервер. После создания вам будут доступны два параметра: NAS Identifier и Shared Secret, они потребуются для последующих шагов.

Установка и настройка модуля PAM_RADIUS

$ sudo yum -y install epel-release
$ sudo yum -y install pam_radius

Далее создайте файл конфигурации

$ sudo vi /etc/pam_radius_sudo.conf

Впишите в него настройки RADIUS сервера Мультифактора, сохраните и закройте редактор (:x)

radius.multifactor.ru	SHARED_SECRET	40

где:

  • radius.multifactor.ru: адрес облачного сервера
  • SHARED_SECRET: скопируйте из соответствующего параметра настроек Linux ресурса Мультифактор
  • 40: таймаут ожидания запроса с запасом

В файле хранится секретный ключ, поэтому установите на него права доступа на чтение только пользователю root

$ sudo chmod 0600 /etc/pam_radius_sudo.conf

Настройка sudo

Убедитесь, что для пользователей установлен пароль на вызов sudo.

Откройте для редактирования файл /etc/sudoers

$ sudo vi /etc/sudoers

Для пользователей в группе sudo стандартная конфигурация будет иметь следующий вид (отсутствует флаг NOPASSWD):

%sudo   ALL=(ALL:ALL) ALL

Для запроса пароля при каждом вызове sudo добавьте строку:

Defaults timestamp_timeout=0

Сохраните файл и закройте редактор (:x).

Настройка common-auth

sudo nano /etc/pam.d/common-auth

Добавляем в конце файла конфигурации, заменяя NAS_Identifier:

auth required pam_radius_auth.so client_id=NAS_Identifier conf=/etc/pam_radius_ssh.conf

Настройка PAM модулей sudo

Откройте для редактирования файл /etc/pam.d/sudo:

$ sudo vi /etc/pam.d/sudo

Отредактируйте файл согласно необходимой конфигурации:

Пароль и второй фактор

#%PAM-1.0
auth substack system-auth
auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_sudo.conf
account include system-auth
password include system-auth
session include system-auth

Только второй фактор

#%PAM-1.0
auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_sudo.conf
account include system-auth
password include system-auth
session include system-auth

где:

Сохраните файл и закройте редактор (:x).