: :

ПнВтСрЧтПтСбВс

2018-03-12 10:16:07 1551 0

Настройка аутентификации пользователей Proftpd на Radius сервере

Для настройки централизованной аутентификации на FTP сервере удобно использовать учетные записи, которые можно хранить централизованно на одном сервере. Для таких целей подходит протокол Radius, который позволяет производить аутентификацию и авторизацию пользователей централизованно. В качестве radius сервера будем использовать свободное программное обеспечение Freeradius сервер. А в качестве Ftp сервера будет использован Proftpd.

Настройка Freeradius

Настроим так называемые VSA (Vendor-Specific Attributes), которые позволят использовать при общении NAS и Radius сервера расширенные атрибуты вендора

Редактируем файл /etc/raddb/dictionary , добавим в конец файла записи вендора Unix

VENDOR          Unix    4

BEGIN-VENDOR Unix

ATTRIBUTE       Unix-User-UID            10      integer
ATTRIBUTE       Unix-User-GID            11      integer
ATTRIBUTE       Unix-User-Home           12      string
ATTRIBUTE       Unix-User-Shell          13      string
ATTRIBUTE       Unix-User-Group-Names    14      string
ATTRIBUTE       Unix-User-Group-Ids      15      string

END-VENDOR Unix

Описание расширенных атрибутов

  • Unix-User-UID - uid пользователя;
  • Unix-User-GID - gid группы пользователя;
  • Unix-User-Home - домашняя директория пользователя;
  • Unix-User-Shell - командная оболочка пользователя;
  • Unix-User-Group-Names - имя группы в которую входит пользователь;
  • Unix-User-Group-Ids - gid группы в которую входит пользователй.

Третий столбец с числами указывает идентификатор атрибута, четвертый столбец - указывает тип записи, которая может храниться в атрибуте.

Теперь настроим пользователей на Radius сервере учетные записи которых будут использоваться при авторизации на FTP. И добавим для пользователей расширенные атрибуты.

В файл /etc/raddb/users добавляем пользователей

Создадим двух пользователей у одного укажем расширенные атрибуты Unix, а другой будет получаеть эти атрибуты автоматически при подключении к FTP

"admin" Auth-Type := Accept, User-Password == "qwerty123"
        Unix-User-UID := 10010,
        Unix-User-GID := 10020,
        Unix-User-Home := "/ftp",
        Unix-User-Shell := "/bin/bash",
        Unix-User-Group-Names := "radius_users,ftp_users",
        Unix-User-Group-Ids := "10030,10040"

"test"  Auth-Type := Accept, User-Password == "1111"

Добавим наш FTP сервер как клиента Freeradius, для этого добавим в файл /etc/raddb/clients.conf запись

client proftpd {
        ipaddr = 172.20.1.58/32
        secret = testing111
        nas_type = ftp
}

Запускаем демона Freeradius

sudo systemctl start radiusd

Настройка Proftpd

В основной конфигурационный файл /etc/proftpd/proftpd.conf добавляем секции:

  <IfModule mod_radius.c>
  # включение использования radius сервера
  RadiusEngine on
  
  #  адрес сервера и пароль NAS для аутентификации

  RadiusAuthServer 172.20.1.210:1812 testing111

  # адрес сервера и пароль NAS  для авторизации

  RadiusAcctServer 172.20.1.210:1813 testing111

  # расположение файла логов

  RadiusLog /etc/proftpd/radius.log

  # Указание для определения расширенных атрибутов


  # Вендор

  RadiusVendor Unix 4

  # Информация для параметров пользователя
  # формат - uid gid home shell

  RadiusUserInfo $(10:10015) $(11:10021) $(12:/tmp) $(13:/bin/bash)

  # Информация о членстве пользователя в группах
  # формат - "основная группа" "группы в которую входит пользователь"
  "gid для груп в которые входит пользователь"

  RadiusGroupInfo $(11:10021) $(14:ftp) $(15:10040)
  </IfModule>

При указании параметров используется формат записи значений $(значение1:значение2)
Значение1 - идентификатор расширенного атрибута, который мы указывали при настройке Freeradius,
Значение2 используется по-уиолчанию, если указанный идентификатор для пользователя не указан в настройках radius.
Т.е. для пользователя admin uid будет равен - 10010 (как указано в файле /etc/raddb/users), а
для пользователя test он получит значение по-умолчанию, которое указано как значение2 в файле настройки Proftpd.

Правим настройки для директории Ftp

cat /etc/proftpd/conf.d/test.conf

<Directory /ftp >
	DirFakeGroup on ftp_users
	Umask 112 002
	$ltLimit ALL>

		DenyGroup !ftp_users

	$lt/Limit>
$lt/Directory>

Перезапускаем Protfpd

systemctl restart proftpd

Пробуем подключиться к Ftp серверу:

ftp 172.20.1.58

Connected to 172.20.1.58.
220 ProFTPD 1.3.5b Server (Debian 9 test ftp) [172.20.1.58]
Name (172.20.1.58:alexeit): admin
331 Необходим пароль для пользователя admin
Password:
230 Пользователь admin подключён
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 Команда PORT успешно обработана
150 Открываю режим ASCII данных для file list
drwxrwxr-x   3 admin    ftp_users     4096 Dec 19 07:57 1
-rw-rw-r--   1 admin    ftp_users        0 Dec 19 07:57 1212
226 Передача завершена

Как видим пользователь admin смог подключиться к FTP серверу так как был получен атрибут, где прописано что он входит в группу ftp_users, которй разрешен доступ к каталогу /ftp

Смотрим логи подключения

cat /etc/proftpd/radius.log

....
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
sending auth request packet
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
sending packet to 172.20.1.210:1812
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
receiving auth response packet
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet receive succeeded
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
verifying packet
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
authentication successful for user "admin"
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
parsing packet for RadiusUserInfo attributes
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 10 for user ID: "10010"
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]: 
packet includes "Unix" Vendor-Specific Attribute 11 for group ID: "10020"
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 12 for home directory: "/ftp"
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 13 for shell: "/bin/bash"
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 parsing packet for RadiusGroupInfo attributes
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 11 for primary group name: ""
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 14 for additional group names: 
 "radius_users,ftp_users" >
2017-12-19 11:42:27,102 mod_radius/0.9.2[13782]:
 packet includes "Unix" Vendor-Specific Attribute 15 for additional
  group IDs: "10030,10040" 
2017-12-19 08:42:28,922 mod_radius/0.9.2[13782]:
 sending start acct request packet
2017-12-19 08:42:28,922 mod_radius/0.9.2[13782]:
 sending packet to 172.20.1.210:1813
2017-12-19 08:42:28,922 mod_radius/0.9.2[13782]:
 receiving acct response packet
2017-12-19 08:42:28,923 mod_radius/0.9.2[13782]:
 packet receive succeeded
2017-12-19 08:42:28,923 mod_radius/0.9.2[13782]:
 verifying packet
2017-12-19 08:42:28,923 mod_radius/0.9.2[13782]:
 accounting started for user "admin"
.......

Как видно все атрибуты получены

Теперь подключаемся под пользователем test

ftp 172.20.1.58

Connected to 172.20.1.58.
220 ProFTPD 1.3.5b Server (Debian 9 test ftp) [172.20.1.58]
Name (172.20.1.58:alexeit): test
331 Необходим пароль для пользователя test
Password:
230 Пользователь test подключён
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 Команда PORT успешно обработана
150 Открываю режим ASCII данных для file list
226 Передача завершена
ftp> mkdir 1
550 1: Отказано в доступе

Видим, что он не видит содержание каталога и не имеет прав на создание файлов и директорий, так как не имеет к нему доступа

Смотрим лог radius

cat /etc/proftpd/radius.log

2017-12-19 11:46:07,376 mod_radius/0.9.2[13784]: 
sending auth request packet
2017-12-19 11:46:07,376 mod_radius/0.9.2[13784]: 
sending packet to 172.20.1.210:1812
2017-12-19 11:46:07,376 mod_radius/0.9.2[13784]:
 receiving auth response packet
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet receive succeeded
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 verifying packet
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
authentication successful for user "test"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 parsing packet for RadiusUserInfo attributes
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet lacks "Unix" Vendor-Specific Attribute 10 for user ID: 
 defaulting to "10010"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet lacks "Unix" Vendor-Specific Attribute 11 for group ID: 
defaulting to "10021"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet lacks "Unix" Vendor-Specific Attribute 12 for home directory: 
defaulting to "/tmp"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet lacks "Unix" Vendor-Specific Attribute 13 for shell:
  defaulting to "/bin/bash"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 parsing packet for RadiusGroupInfo attributes
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet lacks "Unix" Vendor-Specific Attribute 11 for prime group name:
  defaulting to "10021"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]: 
packet lacks "Unix" Vendor-Specific Attribute 14 for additional group names:
 defaulting to "ftp"
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet includes invalid length (0) for attribute type 0,  rejecting
2017-12-19 11:46:07,377 mod_radius/0.9.2[13784]:
 packet lacks "Unix" Vendor-Specific Attribute 15 for 
 additional group IDs: defaulting to "10040"
2017-12-19 08:46:09,398 mod_radius/0.9.2[13784]:
 sending start acct request packet
2017-12-19 08:46:09,398 mod_radius/0.9.2[13784]:
 sending packet to 172.20.1.210:1813
2017-12-19 08:46:09,398 mod_radius/0.9.2[13784]:
 receiving acct response packet
2017-12-19 08:46:09,398 mod_radius/0.9.2[13784]:
 packet receive succeeded
2017-12-19 08:46:09,399 mod_radius/0.9.2[13784]:
 verifying packet
2017-12-19 08:46:09,399 mod_radius/0.9.2[13784]:
 accounting started for user "test"

Он получил значение атрибутов по-умолчанию, которые были указаны в файле конфигурации Proftpd






Введите ответ:

+

=