Light-electric.com

IT Журнал
27 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Centos ввод в домен

Ввод CentOS 7 в домен Active Directory и авторизация по SSH доменных пользователей

Мне понадобилось настроить авторизацию доменный учетных записей Active Directory по ssh на linux сервер. В моем случае это будет система CentOS 7. Данная возможность будет очень удобна для организаций с внедренной доменной структурой Windows. С помощью групп доступа в AD вы сможете централизованно управлять доступом к linux серверам.

  • 1 Подготовка сервера
  • 2 Подключение CentOS 7 к домену
  • 3 Ограничение доступа ssh по группам и пользователям домена
  • 4 Ограничение доступа к sudo по доменным группам
  • 5 Заключение
  • 6 Дополнительные материалы по CentOS

Подготовка сервера

Если у вас еще нет готового сервера, то можете воспользоваться моими материалами на эту тему — установка и настройка centos 7. Так же рекомендую настроить iptables для корректной работы сервера с доменом windows. Далее я не буду каcаться этого вопроса, мы просто отключим фаерволл, потому что его настройка не тема этой статьи.

Настроим синхронизацию времени с контроллером домена. Это важно, у вас должно быть одинаковое время с контроллером домена. Проверьте его и убедитесь, что стоят одинаковые часовые пояса.

Устанавливаем утилиту для синхронизации времени chrony:

Добавляем в конфиг /etc/chrony.conf адрес контроллера домена. И делаем его единственным сервером для синхронизации, остальные удаляем.

Сохраняем конфиг, запускаем chrony и добавляем в автозагрузку.

Проверим, что с синхронизацией.

Все в порядке. Синхронизировали время с контроллером домена. По логу видно, что время на сервере убежало вперед на 56 минут, но мы это исправили.

Подключение CentOS 7 к домену

Устанавливаем софт, который нам понадобится, для корректного ввода centos в домен windows.

Вводим Centos 7 в домен:

Если не получили никакой ошибки, значит все прошло нормально. Можно зайти на контроллер домена и проверить, появился ли наш linux сервер в домене.

Изменим немного конфиг sssd для того, чтобы не нужно было вводить полное имя домена при логине, а только username.

Разрешаем доменным пользователям создавать домашние директории:

Запускаем службу sssd и добавляем в автозагрузку:

Проверяем авторизацию по ssh, подключившись по любой доменной учетной записи.

Для пользователя будет создана домашняя директория /home/lin-user@xs.local.

Ограничение доступа ssh по группам и пользователям домена

На текущий момент подключиться к серверу может любой пользователь домена. Исправим это и разрешим подключаться только пользователям из группы gr_linux_adm. Для этого правим конфиг /etc/sssd/sssd.conf, добавляя туда новые параметры.

Обращаю внимание, что параметр access_provider у вас уже будет установлен в другое значение. Надо это изменить. Вы можете добавить разрешение как для конкретного пользователя, так и для целых групп. Сохраняйте конфиг и перезапускайте sssd.

Теперь подключиться по ssh к серверу сможет только пользователь домена user55 и все члены группы gr_linux_adm.

Для разбора полетов и решения проблем нужно использовать лог файл — /var/log/secure. Вот пример успешного подключения:

А вот кусок лога подключения доменного пользователя, для которого доступ по ssh закрыт.

Здесь видно, что идентификация пользователя прошла корректно, но доступ к серверу запрещен.

Ограничение доступа к sudo по доменным группам

Ограничение доступа к ssh по группам и пользователям настроили, теперь надо разрешить доменным учетным записям получать права суперпользователя в системе. Сейчас у них нет такой возможности.

Создаем новый файл в директории /etc/sudoers.d.

Выставляем минимальные права на файл:

Теперь вы можете зайти в систему доменной учетной записью из группы gr_linux_adm и получить полные права в системе.

Реализовать то же самое можно было через настройки sssd. В его конфиге можно было указать группы, которым разрешен доступ к sudo. Но в целом это не принципиально. Так, как сделал я, мне показалось проще. Не нужно использовать полные имена объектов в AD, в которых легко запутаться, особенно тем, кто не очень в этом ориентируется. Мне же понадобились только конечные имена групп. Более подробно об этом можно почитать в руководстве redhat. Ссылку приведу в конце.

Заключение

На этом все. Я рассмотрел наиболее типовую ситуацию, которая может быть полезной при использовании структуры AD совместно с linux серверами. При написании статьи использовал официальные руководства:

  • Deployment, Configuration and Administration of Red Hat Enterprise Linux 6
  • sssd.conf — Linux man page

Почему-то из руководства по RHEL 7 раздел, посвещенный SSSD убрали, хотя в 5 и 6 есть. Может просто я не заметил, так как структура сильно поменялась. Люблю я CentOS в первую очередь за отличную документацию Redhat. Там есть подробное описание практически всего, с чем приходилось сталкиваться. Надо только не лениться в английском языке разбираться.

Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки.

Инструменты пользователя

Инструменты сайта

Боковая панель

Содержание

CentOS Linux 7 — Присоединение к домену Active Directory средствами realmd/SSSD и настройка аутентификации и авторизации через доменные группы безопасности

Процедура присоединения Linux-системы к домену Active Directory с помощью SSSD (System Security Services Daemon) и RealmD (Realm Discovery) подробно рассматривалась ранее на примере Debian GNU/Linux 8.6. Данная статья является «выжимкой» основных этапов присоединения к домену Active Directory для системы на базе CentOS Linux 7.4.

Читать еще:  Постоянно блокируется учетная запись в домене

Предварительные условия

На нашей Linux-системе, для успешного присоединения и членства в домене Active Directory, должно быть соблюдено как минимум два условия:

Присоединение к домену Active Directory

Устанавливаем необходимые для работы пакеты:

Проверяем успешность обнаружения домена:

Настраиваем параметры системы, которые будут использованы при присоединении к домену для заполнения атрибутов operatingSystem и operatingSystemVersion.

Выполняем присоединение к домену (в ходе присоединения будет запрошен пароль доменного пользователя с правами на ввод в домен, указанного в опции –user ):

Настройка Kerberos-клиента

Настраиваем конфигурационный файл, ранее установленного клиента Kerberos. Это может быть нужно в случае если мы захотим использовать удалённое Single sign-on (SSO) подключение через сервер SSHD (например через клиент Putty с Windows-системы, как это было описано ранее)

Пример готовой конфигурации:

Настройка SSSD

Настраиваем конфигурацию службы sssd

Пример готовой конфигурации:

Очищаем кэш sss и перезапускаем службу sssd:

Проверка взаимодействия с AD

Проверяем то, что в системе успешно зарегистрированы модули работы SSSD с PAM/NSS:

Проверяем успешность получения информации о пользователе из AD по логину:

Проверяем успешность получения информации о пользователе из AD по UPN:

Проверяем успешность получения информации из AD о членах доменной группы безопасности:

Пробуем войти в сессию доменного пользователя:

Успешно войдя в сессию доменного пользователя пробуем получить информацию о текущем пользователе (должен быть возвращён набор доменных групп, в которые входит пользователь):

Доступ к SUDO

Настроим доступ к возможности вызывать команду sudo, основанный на членстве в доменной группе безопасности: Создадим в каталоге /etc/sudoers.d/ новый файл, в котором будут перчислены группы безопасности:

Наполним файл (каждая отдельная группа с правилами доступа в отдельной строчке. в нашем примере используется одна группа с полным доступом):

Войдём в сесcию доменного пользователя, входящего в группу, которой мы разрешили выполять sudo:

Успешно войдя в сессию доменного пользователя пробуем выполнить любую команду с правами администратора системы используя sudo:

Как видим, работает. Осталось ограничить доступ на редактирование файла, в котором описаны правила предоставления доступа к sudo:

Настройка SSHD

Насстроим службу sshd для того, чтобы можно было использовать SSO-подключение.

Включим опции конфигурационного файла:

Ограничение доступа к системе через PAM

Чтобы ограничить доступ к CentOS Linux 7 на базе доменных групп безопасности, создадим новый конфигурационный файл, в котором будут перечислены группы (как локальные так и доменные), которым нужно обеспечить вход в систему:

Обратите внимание на то, что настраивая ограничение локального входа лучше не забыть добавить локальные группы root и sudo, иначе с дальнейшем вход в систему под локальными административными учётными записями может стать невозможен.

Ограничим доступ к файлу:

Настроим в системном конфиге /etc/pam.d/login правила PAM таким образом, чтобы в ходе авторизации при локальном входе на консоль нашей Linux-системы использдвался созданный нами выше файл со списком разрешённых групп:

Вставляем перед строкой « account include system-auth » вызов проверки нашего файла с группами:

Внимание! Невнимательное редактирование данного файла может привести в невозможности локального входа в систему, поэтому в ходе дальнейших проверок не закрывайте текущую сесиию, чтобы была возможность исправить возможные ошибки.

Теперь попробуем подключиться на консоль нашей Linux-системы, используя доменные учётные записи (те, которым разрешен вход через группу безопасности и те, которым не разрешён вход). В процессе проверки в отдельной сессии запустим наблюдение за логом безопасности, чтобы видеть то, что происходит в ходе авторизации для разрешённых и неразрешённых для входа пользователей.

Теперь аналогичным образом настроим в конфиге, относящемся к обработке авторизации в SSHD ( /etc/pam.d/sshd ) правила PAM таким образом, чтобы в ходе авторизации при удалённом входе через SSH-сервер использовался созданный нами выше файл со списком разрешённых групп (в нашем примере используется тот же файл, что и для локального входа, хотя это могут быть разные файлы и группы доступа):

Вставляем перед строкой « account include password-auth » вызов проверки нашего файла с группами:

Внимание! Невнимательное редактирование данного файла может привести в невозможности входа в систему через SSH-сервер, поэтому в ходе дальнейших проверок не закрывайте текущую сесиию, чтобы была возможность исправить возможные ошибки

Теперь попробуем удалённо подключиться к SSH-серверу нашей Linux-системы, используя доменные учётные записи (те, которым разрешен вход через группу безопасности и те, которым не разрешён вход). В процессе проверки в отдельной сессии запустим наблюдение за логом безопасности, чтобы видеть то, что происходит в ходе авторизации для разрешённых и неразрешённых для входа пользователей.

Если дополнительно требуется доменная аутентификация/авторизация в других сервисах CentOS Linux, например в веб-сервере Apache то, в качестве примера можно использовать статью Настройка Kerberos аутентификации с SSO на веб-сервере Apache с помощью SSSD

CentOS: Samba сервер в домене

Всем нам, так или иначе, но приходится подниматься файловые сервера. И даже не важно — какого размера ваша компания или парк компьютеров — файловая шара пригодится всегда, как для обмена информации, или её централизованного хранения, либо как место хранения перемещаемых профилей доменных пользователей Windows (как пример — разберём именно эту ситуацию).

Читать еще:  Установить домен по умолчанию

Для работы нам понадобятся 3 ващи: samba, winbind и kerberos, и ntp — устанавливаем:

Первым делом нам нужно синхронизировать время на нашем linux-сервере с контролером домена, для этого мы отредактируем конфигурационный файл ntp:

После чего первый раз синхронизируем время вручную:

и запустим ntpd, добавив его попутно в автозагрузку

Теперь мы переходим к настройке kerberos:

После чего пробуем получить тикет для входа в домен:

Командой klist мы можем проверить выданный нам тикет

Ну а теперь мы можем переходить к самому интересному — настройке samba:

Вы можете создать и отдельную группу в AD для доступа к серверу. Список групп можно посмотреть командой wbinfo -g, а список пользователей — wbinfo -u (для того что бы команды начали работать, необходимо запустить winbind, что мы сделаем немного позже, после его конфигурирования).

Теперь в файле nsswitch.conf нам нужно добавить что для доступа к AD мы будем использовать winbind (вообще winbind – это демон, работающий на клиентах samba и действующий как прокси для связи между PAM и NSS, работающими на компьютере linux, с одной стороны, и AD, работающей на контроллере домена, с другой. В частности, winbind использует kerberos для проверки подлинности с помощью AD и LDAP для получения информации о пользователях и группах).

К моему сожалению, в CentOS 6 пакет samba-common не содержит шаблон конфигурационного файла PAM-модулей, для аутентификации через сервис winbind (system-auth-winbind). По этому нам придётся создать его самостоятельно:

Так же, по непонятной мне причине, параметр session required pam_mkhomedir.so не работает из файла /etc/pam.d/system-auth-winbind, по этому нам придётся дополнительно его описать в файле /etc/pam.d/samba

Теперь мы можем запустить samba и войти в домен:

После чего мы должны получить сообщение о том, что наш сервер теперь является доменной машиной:

Помните, что вы должны вводить сервер в домен под учётной записью администратора домена, либо пользователем, имеющим права на ввод компьютеров в домен. Теперь запустим winbind и проверим — всех ли мы видим:

Если всё видно, значит всё хорошо, нам остаётся лишь настроить фаервол, что бы он не блокировал порт samba (я как всегда напомню о своём любимом псевдоинтерфейсе system-config-firewall-tui) и перезагрузиться. После этого наш сервер готов к работе и всё что нам остаётся — на контролере домена указать месторасположение профиля пользователя. Так же не забудьте в DNS прописать ваш linux сервер.

т.к. в конфигурации samba мы указали path = /profiles/%U, то пользователь, при обращении к \fileserverprofile будет попадать сразу в собственную директорию, что упрощает нам жизнь при создании пользователя (пусть до профиля у всех пользователей будет одинаков), так и то, что другие пользователи, просто физически не видят что там есть данные других пользователей, что в какой то мере сможет остановить многих шалунов

Надеюсь вам было интересно, полезно и у вас не возникнет проблем при настройке. Удачи.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Админствующий FM

пятница, 29 июля 2011 г.

добавление RHEL (CentOS) 5 сервера в домен Active Directory

Вдосталь наэксперементировавшись с openLDAP и 389 Directory Server, всё-таки решил остановиться на Active Directory от Microsoft для централизованного управления моим зоопарком из Windows и RHEL серверов. Если ввод в домен рабочей станции или сервера Windows довольно тривиальная задача, то присоединение к домену Linux системы оказалось не на много сложнее 🙂 Прогресс не стоит на месте, Red Hat приложила (да и Microsoft тоже) немело усилий для безпроблемного сосуществования и взаимодействия различных операционных систем.

В качестве примера возьмем сервер с RHEL 5.6 на борту с именем server01 и заведем его в Active Directory домен ACME.LOCAL

Для начала проверяем что в имени машины присутствует имя домена
[root@server01

] vim /etc/sysconfig/network
HOSTNAME=server01.acme.local
если нет — правим файл и, затем, выполняем команду
[root@server01

Указываем короткое и полное имя этого сервера
[root@server01

] vim /etc/hosts
127.0.0.1 server01 server01.acme.local localhost localhost.localdomain

Важный момент: прописываем IP нашего контроллера домена как DNS сервер
[root@server01

] vim /etc/resolv.conf
nameserver 192.168.1.1

Далее необходимо синхронизаровать системное время между сервером и контроллером домена.
Правим конфигурационный файл службы точного времени:
[root@server01

] vim /etc/ntp.conf
добавляя строку:
server dc.acme.local

] chkconfig ntpd on
и запускаем ее:
[root@server01

] service ntpd start

Ставим клиент Samba 3.3
[root@server01

] yum install samba3x samba3x-common samba3x-client
Можно использовать Samba 3.0 который идет в поставке RHEL версии 5.4 и ранее, но для домена на основе Windows Server 2008 R2 рекомендуется использовать samba-3.3. В моем случае это позволило побороть сообщения в журнале /var/log/messages
Jul 11 11:05:01 server01 winbindd[26769]: [2011/07/11 11:05:01, 0] rpc_client/cli_pipe.c:rpc_api_pipe(790)
Jul 11 11:05:01 bird winbindd[26769]: rpc_api_pipe: Remote machine DC.acme.local pipe NETLOGON fnum 0xc00creturned critical error. Error was NT_STATUS
_PIPE_DISCONNECTED А теперь самая магия. Запускаем нижеследующую команду одной строкой либо с обратными слешами:

] authconfig —update —kickstart
—enablewinbind
—enablewinbindauth
—smbsecurity=ads
—smbworkgroup=ACME
—smbrealm=ACME.LOCAL
—smbservers=DC.ACME.LOCAL
—smbidmapuid=10000-20000
—smbidmapgid=10000-20000
—winbindtemplatehomedir=/home/%U
—enablemkhomedir
—winbindtemplateshell=/bin/bash
—enablewinbindusedefaultdomain
—enablelocauthorize
—enablekrb5
—krb5realm ACME.LOCAL
—krb5kdc DC.ACME.LOCAL
—krb5adminserver DC.ACME.LOCAL
Эта команда вносит все необходимые изменения в конфигурационные файлы системы:
* настраивает клиент Kerberos /etc/krb5.conf
* добавляет службу winbind в /etc/nsswitch.conf для passwd, shadow и group
* изменяет должным образом /etc/samba/smb.conf на работу в домене
* стартует службу winbind позволяет которая обмениваться информацией с NT системами

Читать еще:  Как добавить шрифт в word 2020

Переходим к инициализации клиента Kerberos (пакет krb5-client обычно уже установлен)
сбрасываем кэш сессий
[root@server01

] kdestroy
Создаем новый кеш, указывая имя доменного администратора и вводим его пароль по запросу
[root@server01

] kinit administrator
Если всё прошло без ошибок, то закешированый Kerberos-тикет можно просмотреть командой
[root@server01

] klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ACME.LOCAL

Valid starting Expires Service principal
07/18/11 19:27:18 07/19/11 05:27:48 krbtgt/ACME.LOCAL@ACME.LOCAL
renew until 07/19/11 19:27:18

Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached Вот теперь настал момент добавления нашего сервера в домен:
[root@server01

] net ads join -U administrator
Должно появится поле ввода пароля для администратора домена administrator@ACME.LOCAL
После ввода которого и при корректной настройке система сообщит об успешном завершении операции
Using short domain name — ACME
Joined ‘SERVER01’ to realm ‘acme.local’ и стартуем winbind

] service winbind restart

Если что-то не получается, для начала надо проверять подключение к DNS и логи winbind.

На этом настройка завершена. В Active Directory появилась учетная запись server01 в «Domain Computers», можно подлключаться по SSH, используя учетные записи пользователей домена.

login as: jsmith
jsmith@192.168.1.2’s password:

Ubuntu

Ввод компьютера Ubuntu в домен Active Directory Windows

При создании материала использовал следующие источники:

Обновиться

Установить

Настройка DNS

Изменить настройки DNS на вашей машине, прописав в качестве DNS сервера контроллер домен и в качестве домена поиска — контроллер домен. В Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf

Вместо «mydomain.com» — Ваш домен. Вместо IP-адресов — IP-адреса Ваших контроллеров домена.

Задать нужное имя компьютера в файле /etc/hostname

Отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP

Проверить, что нормально пингуется контроллер домена

Настройка синхронизации времени

Исправить файл /etc/ntp.conf, добавив в него информацию о вашем сервере времени:

После чего перезапустить демон ntpd:

Настройка авторизации через Kerberos

Изменить файл /etc/krb5.conf указав название своего домена вместо DOMAIN.COM и своего контроллера домена

Обратить внимание на регистр написания имени домена. Везде, где домен был написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре.

Проверить, что мы можем авторизоваться в домене. Для этого выполнить команду

Вместо username вписать имя существующего пользователя домена. Имя домена необходимо писать заглавными буквами! Если не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Убедиться в том, что билет получен, можно выполнив команду

Удалить все билеты

Настройка Samba и вход в домен

Необходимо прописать правильные настройки в файле /etc/samba/smb.conf

После того, как будет отредактирован smb.conf, выполнить команду testparm.

Ввести компьютер в домен

Если больше никаких сообщений нет — значит всё хорошо. Для проверки выполнить команду

Если всё прошло без ошибок, то успешно вошли в домен! Посмотреть в AD и увидеть добавленный компьютер ubuntu01. Чтобы видеть ресурсы в домене, установите smbclient:

Теперь можно просматривать ресурсы компьютеров домена. Для этого нужно иметь билет kerberos — получаем через kinit. Посмотрим какие ресурсы предоставлены в сеть компьютером workstation:

Настройка Winbind

Добавить в файл /etc/samba/smb.conf в секцию [global] следующие строки:

Перезапустить демон Winbind и Samba в следующем порядке:

Если появится «rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

То отредактировать файл /etc/security/limits.conf

Перегрузиться. Запустить testparm — Не должно быть ошибок. Проверить, что Winbind установил доверительные отношения с AD командой:

Убедиться, что Winbind увидел пользователей и группы из AD командами:

Добавление Winbind в качестве источника пользователей и групп

Измените в файле /etc/nsswitch.conf две строчки, добавив в конце winbind:

Привести строку files в файле /etc/nsswitch.conf к виду:

Проверить, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив:

Авторизация в Ubuntu через пользователей домена

Создадим в каталоге домашних папок пользователей подкаталог для доменных пользователей в соответствии с настройками нашего smb.conf (в качестве имени каталога используем NetBIOS-имя домена):

Проверить, что после установки библиотеки libpam-winbind соответствующие PAM-модули для Winbind активирован.

В появившемся окне должна быть включена (отмечена *) опция «Winbind NT/Active Directory authentication»

Добавьте строку в конец файла /etc/pam.d/common-session

Для появиления поля ручного ввода логина необходимо добавить в файл /etc/lightdm/lightdm.conf/ строку greeter-show-manual-login=true

Для скрытия списка пользователей необходимо добавить в файл /etc/lightdm/lightdm.conf/ строку greeter-hide-users=true

Для разрешения входа пользователей AD группы groupdomain можно исправить файл /etc/pam.d/common-auth добавив параметр require_membership_of к вызову pam_winbind.so

Если указанная группа не работает, можно указать SID группы

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector