Настройка двухфакторной аутентификации команды SUDO
В статье описывается настройка сервера Linux для включения двухфакторной аутентификации с одноразовым кодом доступа (OTP) или PUSH уведомлением при выполнении команды sudo.
Перед началом работы
Перед продолжением убедитесь, что у вас есть root-доступ для сброса конфигурации sudo в случае некорректной настройки.
Возможные способы аутентификации:
Мобильное приложение MultiFactor
СМС
Аппаратные OTP токены
Приложения OTP: Google Authenticator или Яндекс.Ключ
Telegram
Принцип работы
- SUDO использует модуль PAM_RADIUS для второго фактора проверки подлинности;
- Модуль подключается через протокол RADIUS к сервису Мультифактор;
- Мультифактор отправляет одноразовый пароль или подтверждение запроса доступа на телефон пользователя;
- Пользователь вводит одноразовый пароль или подтверждает запрос в телефоне.
Настройка Мультифактора
Зайдите в систему управления Мультифактором, далее в раздел "Ресурсы" и создайте новый Linux сервер. После создания вам будут доступны два параметра: NAS Identifier и Shared Secret, они потребуются для последующих шагов.
Установка и настройка модуля PAM_RADIUS
- CentOS
- Debian
- Astra Linux Орёл
$ sudo yum -y install epel-release
$ sudo yum -y install pam_radius
$ sudo apt update
$ sudo apt install libpam-radius-auth
$ sudo apt install debian-archive-keyring dirmngr
$ echo deb https://mirror.yandex.ru/debian/ stretch main contrib non-free | sudo tee -a /etc/apt/sources.list
$ sudo apt update
$ sudo apt install libpam-radius-auth
Далее создайте файл конфигурации
$ 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).
Настройка PAM модулей sudo
Откройте для редактирования файл /etc/pam.d/sudo:
$ sudo vi /etc/pam.d/sudo
Отредактируйте файл согласно необходимой конфигурации:
Пароль и второй фактор
- CentOS
- Debian
- Ubuntu
- Astra Linux Orel
#%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
@include common-auth
@include common-account
@include common-session-noninteractive
#%PAM-1.0
auth required pam_env.so readenv=1 user_readenv=0
auth required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_sudo.conf
@include common-auth
@include common-account
@include common-session-noninteractive
#%PAM-1.0
auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_sudo.conf
@include common-auth
@include common-account
@include common-session-noninteractive
account required pam_tally.so
Только второй фактор
- CentOS
#%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
где:
- NAS_Identifier: скопируйте из соответствующего параметра настроек Linux ресурса Мультифактор.
Сохраните файл и закройте редактор (:x).