Настройка взаимодействия с RADIUS-сервером для аутентификации при подключении пользователя через SSH

Скачать в формате PDF

 

Настоящий документ содержит описание способа совместного использования Продуктов компании ООО

«С-Терра СиЭсПи» и Продуктов третьих производителей.

ООО «С-Терра СиЭсПи» осуществляет сопровождение настоящего сценария в части настроек Продуктов Компании. Упоминание наименований, продуктов, торговых марок третьих организаций исключительно неформально и не является поддержкой, рекомендацией, либо рекламой. ООО «С-Терра СиЭсПи» не несет какой-либо ответственности в отношении работоспособности и использования этих Продуктов.

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

Решения, разработанные на базе данного сценария, могут применяться в действующих сетях/системах

только после тестовой и/или опытной эксплуатации.

Дополнительные файлы:

pam_amd64.rar

pam_i386.rar

 

Назначение документа

Данный документ описывает настройку взаимодействия с RADIUS сервером для аутентификации при подключении пользователя через SSH.

Описание стенда

Схема стенда (Рисунок 1):

Рисунок 1


 

Логика работы

При попытке подключения на шлюз GW1 по протоколу SSH, будет отправлен запрос на RADIUS сервер и, в зависимости от ответа, аутентификация пользователя завершится успехом или неудачей. При аутентификации используются модули PAM (pluggable authentication module). За связь с RADIUS-сервером на шлюзе отвечает модуль pam-radius-auth.

При недоступности RADIUS сервера, попытка аутентификации завершится неудачей.

При локальном подключении к шлюзу, аутентификация с помощью RADIUS производится не будет. По умолчанию, локальную аутентификацию смогут пройти пользователи cscons и root (при условии установленного пароля).

При попытке подключения посредством SSH происходит проверка наличия локального пользователя на шлюзе. Если пользователь отсутствует, попытка будет неудачной. Данная проверка происходит с использованием NSS (Name Service Switch). В данном документе описывается поведение при использовании только локальных файлов (/etc/passwd, /etc/group и т.д.). Взаимодействие NSS с сетевыми протоколами (например, LDAP) в данном документе не рассматривается.

Чтобы избежать проблемы с отсутствующими локальными пользователями и не задавать их вручную, будет использован модуль pam-script для выполнения пользовательского скрипта. В данном скрипте будет выполнятся команда для добавления нового пользователя (подробнее в п. 5 раздела «Настройка шлюза GW1»).

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

 


 

Настройка стенда

Настройка шлюза GW1

1.    Предполагается, что инициализация шлюза пройдена, заданы корректные сетевые настройки и RADIUS-сервер доступен по сети.

2      Настройте доступ к RADIUS серверу. Для этого измените файл /etc/pam_radius_auth.conf. В данном файле необходимо указать адрес RADIUS сервера (в данном случае – 192.168.1.5:1812), пароль для доступа к нему (в данном случае – secret1) и таймаут в секундах (3). Остальные строки закомментируйте или удалите.

root@sterragate:~# vi /etc/pam_radius_auth.conf

192.168.1.5:1812 secret1 3

3      Измените настройки аутентификации для SSHD модуля. Для этого в файле /etc/pam.d/sshd пропишите использование модулей pam_script.so и pam_radius_auth.so. Остальные строки закомментируйте или удалите.

root@sterragate:~# vi /etc/pam.d/sshd

# PAM configuration for the Secure Shell service

auth optional pam_script.so

auth required pam_radius_auth.so

Где:

·         optional – успешность выполнения модуля не будет влиять на процесс аутентификации.

·         required – успешность выполнения модуля обязательна для успешной аутентификации.

3.1  Действий, описанных выше, достаточно для успешной аутентификации с помощью RADIUS для локальных пользователей уже существующих на шлюзе GW1 (при условии наличия записей для них на RADIUS-сервере).

4      Задайте скрипт для автоматического создания новых пользователей, при попытке подключения через SSH.

root@sterragate:~# vi /usr/share/libpam-script/pam_script_auth

#!/bin/bash

if ! getent passwd $PAM_USER > /dev/null 2>&1; then

 

adduser $PAM_USER --disabled-password --quiet --gecos "" --shell /opt/VPNagent/bin/cs_console

fi

Где:

·         if ! getent passwd $PAM_USER > /dev/null 2>&1 – проверка, существует ли данный пользователь в системе; при отсутствии локального пользователя будет выполнятся команда adduser.

·         adduser – команда для добавления пользователя;

·         %PAM_USER – переменная для подстановки имени пользователя с помощью PAM;

·         --disabled-password – у создаваемых пользователей будет отсутствовать локальный пароль;

·         --quiet – режим без вывода на экран;

·         --gecos “” – не задавать дополнительных полей для пользователя;

·         --shell – задать оболочку по умолчанию;

·         /opt/VPNagent/bin/cs_console – создаваемый пользователь будет попадать в cisco-like console.

5      Пропишите права на выполнение скрипта pam_script_auth:

root@sterragate:~# chmod +x /usr/share/libpam-script/pam_script_auth

6      Заданные настройки будут использоваться со следующей попытки подключения к шлюзу по SSH. Сервис sshd перезапускать нет необходимости.


7       

Проверка работоспособности

1.    Сделайте первую попытку подключится по SSH с новым пользователем с устройства IPHost1.

root@Host1:~# ssh sshuser1@192.168.1.1

sshuser1@192.168.1.1's password:

Permission denied, please try again.

sshuser1@192.168.1.1's password:

Permission denied, please try again.

sshuser1@192.168.1.1's password:

Permission denied (publickey,password).

Попытка подключения будет неудачной.

7.1  При этом в системных логах будут следующие записи:

root@sterragate:~# cat /var/log/auth.log

Aug 31 15:17:55 sterragate sshd[2669]: Invalid user sshuser1 from 192.168.1.100

Aug 31 15:17:55 sterragate sshd[2669]: input_userauth_request: invalid user sshuser1 [preauth]

Aug 31 15:18:02 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

Aug 31 15:18:18 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

Aug 31 15:18:21 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

Aug 31 15:18:26 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

Aug 31 15:18:30 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

Aug 31 15:18:33 sterragate sshd[2669]: Failed password for invalid user sshuser1 from 192.168.1.100 port 62656 ssh2

root@sterragate:~# cat /var/log/auth_priv.log

Aug 31 15:18:02 sterragate groupadd[2676]: group added to /etc/group: name=sshuser1, GID=1000

Aug 31 15:18:02 sterragate groupadd[2676]: group added to /etc/gshadow: name=sshuser1

Aug 31 15:18:02 sterragate groupadd[2676]: new group: name=sshuser1, GID=1000

Aug 31 15:18:02 sterragate useradd[2680]: new user: name=sshuser1, UID=1001, GID=1000, home=/home/sshuser1, shell=/opt/VPNagent/bin/cs_console

Aug 31 15:18:02 sterragate usermod[2687]: change user 'sshuser1' password

Aug 31 15:18:02 sterragate chfn[2692]: changed user 'sshuser1' information

7.2  Пользователь помечен как invalid, дальнейшие попытки оканчиваются неудачей.

7.3  Также по логам видно, что создан новый локальный пользователь sshuser1.

8      Сделайте повторную попытку подключиться по SSH:

root@Host1:~# ssh sshuser1@192.168.1.1

sshuser1@192.168.1.1's password:

sterragate>

Повторная попытка подключения будет удачной.

Пользователь будет попадать в режим непривилегированного пользователя cisco-like консоли.

8.1  Логи операционной системы:

root@sterragate:~# cat /var/log/auth.log

Aug 31 15:19:31 sterragate sshd[2706]: Accepted password for sshuser1 from 192.168.1.100 port 62665 ssh2

Aug 31 15:19:31 sterragate sshd[2706]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory

Aug 31 15:19:31 sterragate sshd[2706]: lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory

root@sterragate:~# cat /var/log/auth_priv.log

Aug 31 15:19:31 sterragate sshd[2706]: pam_unix(sshd:session): session opened for user sshuser1 by (uid=0)

8.2  Логи cspvpngate.log:

root@sterragate:~# cat /var/log/cspvpngate.log

May  5 15:54:54 localhost  cs_console: 0072500b Command interpreter started

May  5 15:54:54 localhost  cs_console: 00725001 Cisco-like console started by user "sshuser1"