LDAP аутентификация в домене MS AD
При работе с linux или Unnix подобными системами, которые введены в MS AD, что бы постоянно не придумывать разные пароли и просто для удобства, на предприятиях используют LDAP аутентификацию.Для начала обновим порты
# portsnap fetch && portsnap update |
Нам понадобится:
- nss_ldap
- pam_ldap
- pam_mkhomedir
Ставим:
# cd /usr/ports/net/nss_ldap # make install clean # cd /usr/ports/security/pam_ldap # make install clean # cd /usr/ports/security/pam_mkhomedir # make install clean |
Удостоверимся, что с разрешением имен у нас все Ок (имя нашего домена ltd.local):
Начинаем править конфиги:
Настраиваем openldap:Ключи:
- "(cn=a.ya)" - учетная запись, информацию о которой хотим получить
- -D admin - доменная учетная запись от имени которой будет выполняться LDAP запрос (анонимный доступ к LDAP каталогу у нас закрыт)
- -W нужен для того чтобы утилита запросила пароль к учетке от имени которой будем подключаться
Переходим к настройке nss_ldap и pam_ldap.
Приводим файлы:
- /usr/local/etc/ldap.conf
- /usr/local/etc/nss_ldap.conf
# Имя LDAP сервера host ltd. local # Домен, в нашем случаи ltd.local base dc =ltd, dc = local # Версия протокола ldap_version 3 # Т.к. анонимный доступ к LDAP каталогу у наз запрещен # указываем учетные данные пользователя, от имени которого # будет происходить подключение к LDAP сервере. # Не забываем предварительно его создать в AD :=) binddn ldap_reader@ltd. local bindpw 123@qwe1944! # Зона поиска - искать во всем каталоге scope sub bind_policy soft # Какие типы объектов будем запрашивать pam_filter objectclass=User # Какой атрибут в LDAP будет соответствовать атрибуту uid pam_login_attribute uid # Update Active Directory password, by # creating Unicode password and updating # unicodePwd attribute. pam_password ad # Где будем искать пользователей, их пароли, группы # в нашем случаи во всем LDAP каталоге nss_base_passwd dc =ltd, dc = local ?sub nss_base_shadow dc =ltd, dc = local ?sub nss_base_group dc =ltd, dc = local ?sub # Services for UNIX 3.5 mappings # Соответствия атрибутов nss_map_objectclass posixAccount User nss_map_objectclass shadowAccount User nss_map_attribute uid uid #nss_map_attribute uid msSFU30Name nss_map_attribute uniqueMember msSFU30PosixMember nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attribute homeDirectory msSFUHomeDirectory nss_map_objectclass posixGroup Group pam_login_attribute msSFU30Name pam_filter objectclass=User pam_password ad |
На этом настройка ldap окончена. Для того чтобы все заработало необходимо "научить" систему читать данные о пользователях из LDAP каталога. За это отвечают два модуля операционной системы: PAM и NSS.
Настраиваем NSS.
Приводим файл /etc/nsswitch.conf к следующему виду:
# # nsswitch.conf(5) - name service switch configuration file # $FreeBSD: release/9.0.0/etc/nsswitch.conf 224765 2011-08-10 20:52:02Z dougb $ # # Меняем group: compat -> group: files ldap group: files ldap group_compat: nis hosts: files dns networks: files # Меняем passwd: compat -> passwd: files ldap passwd : files ldap passwd_compat: nis shells: files services: compat services_compat: nis protocols: files rpc: files |
Если все было правильно сделано, при помощи утилиты id мы будем иметь возможность запрашивать данные о пользователях AD. Протестируем:
# id a.ya uid=10006(a.ya) gid=10002(unix_mega_admins) groups=10002(unix_mega_admins),10006(it-gw),10007(unix_sudo) |
Настройка SSH сервера.
Для того чтобы включить LDAP аутентификацию в sshd, необходимо привести файл /etc/pam.d/sshd к следующему виду:
/etc/pam.d/sshd
# auth auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local # Отключаем: # auth required pam_unix.so no_warn try_first_pass # Добавляем: auth sufficient pam_unix.so no_warn try_first_pass auth required /usr/local/lib/pam_ldap .so no_warn try_first_pass # account account required pam_nologin.so account required pam_login_access.so # Отключаем: # account required pam_unix.so # Добавляем: account sufficient pam_unix.so account required /usr/local/lib/pam_ldap .so # session session required pam_permit.so # Подключаем автоматическое создание домашних директорий session required /usr/local/lib/pam_mkhomedir .so # password # Отключаем: # password required pam_unix.so no_warn try_first_pass # Добавляем: password sufficient pam_unix.so no_warn try_first_pass password required /usr/local/lib/pam_ldap .so no_warn try_first_pass |
Пробуем зайти на сервер под своей доменной учеткой если пускает - все сделано правильно.
Теперь на сервер сможет зайти любой доменный пользователь у которого активированы UNIX Attributes.
Это можно исправить следующим образом в файле конфигурации sshd существует директива AllowGroups через нее можно указать список групп, которым разрешен доступ к серверу
Пример:
# cat /etc/ssh/sshd_config | grep -i group AllowGroups ssh_users it-gw unix_gw_admins unix_mega_admins |
Таким же образом доменному пользователю можно предоставить root доступ к нашему серверу.
Для этого нам понадобиться sudo.
Эта утилита по умолчанию отсутствует во Free BSD - установим:
# cd /usr/ports/security/sudo # make install && make clean |
Сначала поправим настройки pam модуля:
# PAM configuration for the "sudo" service # # auth # Добавим auth sufficient /usr/local/lib/pam_ldap .so no_warn try_first_pass ignore_unknown_user auth include system # account # Добавим account sufficient /usr/local/lib/pam_ldap .so account include system # session # XXX: pam_lastlog (used in system) causes users to appear as though # they are no longer logged in in system logs. session required pam_permit.so # password # Добавим account sufficient /usr/local/lib/pam_ldap .so password include system |
И пропишем доменную группу, которой разрешен root доступ в /usr/local/etc/sudoers для этого воспользуемся утилитой visudo.
Для того чтобы разрешить доступ доменной группе unix_mega_admin root привелегии необходимо добавить следующую строчку:
%unix_mega_admins ALL=(ALL) ALL
Комментарии
Отправить комментарий