В системах с большим числом машин почти всегда встает вопрос централизованного управления пользователями и группами (авторизации, аутентификации т.д.). Для этого удобно использовать LDAP. В этой статье я расскажу как настроить аутентификацию через LDAP и ограничить доступ к машине только для определенных групп.
Если ваш LDAP сервер использует зашифрованное соединение, то нужно скопировать корневой сертификат, которым подписан сертификат сервера LDAP в папку /etc/ssl/certs.
Включаем авторизацию через ldap:
Настройка авторизации через LDAP
Для начала нужно установить пакеты обеспечивающие нужные нам функции:sudo apt-get install ldap-auth-client nscdВо время установки нас спросят следующее:
- URI of LDAP server - URI нашего сервера, например, ldap://ldapserver.corp.local (ldap может быть доступен по протоколам ldaps и ldapi).
- Name of the LDAP search base - базовый каталог для поиска, обычно он похож на домен на котором расположен сервер, в нашем примере это будет dc=corp,dc=local
- Make local admin database admin - позволит локальным администраторам изменять учетные записи в LDAP, обычно нужно ответить нет.
- Does the LDAP database require login - требуется ли логиниться в LDAP для того чтобы авторизовать пользователя, как правило нет.
# Базовый каталог для поиска base dc=corp,dc=local # LDAP URI uri ldap://ldap.corp.local # Версия протокола ldap_version 3 # Политика соединения # hard - будет долго пытаться соединиться при ошибках # soft - при ошибке сразу же вернет ошибку модулю авторизации bind_policy soft # Искать ли политику управления паролями в LDAP pam_lookup_policy yes # Политика изменения пароля (exop через LDAP) pam_password exop # Задаем синонимы атрибутов(uniqueMember значит то же, что и member т.е. вхождение в группы) nss_map_attribute uniqueMember member # Если сервер ldap использует tls для шифрования указываем эти опцию ssl start_tls # Требовать и проверять сертификат сервера tls_checkpeer yes # Директория с корневыми сертификатами tls_cacertfile /etc/ssl/certs/you-ca.pem # Группы членство в которых не будет браться из LDAP nss_initgroups_ignoreusers backup,bin,daemon,games,gnats,irc,landscape,libuuid,libvirt-dnsmasq,libvirt-qemu,list,lp,mail,man,messagebus,news,proxy,root,sshd,statd,sync,sys,syslog,uucp,whoopsie,www-data,zabbix # Расположение директорий с пользователями, паролями и группами nss_base_passwd ou=people,dc=corp,dc=local nss_base_shadow ou=people,dc=corp,dc=local nss_base_group ou=group,dc=corp,dc=local
Если ваш LDAP сервер использует зашифрованное соединение, то нужно скопировать корневой сертификат, которым подписан сертификат сервера LDAP в папку /etc/ssl/certs.
Включаем авторизацию через ldap:
sudo auth-client-config -t nss -p lac_ldapИ перезапускаем демоны отвечающие за авторизацию, чтобы новая конфигурация применилась:
sudo pam-auth-update sudo /etc/init.d/nscd restartЕсли все настроено верно, то мы сможем получить информацию о каком-либо пользователе из LDAP
id ldap-user uid=10001(ldap-user) gid=10003(users) группы=10001(admins),10003(users)Теперь пользователи из LDAP смогут авторизоваться на нашем компьютере и даже менять свой пароль при помощи passwd.
Автоматическое создание домашних директорий пользователям из LDAP
С текущей настройкой пользователи из LDAP смогут авторизоваться на компьютере, но у них не будет домашней директории. Чтобы исправить это давайте настроим модуль pam_mkhomedir, для этого нужно создать файл настроек pam модулей /usr/share/pam-configs/my_mkhomedir с вот таким содержимым:
Name: activate mkhomedir Default: yes Priority: 900 Session-Type: Additional Session: required pam_mkhomedir.so umask=0022 skel=/etc/skelИ активируем его командой: pam-auth-update. Теперь любой пользователь из LDAP сможет авторизоваться и у него будет собственный домашний каталог. Каталог будет создан по указанному шаблону (в примере /etc/skel) и с правами соответсвующими маске (в примере 755).
Ограничение авторизации
Сейчас любой пользователь из LDAP сможет авторизоваться на нашей машине, если мы хотим ограничить доступ для некоторых пользователей или групп или разрешить авторизацию только определенным пользователям или группам. Для этого можно использовать модуль pam pam_listfile.so.
Теперь добавляем в начало /etc/pam.d/common-auth следующую строку:
Обязательно, сначала создайте файл /etc/login.group.allowed со список групп которым разрешено заходить на хост, иначе потом придется делать это с live-cd:
adm root wheel adminsТакже лучше добавить в список пользователя root, иначе не сможете под ним залогиниться, даже локально.
Теперь добавляем в начало /etc/pam.d/common-auth следующую строку:
auth required pam_listfile.so onerr=fail item=group sense=allow file=/etc/login.group.allowedБолее подробно о опциях модуля можно прочитать в документации, кратко:
- onerr - что делать в случае ошибок.
- item - что записано в указанный файл (имена пользователей - user, групп - group, хостов и т.д.)
- sense - что делать, когда запись найдена в файле, allow - разрешить, deny=запретить авторизоваться.
- file - полный путь до файла со списком.
Помимо этого метода можно сделать через nss_base_<map> это позволит указывать LDAP на какие машины разрешено заходить пользователю или группе.
На этом все.
На этом все.
Комментарии
Отправить комментарий