настройка_атрибутов_на_основе_ldap_ad_групп

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
настройка_атрибутов_на_основе_ldap_ad_групп [2022/11/08 14:24] jpнастройка_атрибутов_на_основе_ldap_ad_групп [2024/11/01 10:29] (current) jp
Line 1: Line 1:
 ===== Настройка атрибутов на основе LDAP (Active Directory) групп ===== ===== Настройка атрибутов на основе LDAP (Active Directory) групп =====
  
-На основе принадлежности пользователей к определенным группам AD - удобно раздавать сетевые правила доступа. При этом, в роли NPS Windows Server - решить данную задачу гибко не получится.+На основе принадлежности пользователей к определенным группам AD - удобно раздавать сетевые рулсеты. При этом, в роли NPS Windows Server - решить данную задачу гибко не получится. Дело в том, что политики NPS работают по принципу //"first match"//, т.е. мы не сможем суммировать правила для пользователя, состоящего в нескольких разных группах одновременно, ведь сработает только первое совпадение по группам с первым списком доступа в соответствующей политике
  
-Политики NPS работают по принципу //"first match"//, т.е. мы не сможем суммировать правила для пользователя, состоящего в нескольких разных группах одновременно, ведь сработает только первое совпадение по группам.  +Настройка LDAP во **freeradius** позволяет решить эту проблему достаточно гибко (здесь возможно суммирование рулсетов) и безопасно. Для повышения безопасности данном примере мы будем использовать LDAPS и учётную запись с ограниченными правами в домене AD. 
- +
-Настройка LDAP во freeradius позволяет решить эту проблему достаточно гибко и безопасно. Для этого в данном примере мы будем использовать LDAPS и учётную запись с ограниченными правами в домене AD. +
  
 1. Устанавливаем модуль freeradius для работы с LDAP. 1. Устанавливаем модуль freeradius для работы с LDAP.
Line 13: Line 11:
  
    ln -s /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/ldap       ln -s /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/ldap   
-3. Дальнейшую конфигурацию мы будем производить в файле ///etc/freeradius/3.0/mods-enabled/ldap//.+3. Дальнейшую конфигурацию (вплоть до п.18) мы будем производить в файле ///etc/freeradius/3.0/mods-enabled/ldap//.
  
 4. Пропишем адрес контроллера домена следующим образом: 4. Пропишем адрес контроллера домена следующим образом:
Line 20: Line 18:
 :!: Здесь можно указать адреса и других контроллеров домена, перечислив в отдельной секции server: :!: Здесь можно указать адреса и других контроллеров домена, перечислив в отдельной секции server:
    server = 'ldaps://dc02.arasaka.local:636'    server = 'ldaps://dc02.arasaka.local:636'
-:!: Опцию //port// конфига исплользовать не нужно, т.к. он указан явно в опции //server//.+:!: Опцию //port// конфига исплользовать не нужно, т.к. он указан явно в опции //server//. Закомментируем её, если она записана в конфиге.
  
 5. Настроим учётную запись, под которой будем подключаться к контроллеру домена. 5. Настроим учётную запись, под которой будем подключаться к контроллеру домена.
  
-    identity = 'CN=vpn radius,OU=RADIUS,DC=office,DC=innoseti,DC=ru'+    identity = 'CN=vpn radius,OU=RADIUS,DC=arasaka,DC=local'
     password = mypassword     password = mypassword
 +
 +:!: Здесь будет достаточно учётной записи, обладающей правами обычного пользователя домена.\\
 :!: Важно: имя учётной записи (vpn radius) - это не логин пользователя в AD, а его CN, который можно посмотреть в свойствах учётной записи на вкладке //Attribute Editor//. :!: Важно: имя учётной записи (vpn radius) - это не логин пользователя в AD, а его CN, который можно посмотреть в свойствах учётной записи на вкладке //Attribute Editor//.
  
 +;#;
 {{::radius_ad_user_ldap.jpg?direct&400|}} {{::radius_ad_user_ldap.jpg?direct&400|}}
 +;#;
  
 6. Настроим базовое пространство домена, откуда будет производиться дальнейший поиск: 6. Настроим базовое пространство домена, откуда будет производиться дальнейший поиск:
Line 39: Line 41:
  
    base_dn = 'CN=RADIUS,DC=office,DC=arasaka,DC=local'    base_dn = 'CN=RADIUS,DC=office,DC=arasaka,DC=local'
-9. В этой же секции поменяем аттрибут группы на //group// вместо юниксового posixGroup. +9. В этой же секции поменяем аттрибут группы на ''group'' вместо юниксового ''posixGroup''
  
    filter = '(objectClass=group)'    filter = '(objectClass=group)'
Line 62: Line 64:
    chase_referrals = yes    chase_referrals = yes
    rebind = yes    rebind = yes
-16. В секции //tls// отключаем starttls, т.к. он нужен только в случае использования tls поверх 389 порта, что в нашем случае не релевантно, поскольку мы используем SSL по 636. +16. В секции //tls// отключаем //starttls//, т.к. он нужен только в случае использования tls поверх 389 порта, что в нашем случае не релевантно, поскольку мы используем SSL по 636. 
  
    start_tls = no    start_tls = no
Line 71: Line 73:
 :!: В папку /etc/freeradius/3.0/certs необходимо залить сертификат УЦ, а также сертификаты контроллером домена в pem-формате. :!: В папку /etc/freeradius/3.0/certs необходимо залить сертификат УЦ, а также сертификаты контроллером домена в pem-формате.
  
-:!: Выгрузить сертификаты в pem-формате можно следующим образом: из хранилища сертификатов сделать экспорт, при экспорте выбрать //Base-64 encoded X.509 (.CER)//. После выгрузки можно просто переименовать сертиификат в pem. +:!: Выгрузить сертификаты в pem-формате можно следующим образом: из хранилища сертификатов Windows сделать экспорт, при экспорте выбрать //"Base-64 encoded X.509 (.CER)"//. После выгрузки можно просто переименовать расширение сертиификата в pem.  
 + 
 +18. Теперь в файле ///etc/freeradius/3.0/sites-enabled/default// в секции //post-auth// можно писать правила, которые будут суммировать списки доступа на основании членства в группах (//"test-network"//, //"management-network"// и т.д.), используя аттрибут **LDAP-Group**: 
 + 
 +<code> 
 +if (&LDAP-Group[*] == "test-network") { 
 +   update reply { 
 +      Cisco-AVPair += "route=10.100.0.0 255.255.255.0", 
 +      Cisco-AVPair += "route=10.101.0.0 255.255.255.0", 
 +      Cisco-AVPair += "route=10.102.0.0 255.255.255.0", 
 +
 + 
 +if (&LDAP-Group[*] == "management-network") { 
 +   update reply { 
 +      Cisco-AVPair += "ip:inacl#93=permit ip any any" 
 +      Cisco-AVPair += "route=0.0.0.0 0.0.0.0", 
 +      } 
 +
 +</code> 
 + 
 +19. Данную схему удобно использовать, к примеру, для раздачи доступов пользователям OpenVPN.  
 + 
 +В pfSense проверить проверить добавление правил можно использовав пункт меню status->openvpn. Кликнув на информацию о сеансе - можно увидеть правла, если всё сделано верно.  
 + 
 +;#; 
 +{{::pf_sense_radius_rules_ovpn.jpg?direct&400|}} 
 +;#;
  
-{{tag>Debian Linux freeradius NPS LDAP}}+{{tag>Debian Linux freeradius NPS LDAP pfSense ActiveDirectory}}
настройка_атрибутов_на_основе_ldap_ad_групп.1667917469.txt.gz · Last modified: 2022/11/08 14:24 by jp