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

Thank you for reading this post, don't forget to subscribe!

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

Настройка Freeradius

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

Редак­ти­ру­ем файл /etc/raddb/dictionary , доба­вим в конец фай­ла запи­си вен­до­ра 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

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

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

sudo systemctl start radiusd

Настройка Proftpd

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

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

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

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

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

systemctl restart proftpd

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

ftp 172.20.1.58

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

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

cat /etc/proftpd/radius.log

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

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

ftp 172.20.1.58

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

Смот­рим лог radius

cat /etc/proftpd/radius.log

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