Авторские статьи

RADIUS и ALD Pro.


RADIUS (Remote Authentication Dial-In User Service) умеет работать с различными "базами": от простых файлов до SQL серверов. Но мне при вводе в эксплуатацию ALD Pro (FreeIPA с LDAP под капотом) потребовалось реализовать задачу по интеграции RADIUS с импортозамещённым LDAP.

Мои коллеги-сетевики, как и прежде:

  1. должны авторизоваться на сетевом оборудовании. Реализуется через запрос к LDAP.
  2. авторизоваться должны только они и никто более, даже если ошибки в списках доступа ACL разрешат любому. Реализуется через создание доменной группы network-admins, члены которой только и получат доступ.
  3. автоматически получать привилегированный режим команды enable. Это реализуется через проверку членства в группе network-admins и обновлении ответа с указанием Cisco-AVPair = "shell:priv-lvl=15" и Service-Type = 6

В статье будут приведены готовые конфигурационные файлы, которые вы уже адаптируете по себя сами. По умолчанию, во FreeRADIUS 3.0 конфигурационные файлы содержат комментарии и множество параметров, которые или заремарены или не имеют отношения с сути вопроса. В примерах используется вымышленная компания с доменом company.ru, замените на свои значения.

  1. Сделайте резервную копию всей папки /etc/freeradius/
  2. Должен быть поставлен пакет freeradius-ldap
  3. Активно используйте остановку службы freeradius и запуск её в Терминале для отладки: sudo systemctl stop freeradius && sudo freeradius -X
  4. Заранее рекомендую удалить символическую ссылку /etc/freeradius/3.0/mods-enabled/eap, указывающую на /etc/freeradius/3.0/mods-available/eap

    Всем кто работал с Apache2 знакома концепция где что-то лежит в папке *-available, а включается в работу ссылкой в *-enabled или выключается удалением из неё.

  5. Удалите все ссылки в /etc/freeradius/3.0/sites-enabled/

    Файл /etc/freeradius/3.0/sites-enabled/ALDPro в папке один и содержит

    	server aldpro {
    	  listen {
    		type = auth
    		ipaddr = *
    		port = 1812
    	  }
    
    	  authorize {
    		ldap
    		if (ok || updated) {
    		  update control {
    			Auth-Type := ldap
    		  }
    
    		  if ( LDAP-Group == "network-admins" ) {
    			update reply {
    			  Cisco-AVPair = "shell:priv-lvl=15"
    			  Service-Type = 6
    			}
    		  }
    		  else {
    			reject
    		  }
    		}
    	  }
    
    	  authenticate {
    		Auth-Type LDAP {
    		  ldap
    		}
    	  }
    	}
    	

    где network-admins это существующая группа в вашем домене ALD Pro (FreeIPA), членам которой будет дана возможность привилегированного доступа через Cisco-AVPair = "shell:priv-lvl=15" и Service-Type = 6. Ветвь else reject отказывает всем кто не в группе network-admins. Данный "кусок кода" в случае ошибок в конфигурировании сетевого оборудования не позволит пользователям домена авторизоваться на сетевом оборудовании даже с минимальными привилегиями.

  6. Убедитесь что ссылка /etc/freeradius/3.0/mods-enabled/ldap, указывает на /etc/freeradius/3.0/mods-available/ldap

    Приведите содержимое файла /etc/freeradius/3.0/mods-available/ldap к виду

    	ldap {
    	  server = '10.0.1.2'
    	  server = '10.0.1.3'
    	  port = 389
    
    	  identity="uid=radius,cn=users,cn=accounts,dc=company,dc=ru"
    	  password="SSuuPerSecretP$$wd"
    	  base_dn="cn=users,cn=accounts,dc=company,dc=ru"
    
    	  user {
    		base_dn = "${..base_dn}"
    		filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
    	  }
    
    	  group {
    		membership_filter = "(&(objectClass=posixGroup)(memberUid=%{%{Stripped-User-Name}:-%{User-Name}}))"
    		membership_attribute = memberOf
    	  }
    	}
    	

    где

    • server содержит IP адрес вашего контроллера домена ALD Pro. Если их несколько, то укажите для отказоустойчивости все. В примере ДВА контроллера домена с IP 10.0.1.2 и 10.0.1.3
    • identity указывает на созданную вами учётную запись в домене для возможности делать запросы к LDAP. В примере это учётная запись radius в виде "uid=radius,cn=users,cn=accounts,dc=company,dc=ru". Измените домен и/или имя учётки под ваши нужды.
    • password пароль к учётке radius.
    • base_dn указывает откуда начинать искать учётные записи.
    • блоки user {} и group {} обладают параметрами фильтров, которые помогают сформировать и найти нужное в LDAP ALD Pro.
  7. Если вы не трогали в файле /etc/freeradius/3.0/clients.conf блок client localhost, то в режиме отладки sudo systemctl stop freeradius && sudo freeradius -X вы можете вызывать в отдельном Терминале что-то типа radtest useraldpro Pa$$useradlpro 127.0.0.1 1812 testing123, где useraldpro и Pa$$useradlpro - это учётная запись и пароль обычного пользователя, которому будет отказано в доступе. А пользователю из группы network-admins с его логином и паролем будет предоставлен доступ (Sent Access-Accept) и вы должны наблюдать в окне отладки строки вида
    (0)       if ( LDAP-Group == "network-admins" )  -> TRUE
    (0)         update reply {
    (0)           Cisco-AVPair = "shell:priv-lvl=15"
    (0)           Service-Type = Administrative-User
    
  8. Проверьте на сетевом оборудовании, которое настроено на использование RADIUS сервера, возможность подсоединения под учётными записями сетевого админа из группы network-admins и обычного пользователя, чтобы убедиться в полной работоспособности реализованного решения.

Дополнительная информация

Дата последней правки: 2025-04-10 15:17:54

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта

Лучшее на сайте:

1С под Linux.   Ускорение Ubuntu.   21 пример iptables.   Цикл статей о Ceph.   Убунту в дикой среде.   Ubuntu Linux на SSD.   Ubuntu для блондинок.   Поддержка железа в Linux.   BTSync на службе у админа.   Андроид программы в Ubuntu.   Прокидывание портов для p2p.   Анти СПАМ в Postfix.