Настройка 2FA для Ubuntu
Автор Denis Shelamov, Last modified by Denis Shelamov на 30 января 2024 10:48 AM

Установка модуля PAM Radius в Ubuntu 22.04 LTS

Содержание:

  1. Предварительные требования
  2. Установка и настройка модуля PAM
  3. Включение PAM в SSH
    1. Настройка 2FA в SSH
    2. Настройка 1FA в SSH
  4. Включение 2FA для локального входа в Ubuntu
  5. Включение 2FA (PUSH) для RDP подключения
  6. Устранение проблем и проверка работы

Предварительные требования:

1. Ubuntu 22.04 в домене Active Directory.

2. Выданные на доменного пользователя (администратора) права входа под root и доступ по SSH. Обученные аутентификаторы (OTP/PUSH) в uc/mc под данным пользователем.

3. Настроенные компоненты Indeed: Indeed AM Server и NPS Radius Extension.

4. Для использования аутентификации с помощью PUSH, требуется предварительно настроенный Indeed Key сервер.

5. Выполнена установка и настройка роли Служба политики сети и доступа (Network Policy and Access Services (NPS)), возможна установка роли на сервере Indeed AM.

6. Создана сетевая политика, политика запросов на подключение, определен метод аутентификации по-умолчанию.

7. Задан IP-адрес клиента, либо указана подсеть (например ip/24) для диапазона клиентов Radius (Linux ПК) со стороны NPS Radius Server:

8. На сервере NPS, включена политика: Indeed ID > Radius > SoftwareTOTP > Challenge-Response: Сообщение пользователю "OTP "

Обновляем все компоненты на Ubuntu:
apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade -y

Версия релиза:
lsb_release -a

No LSB modules are available.
Distributor ID:   Ubuntu
Description:       Ubuntu 22.04.3 LTS
Release:              22.04
Codename:        jammy

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

sudo apt install libpam-radius-auth

Настройте подключение к Radius серверу.
Откройте и отредактируйте файл, где задается подключение к Radius серверу
sudo  nano /etc/pam_radius_auth.conf

Прописываем IP-адрес Radius-сервера, общий секрет и таймаут, обязательно удалив или закомментировав лишние строки, оставив целевой сервер:

10.10.10.12 secret 60

 
Включение PAM в SSH

Делаем резервную копию файла sshd_config:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Откройте для редактирования файл с настройками SSH:
sudo nano /etc/ssh/sshd_config

В файле включите следующие настройки:
KbdInteractiveAuthentication yes  
(ChallengeResponseAuthentication yes – для версии Ubuntu 20.04)
AuthenticationMethods keyboard-interactive
UsePAM yes

Настройка 2FA в SSH:

Делаем резервную копию файла /etc/pam.d/sshd
sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

Редактируем файл:
sudo nano /etc/pam.d/sshd

Комментируем:
#@include common-auth

Добавляем:
# 2FA OTP/PUSH Auth Settings
auth    required    pam_radius_auth.so

В результате получаем:


Перезапускаем службу ssh и проверяем статус:
sudo systemctl restart ssh
sudo systemctl status ssh

Подключаемся под доменными пользователями по ssh:

ssh admin-indeed@indeed.local@10.10.10.28
1. Вводим доменный пароль.
2. В приложение Indeed Key придет PUSH уведомление, после подтверждения успешно отрывается сессия.

Подключаемся под доменным пользователем по ssh:
ssh user6@indeed.local@10.10.10.28
Вводим доменный пароль.
Необходимо ввести OTP-код из приложения Indeed Key.



Настройка 1FA в SSH:

Редактируем файл:
sudo nano /etc/pam.d/sshd

Комментируем:
#@include common-auth

Добавляем (применяем) параметр skip_passwd для пропуска ввода пароля:
# 1FA OTP/PUSH Auth Settings
auth    required    pam_radius_auth.so  skip_passwd

В результате получаем:

Перезапустите службу ssh.
sudo systemctl restart ssh
sudo systemctl status ssh

Для включения 1FA аутентификации, со стороны NPS:
В политике запросов на подключение > Параметры > Проверка подлинности
Включить опцию: Принимать пользователей без проверки учетных данных

Подключаемся под доменным пользователем по ssh:

ssh admin-indeed@indeed.local@10.10.10.28
Доменный пароль вводить не требуется.
В приложение Indeed Key придет PUSH уведомление.

Подключаемся под доменным пользователем по ssh:
ssh user6@indeed.local@10.10.10.28
Доменный пароль вводить не требуется.
Необходимо ввести OTP-код из приложения Indeed Key.



Включение 2FA для локального входа в Ubuntu:

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

добавляем в конце файла конфигурации:
auth    required    pam_radius_auth.so



Входим пользователем, включенным в Radius-группу (политику) c PUSH-аутентификацией:

После ввода доменного пароля пользователя, в приложение Indeed Key придет Push уведомление, после подтверждения которого, успешно осуществится вход в систему.

Входим пользователем включенным в Radius-группу (политику) c OTP-аутентификацией:



После ввода доменного пароля пользователя, необходимо ввести OTP-код из приложения Indeed Key, после чего, успешно осуществится вход в систему.



При входе доменным пользователем с правами root (sudo su) система запросит второй фактор, который был ранее определен в политике.
В примере для пользователя Admin-Indeed, после ввода доменного пароля – это Push-уведомление, после подтверждения которого, получаем полный root доступ по SSH и локально.

Включение 2FA (PUSH) для RDP подключения

В данной инструкции используется модуль xRDP для RDP подключения. Данный модуль не поддерживает отображение окна для ввода OTP, поэтому использование методов аутентификации с вводом ОТП технически невозможно. В данном сценарии возможно использование только PUSH.

Устанавливаем xRDP на Ubuntu 22.04
sudo apt -y install xrdp
sudo systemctl status xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
sudo ufw allow 3389

Откройте для редактирования файл с настройкой xrdp для модуля PAM:
sudo nano /etc/pam.d/xrdp-sesman

Добавляем в конце конфигурационного файла, строку:
auth required pam_radius_auth.so

Подключаемся по RDP к 10.10.10.28 под доменной учетной записью.
admin-indeed@indeed.local

После ввода доменного пароля придет Push уведомление в приложении Indeed Key для подтверждения аутентификации.

Устранение проблем и проверка работы:

Если на RADIUS (NPS) сервер не приходят радиус запросы:
1. Проверьте, что открыты необходимые порты на брандмауэрах клиента и сервера.
2. Проверьте подключение до RADIUS сервера утилитой Radtest:
apt-get install freeradius-utils

Запросом в формате:
radtest username@domain.local password IPaddressRadiusServer Port SharedSecret
radtest user6@indeed.local P@$$w0rD 10.10.10.12 1812 secret

Проверка Radius-запросов со стороны RADIUS-сервера через Wireshark:

События Windows Event Viewer:


3. Проверьте версию установленного пакета:
sudo apt install apt-show-versions
apt-show-versions libpam-radius-auth
libpam-radius-auth:amd64/jammy 2.0.0-1 uptodate

4. Если по логам Windows Event Viewer (служба политики сети и доступа) и Wireshark приходят запросы на NPS Radius Server server, через утилиту radtest, но логов и пакетов при попытке аутентификации через libpam-radius-auth – нет, а при подключении по SSH получаем ошибку: Permission denied (keyboard-interactive)
то проблема в конфиге: pam_radius_auth.conf, либо библиотеке - libpam-radius-auth – которую необходимо переустановить:
sudo apt-get -y purge libpam-radius-auth
sudo apt install libpam-radius-auth

5.Проверьте конфигурацию и работу 2FA в Ubuntu.

(4 голос(а))
Эта статья полезна
Эта статья бесполезна