===== CentOS Linux 7 - Присоединение к домену Active Directory средствами realmd/SSSD и настройка аутентификации и авторизации через доменные группы безопасности ===== {{:unix-linux:centos:pasted:20180322-112123.png }} Процедура присоединения **Linux**-системы к домену **Active Directory** с помощью **SSSD** (**System Security Services Daemon**) и **RealmD** (**Realm Discovery**) подробно рассматривалась ранее [[https://blog.it-kb.ru/2016/10/15/join-debian-gnu-linux-8-6-to-active-directory-domain-with-sssd-and-realmd-for-authentication-and-configure-ad-domain-security-group-authorization-for-sudo-and-ssh-with-putty-sso/|на примере Debian GNU/Linux 8.6]]. Данная статья является "выжимкой" основных этапов присоединения к домену Active Directory для системы на базе **CentOS Linux 7.4**. \\ ==== Предварительные условия ==== На нашей Linux-системе, для успешного присоединения и членства в домене Active Directory, должно быть соблюдено как минимум два условия: * Настроена синхронизация времени с контроллерами домена. Пример того, как это можно сделать описывался в статье [[:unix-linux:centos:configuring-ntp-client-crony-in-time-synchronization-service-chronyd-on-centos-linux-7-4|Настройка службы синхронизации времени chronyd в CentOS Linux 7.4]] * Настроено разрешение имён в доменной службе DNS, например через файл ''/etc/resolv.conf'', как это [[:unix-linux:centos:join-rhel-centos-6-6-shmz-to-active-directory-domain-with-sssd-and-adcli-for-authentication-and-configure-ad-domain-security-group-authorization-for-sudo-and-ssh-with-putty-sso|было описано ранее]] \\ ==== Присоединение к домену Active Directory ==== Устанавливаем необходимые для работы пакеты:
# yum install realmd sssd adcli krb5-workstationПроверяем успешность обнаружения домена:
# realm discover ad.holding.com --verboseНастраиваем параметры системы, которые будут использованы при присоединении к домену для заполнения атрибутов **operatingSystem** и **operatingSystemVersion**.
# nano /etc/realmd.conf
# realm join --verbose --user=volodya \ --user-principal="host/kom-vm01.ad.holding.com@AD.HOLDING.COM" \ --computer-ou="OU=Linux Servers,OU-KOM,DC=ad,DC=holding,DC=com" \ kom-dc01.ad.holding.com\\ ==== Настройка Kerberos-клиента ==== Настраиваем конфигурационный файл, ранее установленного клиента **Kerberos**. Это может быть нужно в случае если мы захотим использовать удалённое** Single sign-on** (**SSO**) подключение через сервер **SSHD** (например через клиент **Putty** с **Windows-системы**, как это [[https://blog.it-kb.ru/2014/07/06/single-sign-on-sso-server-connection-ubuntu-server-14-04-lts-via-ssh-using-putty-from-windows-based-active-directory/|было описано ранее]])
# nano -Y sh /etc/krb5.confПример готовой конфигурации:
# nano -Y sh /etc/sssd/sssd.confПример готовой конфигурации:
# systemctl stop sssd # ( rm -f /var/lib/sss/db/* ) && ( rm -f /var/lib/sss/mc/* ) # systemctl start sssd\\ ==== Проверка взаимодействия с AD ==== Проверяем то, что в системе успешно зарегистрированы модули работы **SSSD** с **PAM**/**NSS**:
# cat /etc/nsswitch.conf | grep sss passwd: files sss shadow: files sss group: files sss services: files sss netgroup: files sss
# cat /etc/pam.d/system-auth | grep sss auth sufficient pam_sss.so forward_pass account [default=bad success=ok user_unknown=ignore] pam_sss.so password sufficient pam_sss.so use_authtok session optional pam_sss.soПроверяем успешность получения информации о пользователе из AD по логину:
# getent passwd petya petya@ad.holding.com:*:398447:200613:Петя Резинкин:/home/petya@ad.holding.com:/bin/bashПроверяем успешность получения информации о пользователе из AD по UPN:
# getent passwd petya@ad.holding.com petya@ad.holding.com:*:398447:200613:Петя Резинкин:/home/petya@ad.holding.com:/bin/bashПроверяем успешность получения информации из AD о членах доменной группы безопасности:
# getent group KOM-Linux-Admins@ad.holding.com kom-linux-admins@ad.holding.com:*:396844:petya@ad.holding.com,vova@ad.holding.comПробуем войти в сессию доменного пользователя:
# su - petya@ad.holding.comУспешно войдя в сессию доменного пользователя пробуем получить информацию о текущем пользователе (должен быть возвращён набор доменных групп, в которые входит пользователь):
$ id uid=398447(petya@ad.holding.com) gid=200613(domain users@ad.holding.com) groups=200613(domain users@ad.holding.com),445177(internet-users@ad.holding.com), 396844(kom-linux-admins@ad.holding.com)\\ ==== Доступ к SUDO ==== Настроим доступ к возможности вызывать команду **sudo**, основанный на членстве в доменной группе безопасности: Создадим в каталоге ''/etc/sudoers.d/'' новый файл, в котором будут перчислены группы безопасности:
# nano -Y sh /etc/sudoers.d/kom-linux-adminsНаполним файл (каждая отдельная группа с правилами доступа в отдельной строчке. в нашем примере используется одна группа с полным доступом):
# su - petya@ad.holding.comУспешно войдя в сессию доменного пользователя пробуем выполнить любую команду с правами администратора системы используя **sudo**:
$ sudo whoami [sudo] password for petya@ad.holding.com: ****** rootКак видим, работает. Осталось ограничить доступ на редактирование файла, в котором описаны правила предоставления доступа к **sudo**:
# chmod 0440 /etc/sudoers.d/kom-linux-admins\\ ==== Настройка SSHD ==== Насстроим службу **sshd** для того, чтобы можно было использовать **SSO**-подключение.
# nano -Y sh /etc/ssh/sshd_configВключим опции конфигурационного файла:
# systemctl restart sshd\\ ==== Ограничение доступа к системе через PAM ==== Чтобы ограничить доступ к **CentOS Linux 7** на базе доменных групп безопасности, создадим новый конфигурационный файл, в котором будут перечислены группы (как локальные так и доменные), которым нужно обеспечить вход в систему:
# nano -Y sh /etc/security/access-groups-to-login
# chown root:root /etc/security/access-groups-to-login # chmod 600 /etc/security/access-groups-to-loginНастроим в системном конфиге ''/etc/pam.d/login'' правила **PAM** таким образом, чтобы в ходе авторизации при локальном входе на консоль нашей Linux-системы использдвался созданный нами выше файл со списком разрешённых групп:
# nano -Y sh /etc/pam.d/loginВставляем перед строкой "''account include system-auth''" вызов проверки нашего файла с группами:
# tail -f /var/log/secureТеперь аналогичным образом настроим в конфиге, относящемся к обработке авторизации в **SSHD** (''/etc/pam.d/sshd'') правила **PAM** таким образом, чтобы в ходе авторизации при удалённом входе через SSH-сервер использовался созданный нами выше файл со списком разрешённых групп (в нашем примере используется тот же файл, что и для локального входа, хотя это могут быть разные файлы и группы доступа):
# nano -Y sh /etc/pam.d/sshdВставляем перед строкой "''account include password-auth''" вызов проверки нашего файла с группами:
# tail -f /var/log/secureЕсли дополнительно требуется доменная аутентификация/авторизация в других сервисах CentOS Linux, например в веб-сервере Apache то, в качестве примера можно использовать статью [[https://blog.it-kb.ru/2016/10/26/configuring-basic-and-kerberos-authentication-with-sso-single-sign-on-for-the-apache-web-server-using-sssd-and-pam-service-for-authorization/|Настройка Kerberos аутентификации с SSO на веб-сервере Apache с помощью SSSD]] ---- Проверено на следующих конфигурациях: ^ Версия ОС ^ | CentOS Linux release 7.4.1708 (Core) | | CentOS Linux release 7.5.1804 (Core) | ---- {{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 22.03.2018 10:34 {{tag>Linux CentOS "CentOS 7" Security "Active Directory" SSSD RealmD PAM NSS sudo Kerberos SSH sshd}} ~~DISCUSSION~~