В данной заметке, я пошагово про инструктирую Вас да и себе шпаргалка на будующее, как операционную систему Ubuntu Server 12.04.5 ввести в домен Active Directory (polygon.local). У меня на текущем месте работы много сервисов работает из под Ubuntu, а с использованием связки система плюс домен я получу дополнительную возможность, такую как единая аутентификация на основе доменной учетной записи, организация файлового хранилища и настройка принт сервера. Все это в последствии конечно же будет отражено в моем блоге, а пока распишу от и до по теме данной заметки.
Предварительные требования:
Развернутая система Ubuntu Server 12.04.5 со всеми установленными обновлениями по части безопасности
Отключено использование apparmor по заметке:
Развернутый домен контроллер по заметке со следующими настроенными ролями: DNS, DHCP
IP-адрес домен контроллера: 10.9.9.1
Полное FQDN имя домен контроллера: srv-dc.polygon.local
IP-адрес системы Ubuntu: IP address for eth0: 10.9.9.11
Полное FQDN имя: srv-serv
Итак ниже действия на системе Ubuntu, сперва обновляем состояние по дефолтным репозитариям:
ekzorchik@srv-serv:~$ sudo apt-get update
Fetched 5,263 kB in 13s (394 kB/s)
Reading package lists... Done
Устанавливаем в систему samba, krb5-user и winbind:
Для справки:
Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu. Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux-систему, присвоив им ID из заданного диапазона. Таким образом, вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
ekzorchik@srv-serv:~$ sudo apt-get install samba krb5-user winbind -y
На этапе установке пакетом предлагается предопределить настройки Kerberos 5 — ничего не вводим и нажимаем OK:
Default Kerberos version 5 realm: <ничего не вводим>
Создаем резервную копию конфигурационного файла krb5.conf:
ekzorchik@srv-serv:~$ sudo cp /etc/krb5.conf /etc/krb5.conf.backup
Редактируем конфигурационный файл krb5.conf:
Очищаю конфиг:
ekzorchik@srv-serv:~$ sudo bash -c "cat > /etc/krb5.conf"
Ctrl+c
Открываю редактором и привожу конфиг согласно моей авторизации системы в домене:
ekzorchik@srv-serv:~$ sudo nano /etc/krb5.conf
[ниже мой конфиг]
[libdefaults]
default_realm = POLYGON.LOCAL
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
POLYGON.LOCAL = {
kdc = srv-dc.polygon.local
admin_server = srv-dc.polygon.local
default_domain = polygon.local
}
[domain_realm]
.polygon.local = POLYGON.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = false
Сохраняем внесенные изменения.
Инициализирую подключение к Polygon.local:
ekzorchik@srv-serv:~$ sudo kinit Administrator@POLYGON.LOCAL
Password for Administrator@POLYGON.LOCAL:<ввожу 712mbddr@>
никаких упреждающих сообщений не получаю, значит проблем нет
Если нужно удалить полученным билет авторизации Kerberos:
ekzorchik@srv-serv:~$ sudo kdestroy
ekzorchik@srv-serv:~$ sudo klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)
Как видим token я получил:
ekzorchik@srv-serv:~$ sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@POLYGON.LOCAL
Valid starting Expires Service principal
14/09/2014 11:31 14/09/2014 21:31 krbtgt/POLYGON.LOCAL@POLYGON.LOCAL
renew until 15/09/2014 11:31
На заметку: обратите внимание, тикет выдался 14.09.2014 в 11:31 и действителен до 14.09.2014 21.31, и его перерегистрация произойдет 15.09.2014 в 11:31, это все конечно хорошо, но срок выдачи тикета хотелось бы увеличить с одного дня на большее число, почитавши немного документацию нашел следующий способ, просто запрашивать выдачу тикета на указанное количество дней:
ekzorchik@srv-serv:~$ sudo kinit -r7d Administrator@POLYGON.LOCAL
Password for Administrator@POLYGON.LOCAL:<ввожу пароль 712mbddr@>
смотрю какой строк у выданного тикета:
ekzorchik@srv-serv:~$ sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@POLYGON.LOCAL
Valid starting Expires Service principal
14/09/2014 12:35 14/09/2014 22:35 krbtgt/POLYGON.LOCAL@POLYGON.LOCAL
renew until 21/09/2014 12:35 — вот теперь другое дело.
На заметку: Чтобы получать тикет от домен контроллера, необходимо чтобы разница по времени с ним не была более 5 минут, из этого следует что в системе время должно быть корректным:
Выставляем правильный часовой пояс:
ekzorchik@srv-serv:~$ sudo rm -f /etc/localtime
ekzorchik@srv-serv:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Устанавливаем ntp для синхронизации времени на сервере:
ekzorchik@srv-serv:~$ sudo apt-get install ntp ntpdate -y
ekzorchik@srv-serv:~$ sudo ntpdate pool.ntp.org
14 Sep 12:18:10 ntpdate[3804]:
ekzorchik@srv-serv:~$ sudo ntpdate -bs pool.ntp.org
ekzorchik@srv-serv:~$ date
Sun Sep 14 12:19:03 MSK 2014
Настраиваю SAMBA:
Создаю резервную копию конфигурационного файла smb.conf:
ekzorchik@srv-serv:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Редактирую конфигурационный файл smb.conf:
удаляем все из файла:
ekzorchik@srv-serv:~$ sudo bash -c "cat > /etc/samba/smb.conf"
Нажимаем Ctrl + C
и привожу файл к новому виду:
ekzorchik@srv-serv:~$ sudo nano /etc/samba/smb.conf
[global]
workgroup = POLYGON
realm = POLYGON.LOCAL
server string = %h server (Samba %v, Ubuntu)
security = ADS
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
domain master = No
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
template shell = /bin/bash
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
idmap config * : range = 10000-20000
idmap config * : backend = tdb
Проверяю конфигурационный файл на предмет корректности:
ekzorchik@srv-serv:~$ sudo testparm.samba3
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Loaded services file OK.
'winbind separator = +' might cause problems with group membership.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
<Нажимаю клавишу «Enter” для отображения дампа сервиса»
[global]
workgroup = POLYGON
realm = POLYGON.LOCAL
server string = %h server (Samba %v, Ubuntu)
security = ADS
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
domain master = No
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
template shell = /bin/bash
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
idmap config * : range = 10000-20000
idmap config * : backend = tdb
Перезапускаю winbind сервис и Samba сервер:
ekzorchik@srv-serv:~$ sudo /etc/init.d/winbind stop
* Stopping the Winbind daemon winbind [ OK ]
ekzorchik@srv-serv:~$ sudo service smbd restart
smbd stop/waiting
smbd start/running, process 2993
ekzorchik@srv-serv:~$ sudo /etc/init.d/winbind start
* Starting the Winbind daemon winbind [ OK ]
Добавляю систему Ubuntu Server 12.04.5 в домен Active Directory:
Понадобится учетная запись с правом добавления компьютера в домен, например учетка администратора домена POLYGON.LOCAL\ekzorchik.
ekzorchik@srv-serv:~$ sudo net.samba3 ads join -U ekzorchik -S srv-dc.polygon.local
Enter ekzorchik's password:
Using short domain name -- POLYGON
Joined 'SRV-SERV' to realm 'polygon.local'
No DNS domain configured for srv-serv. Unable to perform DNS Update.
DNS update failed!
Странно вроде ошибка выдается, но в Active Directory — домена polygon.local создается запись о заведенной системе:
, но конечно же ошибок при вводе системы в домен в принципе не должно быть, а тут у меня «DNS update failed”, взглянув на оснастку DNS на домен контроллер наблюдаю, что запись типа «А» для добавленной системы не создалась, попробовав перезагрузить систему: srv-serv результата не принесло. Поэтому просто создам в оснастке DNS данную запись в ручную:
Далее настраиваю специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory:
nsswitch.conf, задает источники информации об учетных записях. Учетные записи у нас теперь будут на контроллере домена, а источником информации о них будет служить winbind.
Перед редактированием файла создаем его резервную копию:
ekzorchik@srv-serv:~$ sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.backup
Далее приводим его к виду:
ekzorchik@srv-serv:~$ sudo nano /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
После успешного внесения всех настроек перезагружаем samba и winbind сервисы:
ekzorchik@srv-serv:~$ sudo /etc/init.d/winbind stop
* Stopping the Winbind daemon winbind [ OK ]
ekzorchik@srv-serv:~$ sudo service smbd restart
smbd stop/waiting
smbd start/running, process 3085
ekzorchik@srv-serv:~$ sudo /etc/init.d/winbind start
* Starting the Winbind daemon winbind
Убеждаемся, что winbind работает (показать пользователей домена):
ekzorchik@srv-serv:~$ sudo wbinfo -u
administrator
guest
krbtgt
ekzorchik
Убеждаемся, что winbind работает (показать группы домена):
ekzorchik@srv-serv:~$ sudo wbinfo -g
domain computers
domain controllers
schema admins
enterprise admins
cert publishers
domain admins
domain users
domain guests
group policy creator owners
ras and ias servers
allowed rodc password replication group
denied rodc password replication group
read-only domain controllers
enterprise read-only domain controllers
dnsadmins
dnsupdateproxy
dhcp users
dhcp administrators
Теперь, для проверки, подключился ли наш winbind к контроллеру и функционирует ли нормально, запустим:
ekzorchik@srv-serv:~$ sudo getent passwd | grep -E "POLYGON"
В результате мы должны увидеть наши локальные учетки и длинный список наших доменных учеток.
administrator:*:10000:10000:Administrator:/home/POLYGON/administrator:/bin/bash
guest:*:10001:10001:Guest:/home/POLYGON/guest:/bin/bash
krbtgt:*:10002:10000:krbtgt:/home/POLYGON/krbtgt:/bin/bash
ekzorchik:*:10003:10000:ekzorchik:/home/POLYGON/ekzorchik:/bin/bash
Выведем информацию о домен контроллере:
ekzorchik@srv-serv:~$ sudo net.samba3 ads info
LDAP server: 10.9.9.1
LDAP server name: srv-dc.polygon.local
Realm: POLYGON.LOCAL
Bind Path: dc=POLYGON,dc=LOCAL
LDAP port: 389
Server time: Sun, 14 Sep 2014 11:52:15 MSK
KDC server: 10.9.9.1
Server time offset: 0
Ну вот собственно и всё, я показал и разобрал, как на примере завести систему с операционной системой Ubuntu Server 12.04.5 в домен и авторизовать ее там. В последующих производных от этой заметки я буду рассматривать работу тех или иных сервисов, учиться всему новому исходя из поставленных самому себе задач и оптимизировать их управление. Но пока на этом я, читатели моего блога попрощаюсь, до встречи, с уважением автор блога ekzorchik.
Наконец таки пошаговая заметка, все проделал никаких проблем у себя не обнаружил, вот все бы блоги этим отличались – правдивостью информации.
Автор так держать.
Подскажите не первый раз уже попадается отключение apparmor – это связанно со сложностью настройки?
Я бы выразился иначе, доступ к системам уже имеет лишь ограниченный круг лиц и поэтому настраивать еще один уровень безопасности по больше части не нужно. И вроде как да, сложность настройки. Мне пока работа с apparmor не требовалась.