4: Распространение открытого сертификата ЦС
Теперь ваш ЦС настроен и готов выступать корнем доверия для всех систем, которые вы хотите настроить для его поддержки. Вы можете добавить сертификат ЦС на свои серверы OpenVPN, веб-серверы, почтовые серверы и т. д. Любой пользователь или сервер, которому необходимо проверить подлинность другого пользователя или сервера в вашей сети, должен иметь копию файла ca.crt, импортированного в хранилище сертификатов своей операционной системы.
Чтобы импортировать общедоступный сертификат ЦС во вторую систему Linux (например, на другой сервер или локальный компьютер), сначала получите копию файла ca.crt с вашего сервера ЦС. Вы можете использовать команду cat, чтобы вывести файл в терминал, а затем скопировать и вставить его в файл на втором компьютере (на который нужно импортировать сертификат). Также для передачи файла между системами вы можете использовать такие инструменты, как scp, rsync. Мы скопируем и вставим сертификат с помощью nano, поскольку это будет работать во всех системах.
Выполните следующую команду на сервере ЦС:
В терминале появится такой вывод:
Скопируйте всё, включая строки —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–.
На второй машине Linux откройте файл /tmp/ca.crt:
Вставьте строки, которые вы только что скопировали с сервера ЦС, в этот файл. Когда вы закончите, сохраните и закройте файл.
Теперь, когда у вас есть копия файла ca.crt во второй системе Linux, пора импортировать сертификат в хранилище сертификатов данной операционной системы.
В системах CentOS, Fedora и RedHat для импорта сертификата выполните следующие команды:
Чтобы импортировать сертификат в системы на основе Debian or Ubuntu, скопируйте содержимое сертификата в /tmp/ca.crt, затем скопируйте сертификат в /usr/local/share/ca-certificates/ и запустите команду update-ca-trust.
Теперь вторая ваша система Linux будет доверять сертификатам, подписанным вашим ЦС.
Если вы используете свой ЦС для интеграции со средой Windows или настольными компьютерами, ознакомьтесь с .
Если вы знаете, как подписывать и отзывать сертификаты, вы уже можете закончить работу с мануалом. Если же вы хотите научиться подписывать и отзывать сертификаты, далее мы подробно опишем каждый процесс.
Добавляем сервер к домену через realm
Я не буду придумывать ничего нового, а полностью воспользуюсь инструкцией из приведенной выше статьи по настройке авторизации доменных учеток на сервере, но при этом не буду настраивать саму авторизацию. В данном случае мне это не нужно.
Итак, отключаем firewall и SELinux, если не сделали это раньше. Если не хотите отключать, то настройте сами. Данная настройка выходит за рамки статьи.
# mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Выполняем команду, чтобы не ждать перезагрузки для применения изменений.
setenforce 0
Выключаем firewalld.
# systemctl stop firewalld # systemctl disable firewalld
xs.local | название домена |
10.1.3.4 | ip адрес контроллера домена |
xs-winsrv.xs.local | полное имя контроллера домена |
xs-design | имя сервера centos, который вводим в домен |
admin51 | учетная запись администратора домена |
Перед дальнейшей настройкой, убедитесь, что с вашего сервера centos вы без проблем пингуете и резолвите контроллер домена по полному имени. Если есть какие-то проблемы, исправьте это либо указанием нужного dns сервера, либо правкой файла hosts.
Настроим синхронизацию времени с контроллером домена
Это важно, у вас должно быть одинаковое время с контроллером домена. Проверьте его и убедитесь, что стоят одинаковые часовые пояса
Устанавливаем утилиту для синхронизации времени chrony:
# yum install chrony
Добавляем в конфиг /etc/chrony.conf адрес контроллера домена. И делаем его единственным сервером для синхронизации, остальные удаляем.
server xs-winsrv.xs.local iburst
Сохраняем конфиг, запускаем chrony и добавляем в автозагрузку.
# systemctl start chronyd && systemctl enable chronyd
Проверим, что с синхронизацией.
Устанавливаем софт, который понадобится для дальнейшей работы.
# yum install realmd sssd sssd-libwbclient oddjob oddjob-mkhomedir adcli samba-common samba-common-tools
Делаем проверку перед вводом в домен.
# realm discover XS.LOCAL xs.local type: kerberos realm-name: XS.LOCAL domain-name: xs.local configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools
Заводим в домен.
# realm join -U admin51 XS.LOCAL Password for admin51:
Если не получили никакой ошибки, значит все прошло нормально. Можно зайти на контроллер домена и проверить, появился ли наш linux сервер в домене.
Проверьте на самом сервере, что он нормально обращается к домену и получает информацию об учетных записях. Показываю на примере доменной учетной записи control.
# id control@xs.local uid=185001305(control@xs.local) gid=185000513(пользователи домена@xs.local) groups=185000513(пользователи домена@xs.local),185001329(gr_y@xs.local),185001651(gr_sams2@xs.local),185001327(gr_z@xs.local)
Еще несколько проверок.
# realm list
# adcli info xs.local
Сервер завели в домен. Приступаем к основному — настройке samba с интеграцией в AD.
Настройка пользовательских компьютеров
На пользовательском компьютере использовать команду:
pam-auth-update
И убедиться, что включены все профили PAM. При необходимости — включить аутентификацию winbind, используя клавишу «пробел». По окончании нажать клавишу «Tab», перейти на «ОК», и записать изменения.
В файле /etc/nsswitch.conf добавить слово winbind параметры password и group:
Чтобы пользователи AD после аутентификации могли менять свой пароль из командной строкив файле /etc/pam.d/common-password из строки убрать слово
Предупреждение: Использование контроллера домена как файлового сервера
Несмотря на то, что Samba в режиме AD DC может предоставлять услуги разделения файлов так же, как и в любом другом режиме применения, разработчкики Samba не рекомендуют использовать DC как файловый север по следующим причинам:
- Для всех организаций, за исключением самых маленьких, наличие более, чем одного DC, является реально хорошим способом резервирования, повышающим безопасность обновлений;
- Отсутствие сложных данных и влияния на другие сервисы позволяет обновлять DC совместно с ОС хоста каждые год или два;
- Обновления могут выполняться путем установки новых версий, или внесения изменений, которые лучше проверены в Samba, что позволяет получить новые возможности, избежав множества рисков, связанных с повреждением данных;
- Необходимость модернизации DC и файлового сервера наступает в разные моменты. Потребность в новых возможностях DC и файлового сервера возникает в разные моментв времени. В то время, как AD DC стремительно развивается, приобретая новые возможности, файловый сервер, после более 20 лет, гораздо более консервативен;
- mandatory smb signing is enforced on the DC.
Если вы изучаете возможность использовать Samba DC как файловый сервер, рассмотрите вместо этого возможность использовать на DC виртуальную машину VM, содержащую отдельного участника домена.
Если вы вынуждены использовать Samba DC как файловый сервер, помните, что виртуальная файловая система (virtual file system, VFS) позволяет настраивать разделяемые ресурсы только со списками управления доступом access (control lists, ACL) Windows.Разделяемые ресурсы с ACL POSIX на Samba DC не поддерживаются, и не работают.
Для предоставления сетевх разделяемых ресурсов с полными возможностями Samba, используйте отдельного участника домена Samba.
Подробности см.:
Подготовка к инсталляции
- Выберите имя хоста для вашего AD DC. Не рекомендуется использовать в качестве имен хостов такие идентификаторы, как PDC или BDC, унаследованные от NT4 . Эти сущности отсутствуют в AD, и такие названия вызывают путаницу;
-
Выберите DNS-имя для вашего доменного леса AD. Это имя также будет использовано как имя области (realm) Kerberos AD ;
Назначьте хосту полное доменное имя (FQDN), например dc2.samdom.example.com:
sudo hostnamectl set-hostname dc2.samdom.example.com
-
Отключите инструменты (например, resolvconf), которые автоматически обновляют файл настроек DNS /etc/resolv.conf.AD DC и члены домена обязаны использовать сервер DNS, способный разрешать зоны DNS AD . Если в сети нет других серверов DNS, то файл /etc/resolv.conf должен указывать адрес самого сервера:
-
Убедитесь, что файл /etc/hosts на DC корректно разрешает полное доменное имя (fully-qualified domain name, FQDN) и короткое имя хоста DC во внешний сетевой IP-адрес DC. Например:
Имя хоста не должно разрешаться в IP-адрес 127.0.0.1 или в любой другой IP-адрес, кроме используемого на внешнем сетевом интерфейсе DC.Для проверки правильности настроек можно использовать команду:
host `hostname`
Проверка работы и отладка
# ln -s /var/log/samba /etc/samba/log
Запускаем samba и winbind:
# /etc/init.d/samba start # /etc/init.d/winbind start
Для проверки правильно ли подключение к домену можно посмотреть список пользователей и групп домена (не обязательно):
# wbinfo -u # wbinfo -g
Если нас не понимают, то подсказываем пароль для wbinfo и смотрим: список доменов в сети, информацию о домене WORKGROUP, список пользователей и групп домена:
# wbinfo --set-auth-user=root%root_password # wbinfo --all-domains # wbinfo -D WORKGROUP # wbinfo -t
Проверяем, как работает NSS. Команда getent показывает инфо о пользователе, который может быть как в домене, так и юниксовый:
# getent passwd | grep pm pm:x:15000:15000::/home/WORKGROUP/pm:/bin/false # getent passwd | grep pavel pavel:x:500:500:Pavel Malahov:/home/pavel:/bin/bash
Теперь можно использовать ресурсы на линукс-сервере, на которые мы дали доступ, как обычные доменные ресурсы.
Включение Samba-сервера на базе Ubuntu в домен AD при помощи графического интерфейса и SADMS.
Возможно, скажем в домашних условиях или в спешке, вам захочется произвести все эти манипуляции в графическом режиме. Для этих целей существует пакет SADMS, о котором есть информация на сайте Ubuntu: https://help.ubuntu.com/community/ActiveDirectoryWinbind-SADMS .
А на сайте http://sadms.sourceforge.net/ можно узнать все об этом пакете и скачать его. Посмотрим на интерфайс пакета:
Рис. 1. Общий вид главной вкладки.
Здесь отображаются статусы winbind, smb и nmb, и присутствует индикация подключения компьютера к домену.
Рис. 2. Запуск smb и nmb.
Рис. 3.Вкладка «Данные».
Здесь мы должны указать данные, которые будут использоваться для подключения к домену. По умолчанию поля заполнены разработчиками, для примера. Разработчики пакета — французы, так что пусть вас не смущают примеры вроде «administrateur» вместо привычного «Administrator».
Рис. 4. Автоматический захват части параметров.
Щелкаем по «Определить» — и часть параметров подхватывается автоматически. Остальные придется заполнять вручную. Все эти параметры использовались при настройке из командной строки.
Рис. 5. Заполнение остальных полей.
Заполняем поля
Здесь обратите особое внимание: Netbios имя домена должно быть прописано БОЛЬШИМИ буквами, иначе получим ошибку Kerberos, как вышло в данном случае. Если все заполнено правильно, щелкаем по «Установить» — и SADMS включает машину в домен
Рис. 7. Меню «Проверки».
Из меню «Проверки» мы можем выполнить тесты на выполнение различных операций. Также можно провести все тесты из командной строки, как это описывалось ранее.
Рис. 8. Пример выводатеста на членство в домене.
Рис. 9. Результаты теста сети.
Рис. 10. Проверка наличия машинына контролере домена.
Сервер находится в списке доменных машин вместе с другими нашими серверами.
Итак, мы рассмотрели установку Samba и включение ее в домен — с использованием как командной строки, так и графического интерфейса. Использование графического интерфейса позволяет серьезно ускорить и упростить настройку, но вместе с тем не позволяет понять всю механику процесса, а также может серьезно затруднить процесс поиска ошибки. С другой стороны, CLI (Command Line Interface), хоть и предоставляет абсолютный контроль над всем, гораздо менее дружелюбен к пользователю и подразумевает у него наличие некоторых навыков работы. Какой способ использовать — решать вам.
Работа над ошибками
Winbind не запускается
При запуске Samba обнаруживаем, что winbind не запустился:
# /etc/init.d/winbind status * winbind is not running
В журнале log.winbindd обнаруживаем запись:
[2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain BUILTIN S-1-5-32 [2010/03/06 13:54:34, 2] winbindd/winbindd_util.c:235(add_trusted_domain) Added domain STORAGE S-1-5-21-3963871611-1338977097-196861091 [2010/03/06 13:54:34, 0] winbindd/winbindd_util.c:782(init_domain_list) Could not fetch our SID - did we join? [2010/03/06 13:54:34, 0] winbindd/winbindd.c:1385(main) unable to initialize domain list
Видим, что добавлен «встроенный домен» (BUILTIN) и домен «название компьютера» (STORAGE), подключиться к домену AD не удалось.
Решение: Переподключить компьютер в домен. Удалять придётся с самого контроллера, т.к. комадна net ads leave скорее всего не поможет.
Ошибка получения билета Kerberos
При попытке получить билет Kerberos получили:
kinit: KDC reply did not match expectations while getting initial credentials
Решение: указать имя домена в другом регистре. Скорее всего нужны все заглавные
Доступ к Samba из Windows 7 и 2008 r2
Начиная с этих версий параметры авторизации у MS поменялись. Скорее всего Samba вскоре это учтёт, а пока подружить системы можно изменив на Win7 свойства сетевой безопасности:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Локальные политики — Параметры безопасности
- Сетевая безопасность: минимальная сеансовая безопасность для клиентов на базе NTLM SSP — убрать галочку с «Требовать 128-битное шифрование». Таких параметра два — выполнить для обоих
- Сетевая безопасность: уровень проверки подлинности LAN Manager — выбрать в списке пункт «Отправлять LM- и NTML-ответы»
Настройка синхронизации времени.
Следующий шаг — настройка синхронизации по времени с контролером домена
Очень важно не забыть про этот момент, так как если расхождение по времени составит более пяти минут, мы не сможем получить тикет от Kerberos
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd, этот демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo apt-get install ntp
Теперь необходимо внести правки в файл /etc/ntp.conf, добавив в него информацию о сервере времени:
# You do need to talk to an NTP server or two (or three). server lab-dc1.lab.local
После чего нужно перезапустить демон ntpd:
sudo /etc/init.d/ntp restart
Полезные комманды
$ smbclient -N -L 10.0.0.117 | показывает ресурсы компьютера с адресом 10.0.0.117 |
$ smbclient //10.0.0.117/common | Вход в расшаренную директорию. Пользователь unix от которого выполняется команда должен быть зарегистрирован в домене. |
# net ads join -U pavel -d 3 | Добавить в домен пользователя pavel |
# winbindd -d 3 -i | Режим отладки (-d), winbindd запускается не как демон (-i) |
# wbinfo -a mydomain\\myuser%mypasswd | авторизируемся в домене (через winbindd, wbinfo входит в этот пакет) |
# ldapsearch | запросы к LDAP серверу, в нашем случае к MS Active Directory |
# tdbdump /etc/samba/secrets.tdb | просмотреть содержимое файла *.tdb |
Настройка прав доступа на файлы в Samba
Сделаю небольшое пояснение по правам доступа в файловом сервере samba. Вопрос этот сложный и объемный. Ему можно посвятить и отдельную статью. Но для полноты картины по настройке самбы, расскажу самое основное.
Как я уже ранее сказал, изменять права доступа к каталогам на файловом сервере можно с помощью команды setfacl. Давайте сейчас посмотрим на права доступа, которые установлены:
# getfacl /mnt/samba # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x other::---
С такими правами что-то создавать в папке сможет только пользователь admin51, а пользователи домена смогут только просматривать файлы и каталоги. Сделаем более прикладной вариант. Добавим права доступа на чтение и запись еще одной доменной группе — gr_it.
# setfacl -m g:gr_it:rwx /mnt/shara
Обращаю внимание, что иногда при копировании команд setfacl они не отрабатывают, выдавая не очень понятную ошибку:
setfacl: Option -m: Invalid argument near character 1
Наберите команду с клавиатуры, либо просто удалите и наберите снова ключ -m, он почему-то при копировании часто дает эту ошибку.
Смотрим, что получилось:
# getfacl /mnt/shara # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x group:gr_it:rwx mask::rwx other::---
То, что надо. Теперь пользователи группы gr_it имеют полные права на шару. Создадим одним таким пользователем папку test1 на нашей шаре и посмотрим, какие права она получит.
# getfacl /mnt/shara/test1 # file: mnt/shara/test1 # owner: user1 # group: пользователи\040домена user::rwx group::--- other::---
Права на папку имеет только ее создатель и больше никто. Для того, чтобы наследовались права с вышестоящего каталога, необходимо на этот вышестоящий каталог добавить дефолтные права доступа. Примерно вот так.
# setfacl -m d:g:gr_it:rwx,d:g:'пользователи домена':rx /mnt/shara
Смотрим, что получилось:
# getfacl /mnt/shara # file: mnt/shara # owner: admin51 # group: пользователи\040домена user::rwx group::r-x group:gr_it:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:пользователи\040домена:r-x default:group:gr_it:rwx default:mask::rwx default:other::---
Создадим теперь тем же пользователем еще одну папку test2 и проверим ее права.
# getfacl /mnt/shara/test2 # file: mnt/shara/test2 # owner: user # group: пользователи\040домена user::rwx group::--- group:пользователи\040домена:r-x group:gr_it:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:пользователи\040домена:r-x default:group:gr_it:rwx default:mask::rwx default:other::---
Применилось наследование с вышестоящих папок. Не забывайте про дефолтные права и учитывайте их при настройке прав доступа на файловом сервере.
Для удобной и корректной работы с правами доступа я обычно для крупных, корневых директорий выставляю права аккуратно через setfacl в консоли. Какие-то мелкие изменения по пользователям и группам в более низших иерархиях директорий делаю через windows acl с какой-нибудь виндовой машины.
Еще важно знать одну особенность выставления прав доступа в linux. В моей практике часто требуется дать какому-нибудь пользователю доступ в одну директорию, которая располагается там, где у пользователя нет вообще никаких прав
В windows эта проблема решается просто — даются права на конкретную папку, а пользователю кладется ярлык на эту папку. В итоге он имеет доступ к нужной директории и больше никуда.
В linux так сделать не получится. Для того, чтобы дать таким образом доступ на отдельную директорию пользователю, необходимо, чтобы по всем вышестоящим директориям у него были права на исполнение, то есть X. Их придется выставлять вручную по всем вышестоящим папкам. Результат будет такой же, как и в винде — пользователь получит доступ на чтение только в указанную папку, но для этого придется выполнить больше действий. Если не знаешь этот нюанс, можно потратить много времени, прежде чем поймешь, в чем проблема.
Завершающие команды
После успешного выполнения команды Назначения:
# Разрешить автоматический запуск службы контроллера домена:sudo systemctl unmask samba-ad-dcsudo systemctl enable samba-ad-dc
# Скопировать автоматически созданную конфигурацию службы Kerberossudo cp -b /var/lib/samba/private/krb5.conf /etc/krb5.conf
# Запустить доменную службу Samba sudo systemctl start samba-ad-dc
Проверка результатов Назначения
Подробно команды для проверки результатов настройки контроллера домена описаны в статье Присоединение Samba к существующему домену AD. Разница только в том, что домена AD сейчас нет, сервер только один, соответственно, опрашивать нужно только один сервер, и в ответах будет только один сервер.
Создание реверсивных зон
С помощью команды samba-tool dns zonecreate можно добавить необязательную зону реверсивного поиска:
samba-tool dns zonecreate samdom.example.com 2.0.10.in-addr.arpa -U Administrator
Password for :Zone 2.0.10.in-addr.arpa created successfully
Если требуется использовать несколько реверсивных зон, просто выполните команду несколько раз с указанием параметров соответствующих подсетей.Изменение реверсивных зон не требует перезапуска сервисов Samba или BIND.
LDAP
Для проверки доступности и работоспособности службы LDAP можно запросить отчет о репликации:
sudo samba-tool drs showrepl
Default-First-Site-Name\DC2 DSA Options: 0x00000001 DSA object GUID: 303f45ca-3a45-4169-ad71-0903ac3e7ab9 DSA invocationId: 4750cc0a-ba23-4492-a1cd-3c66f5b3b073 ==== INBOUND NEIGHBORS ==== CN=Configuration,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 10:27:20 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 10:27:20 2019 MSK DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 10:27:20 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 10:27:20 2019 MSK DC=DomainDnsZones,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 10:27:20 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 10:27:20 2019 MSK CN=Schema,CN=Configuration,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 10:27:20 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 10:27:20 2019 MSK DC=ForestDnsZones,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 10:27:20 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 10:27:20 2019 MSK ==== OUTBOUND NEIGHBORS ==== CN=Configuration,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Fri Dec 6 08:27:31 2019 MSK was successful 0 consecutive failure(s). Last success @ Fri Dec 6 08:27:31 2019 MSK DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Thu Dec 5 17:24:10 2019 MSK was successful 0 consecutive failure(s). Last success @ Thu Dec 5 17:24:10 2019 MSK DC=DomainDnsZones,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Thu Dec 5 17:24:10 2019 MSK was successful 0 consecutive failure(s). Last success @ Thu Dec 5 17:24:10 2019 MSK CN=Schema,CN=Configuration,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Thu Dec 5 17:24:10 2019 MSK was successful 0 consecutive failure(s). Last success @ Thu Dec 5 17:24:10 2019 MSK DC=ForestDnsZones,DC=samdom,DC=example,dc=com Default-First-Site-Name\DC1 via RPC DSA object GUID: ce07ab44-222f-4882-b4f5-ed382f6b2047 Last attempt @ Thu Dec 5 17:24:10 2019 MSK was successful 0 consecutive failure(s). Last success @ Thu Dec 5 17:24:10 2019 MSK ==== KCC CONNECTION OBJECTS ==== Connection -- Connection name: 49744c99-ca35-4811-af8f-73119e8b31f5 Enabled : TRUE Server DNS name : DC1.windomain.le Server DN name : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,dc=com TransportType: RPC options: 0x00000001 Warning: No NC replicated for Connection!
При проверке может выдаваться следующее предупреждение:
Кроме этого, для проверки корректности работы репликации каталогов, добавьте нового пользователя на ранее установленном контроллере домена, и убедитесь, что этот пользователь автоматически появился на новом контроллере.
Kerberos
При работе в домене AD, Kerberos используется для аутентификации пользователей, хостов, и сервисов.
Процедуры установки и настройки клиентов Kerberos см. Kerberos
Во время процедуры назначения Samba автоматическм создает конфигурационный файл /var/lib/samba/private/krb5.conf для клиентов Kerberos, настроенный на создаваемый DC.
В автоматически создаваемом файле конфигурации Kerberos для поиска доменного контроллера Kerberos (KDC) используются сервисные записи (SRV). Для того, чтобы такая конфигурация работала корректно, в домене должна быть правильно настроена и работать служба, в том числе созданы файлы зон, в которых размещены соответствующие сервисные записи (см. статью DNS-сервер BIND9).
Тестирование файлового сервера
Во время назначения автоматически создаются разделяемые ресурсы netlogon и sysvol, и они обязательно должны существовать в DC. Чтобы увидеть все разделяемые файловые ресурсы, предоставляемые DC:
smbclient -L localhost -U%
Нажмите, чтобы развернуть
Sharename Type Comment——— —- ——-netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba x.y.z)Domain= OS= Server=
Server Comment——— ——-
Workgroup Master——— ——-
Для проверки работы аутентификации, подключитесь к ресурсу netlogon с использованием учётной записи администратора домена:
smbclient //localhost/netlogon -UAdministrator -c ‘ls’
Enter Administrator’s password: Domain= OS= Server=. D 0 Tue Nov 1 08:40:00 2016.. D 0 Tue Nov 1 08:40:00 2016
49386 blocks of size 524288. 42093 blocks available
Инструменты командной строки
Для управления Samba AD DC в состав пакета Samba входит инструмент командной строки samba-tool.
Основные команды иструмента:
Команда | Описание |
---|---|
dbcheck |
Проверка локальной базы данных AD на наличие ошибок |
delegation | Управление делегированием |
dns | Управление параметрами доменной службы DNS |
domain | Управление параметрами домена |
drs | Управление службой репликации каталогов (Directory Replication Services, DRS) |
dsacl | Управление списками контроля доступа DS |
fsmo | Управление ролями (Flexible Single Master Operations, FSMO) |
gpo | Управление групповыми политиками |
group | Управление группами |
ldapcmp | Сравнение двух баз данных ldap |
ntacl | Управление списками контроля доступа ACL |
processes | Вывод списвка процессов (для упрощения отладки без использования setproctitle). |
rodc | Управление контроллером домена (Read-Only Domain Controller, RODC) |
sites | Управление сайтами |
spn | Управление службой принципалов (Service Principal Name, SPN) |
testparm | Проверка конфигурационного файла на корректность синтаксиса |
time | Получение показаний текущего времени сервера |
user | Управление пользователями |
visualize | Графическое представление состояния сети Samba |
Подробная информация об инструменте доступна в справочнике man:
man samba-tool
Краткую справку по работе инструмента можно получить командой
samba-tool -h
Разрешение имён для клиентских машин
После выполнения указанных выше настроек DNS сервер не может получать и, соответственно, выдавать информацию об именах и IP-адресах клиентских машин.
Если в домене используются клиентские машины, получающие динамические IP-адреса от сервера DHCP, сервер DNS может быть настроен на автоматическое получение информации о выданных адресах. Примерный порядок настройки см. в статье Динамическое обновление DNS клиентских машин FreeIPA;
Если в домене используются клиентские машины, которым присваиваются статические адреса, то:
- Можно использовать для присвоения этих статических адресов сервер DHCP с динамическим обновлением адресов;
Заключение
Скажу откровенно — мне не нравится, как работают файловые сервера samba с интеграцией в виндовом домене. Но настраивать их приходится часто, так как востребованный функционал. Востребован в первую очередь потому, что не требует вообще никаких денег за лицензии, и работает на минимальной конфигурации железа. Вот список типичных проблем при работе самбы в домене:
- Иногда через windows acl права перестают выставляться, возникают неинформативные ошибки, по которым невозможно понять, что не так.
- Я достаточно регулярно наблюдаю ситуацию, когда слетают соответствия доменных учеток линуксовым UID. В итоге права доступа превращаются в ничего не значащий набор цифр и перестают работать.
- При переносе данных с одного сервера на другой трудно сохранить права доступа. Можно поступить вот так для копирования прав доступа, либо как-то заморочиться, чтобы на всех серверах у вас были одинаковые UID доменных учетных записей. Я не разбирал этот вопрос подробно.
Если у вас есть возможность настроить файловый сервер на windows, либо обойтись линуксом без домена, то сделайте так. Существенно упростите настройку и дальнейшую эксплуатацию. Данную статью еще можно дополнить некоторыми моментами, которые я рассказал ранее, а что не рассказал, постараюсь раскрыть позже и добавить сюда ссылки на статьи:
- Подробное логирование всех действий с файлами на сервере.
- Настройка корзины для сетевых дисков samba.
- Бэкап файлового сервера.
- Мониторинг за размером файловой шары.
Буду рад любым полезным замечаниям, исправлениям, советам по настройке файлового сервера samba. Я потратил значительное время, чтобы поделиться своими знаниями и опытом с остальными. Надеюсь, кто-то поделится чем-то полезным со мной. В том числе ради этого я и пишу статьи. Они расширяют мой кругозор и закрепляют полученные знания.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Заключение
На этом все. Я рассмотрел наиболее типовую ситуацию, которая может быть полезной при использовании структуры AD совместно с linux серверами. При написании статьи использовал официальные руководства:
- Deployment, Configuration and Administration of Red Hat Enterprise Linux 6
- sssd.conf — Linux man page
Почему-то из руководства по RHEL 7 раздел, посвещенный SSSD убрали, хотя в 5 и 6 есть. Может просто я не заметил, так как структура сильно поменялась. Люблю я CentOS в первую очередь за отличную документацию Redhat. Там есть подробное описание практически всего, с чем приходилось сталкиваться. Надо только не лениться в английском языке разбираться.
Онлайн курс Infrastructure as a code
Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца.
Что даст вам этот курс:
- Познакомитесь с Terraform.
- Изучите систему управления конфигурацией Ansible.
- Познакомитесь с другими системами управления конфигурацией — Chef, Puppet, SaltStack.
- Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
- В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins
Смотрите подробнее программу по .