Дополнительные серверы и member-сервисы в домене ALT Linux
Демонстрационный стенд
Хост-машина с характеристиками не ниже:
- Процессорных ядер 2, лучше 4. Рекомендуется процессор не хуже Intel Core i5
- Оперативная память не менее 4 Гб, рекомендуется 8 Гб
- Свободное дисковое пространство от 100 Гб
Виртуализатор VirtualBox. Для демонстрации потребуется не менее трёх виртуальных машин:
- Домен - первый сервер в сети, осуществляющий функции контроллера домена
- Клиент - рабочая станция, клиентский компьютер
- Сервер - сервер, не являющийся контроллером домена. Компьютер, предоставляющий свои ресурсы Клиенту с аутентификацией последнего на Домене.
Для установки всех виртуальных машин используется один и тот же установочный образ altlinux-7.0.4-centaurus-i586-ru-install-dvd5.iso
N.B. По завершении установки не забыть отключить дистрибутив от виртуального привода. Само по себе не мешает, но может создать проблему в случае переноса готового образа на другой хост.
Домен
- Процессор класса i686 — один;
- Оперативная память 1Гб;
- Виртуальный диск 20 Гб, динамический;
- Виртуальные сетевые интерфейсы — два. Адаптер 1 тип подключения NAT, с пробросом портов хоста 8081 и 2201 на 8080 (alterator) и 22 (ssh) гостя соответственно. Адаптер 2 тип подключения внутренняя сеть `intnet`.
Тип установки "Сервер", установка по умолчанию. Имя хоста dcserver, пароль суперпользователя пусть будет 123, системный пользователь admin тоже с паролем 123. Cетевому адаптеру в intnet необходим статический IP, в нашем случае 10.10.10.1/24. Если всё сделано правильно, интерфейс Alterator виртуальной машины должен быть доступен с хоста по адресу https://localhost:8081. Через меню Система-Домен настроим поддержку домена с именем (например) test.lab как описано в документации. Далее, через меню Пользователи, создадим в домене test.lab тестового пользователя user c паролем 123.
Клиент
- Процессор класса i686 — один;
- Оперативная память 1Гб;
- Виртуальный диск 40 Гб, динамический;
- Виртуальный сетевой интерфейс Адаптер 1 тип подключения внутренняя сеть `intnet`.
Тип установки "Рабочая станция", установка по умолчанию. Имя хоста client, пароль суперпользователя 123, системный пользователь admin с паролем 123. По завершении установки и перезагрузки, зайти системным пользователем admin и включить client в домен test.lab
Если всё сделано правильно, доменный пользователь user может открыть сеанс работы (войти с паролем 123) на рабочей станции client.
Сервер
- Процессор класса i686 — один;
- Оперативная память 1Гб;
- Виртуальный диск 40 Гб, динамический;
- Виртуальные сетевые интерфейсы — два. Адаптер 1 тип подключения NAT, с пробросом портов хоста 8082 и 2202 на 8080 (alterator) и 22 (ssh) гостя соответственно. Адаптер 2 тип подключения внутренняя сеть `intnet`.
Тип установки "Сервер", установка по умолчанию. Имя хоста server, пароль суперпользователя 123, системный пользователь admin тоже с паролем 123. Сетевому адаптеру intnet назначим статический IP 10.10.10.2/24. Если всё сделано правильно, интерфейс Alterator виртуальной машины должен быть доступен с хоста по адресу https://localhost:8082 С машиной server можно соединиться по ssh с хоста командой
$ ssh admin@localhost -p 2202
Файловый сервер Samba
Цель демонстрации - показать, как файловые ресурсы сервера server могут быть доступны пользователю user домена test.lab, открывшему сеанс на рабочей станции client. Для начала убедимся, что server доступен по сети:
[user@client ~]$ ping 10.10.10.2 PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data. 64 bytes from 10.10.10.2: icmp_req=1 ttl=64 time=0.975 ms [user@client ~]$ host server Host server not found: 3(NXDOMAIN)
Чтобы иметь возможность обращаться к серверу по имени, его следует зарегистрировать в зоне test.lab на DNS сервере.
Настройка аутентификации пользователей
Для начала необходимо обеспечить опознание доменных пользователей сервером. Проще и надёжнее всего это сделать через web-интерфейс Alterator.
После перезагрузки getent passwd на сервере должен показать, в числе прочих, также и доменного пользователя user.
Настройка smb.conf
По умолчанию сервис Samba на server не включен и не настроен, для начала его следует просто включить
[root@server ~]# service smb status smbd is stopped [root@server ~]# chkconfig smb on [root@server ~]# service smb start Starting SMB services: Starting smbd service: [ DONE ] [root@server ~]# service smb status smbd is running
Практически к серверу уже теперь можно обратиться по адресу smb://server, однако на нём пока не настроено ни одного ресурса. Сохраним оригинальный smb.conf для справки, а за основу конфигурации возьмём smb.conf c контроллера домена dcserver.
[root@server samba]# mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
а за основу конфигурации возьмём smb.conf c контроллера домена dcserver.
[root@dcserver samba]# cat smb.conf
[global]
realm = TEST.LAB
server string = Samba server on %h (v. %v)
security = user
dedicated keytab file = /etc/krb5.keytab
kerberos method = dedicated keytab
log file = /var/log/samba/log.%m
max log size = 50
printcap name = cups
dns proxy = No
use sendfile = Yes
passdb backend = ldapsam:ldap://127.0.0.1/
ldap admin dn = cn=ldaproot,dc=test,dc=lab
ldap suffix = dc=test,dc=lab
ldap group suffix = ou=Group
ldap user suffix = ou=People
workgroup = TEST.LAB
local master = yes
preferred master = yes
domain master = yes
domain logons = yes
add user script = /usr/sbin/ldap-useradd "%u"
delete user script = /usr/sbin/ldap-userdel "%u"
add group script = /usr/sbin/ldap-groupadd "%g"
delete group script = /usr/sbin/ldap-groupdel "%g"
add user to group script = /usr/sbin/ldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/ldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/ldap-usermod -g "%g" "%u"
add machine script = /usr/sbin/ldap-useradd -w -i "%u"
ldap machine suffix = ou=Computers
encrypt passwords = yes
ldap delete dn = no
logon script = netlogon.bat
[share]
comment = Commonplace
path = /srv/share
read only = No
Кое-что здесь требуется изменить. Прежде всего,
passdb backend = ldapsam:ldaps://10.10.10.1/
поскольку на контроллере ALT-домена LDAP работает только для 127.0.0.1 (loopback), по сети только LDAPS. А отсюда же следует
ldap ssl = no
чтобы Samba не делала бессмысленной попытки StartTLS поверх соединения LDAPS. Поправим параметры
local master = no
preferred master = no
domain master = no
поскольку мастер в домене уже есть, на (контроллере) dcserver. И обязательно задать пароль служебного пользователя ldaproot, для авторизации в службе LDAP. Пароль можно узнать на dcserver:
[root@dcserver openldap]# cat /etc/openldap/slapd-test.lab.conf | grep rootpw
rootpw euhou7thieyah8ch
Если пароль не задать или задать неправильно, сервис будет валиться с ошибкой
[root@server samba]# cat /var/log/samba/log.smbd | tail
pdb backend ldapsam:ldaps://10.10.10.1/ did not correctly init (error was NT_STATUS_NO_MEMORY)
Пароль euhou7thieyah8ch это случайный пример и в вашем случае он будет, разумеется, совсем другой.
[root@server samba]# smbpasswd -w euhou7thieyah8ch
Setting stored password for "cn=ldaproot,dc=test,dc=lab" in secrets.tdb
Создание принципала и получение ключа Kerberos
На контроллере домена используем kadmin.local
# kadmin.local
kadmin.local: listprincs
K/M@TEST.LAB
krbtgt/TEST.LAB@TEST.LAB
kadmin/admin@TEST.LAB
kadmin/changepw@TEST.LAB
kadmin/history@TEST.LAB
kadmin/dcserver.test.lab@TEST.LAB
nfs/dcserver.test.lab@TEST.LAB
cifs/dcserver.test.lab@TEST.LAB
host/dcserver.test.lab@TEST.LAB
pop3/dcserver.test.lab@TEST.LAB
http/dcserver.test.lab@TEST.LAB
HTTP/dcserver.test.lab@TEST.LAB
pop/dcserver.test.lab@TEST.LAB
imap/dcserver.test.lab@TEST.LAB
smtp/dcserver.test.lab@TEST.LAB
user@TEST.LAB
ldap/dcserver.test.lab@TEST.LAB
В списке пока нет записи принципала для server.test.lab. Создадим её.
kadmin.local: addprinc -randkey cifs/server.test.lab
WARNING: no policy specified for cifs/server.test.lab@TEST.LAB; defaulting to no policy
Principal "cifs/server.test.lab@TEST.LAB" created.
kadmin.local: listprincs
K/M@TEST.LAB
krbtgt/TEST.LAB@TEST.LAB
kadmin/admin@TEST.LAB
kadmin/changepw@TEST.LAB
kadmin/history@TEST.LAB
kadmin/dcserver.test.lab@TEST.LAB
nfs/dcserver.test.lab@TEST.LAB
cifs/dcserver.test.lab@TEST.LAB
host/dcserver.test.lab@TEST.LAB
pop3/dcserver.test.lab@TEST.LAB
http/dcserver.test.lab@TEST.LAB
HTTP/dcserver.test.lab@TEST.LAB
pop/dcserver.test.lab@TEST.LAB
imap/dcserver.test.lab@TEST.LAB
smtp/dcserver.test.lab@TEST.LAB
user@TEST.LAB
ldap/dcserver.test.lab@TEST.LAB
cifs/server.test.lab@TEST.LAB
Теперь экспортируем ключ в файл и передадим его на server
kadmin.local: ktadd -e aes256-cts-hmac-sha1-96:normal -k /root/samba.keytab cifs/server.test.lab
Entry for principal cifs/server.test.lab with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/root/samba.keytab.
[root@dcserver ~]# scp samba.keytab admin@server:/home/admin
The authenticity of host 'server (10.10.10.2)' can't be established.
ECDSA key fingerprint is 6a:43:6f:dd:35:b6:01:c2:0d:51:54:3b:4b:04:9b:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server,10.10.10.2' (ECDSA) to the list of known hosts.
admin@server's password:
samba.keytab 100% 86 0.1KB/s 00:00
kadmin.local: get_principals cifs/*
cifs/dcserver.test.lab@TEST.LAB
cifs/server.test.lab@TEST.LAB
Пользователь user, открывший сеанс на рабочей станции client, получает теперь билет не только для dcserver, но и для нового сервера server.
[user@client ~]$ klist
Ticket cache: FILE:/tmp/krb5cc_5000
Default principal: user@TEST.LAB
Valid starting Expires Service principal
19.08.2014 14:45:19 20.08.2014 00:45:19 krbtgt/TEST.LAB@TEST.LAB
renew until 19.08.2014 14:45:19
19.08.2014 14:45:21 20.08.2014 00:45:19 cifs/dcserver.test.lab@
renew until 19.08.2014 14:45:19
19.08.2014 14:45:21 20.08.2014 00:45:19 cifs/dcserver.test.lab@TEST.LAB
renew until 19.08.2014 14:45:19
19.08.2014 14:45:22 20.08.2014 00:45:19 cifs/server.test.lab@
renew until 19.08.2014 14:45:19
19.08.2014 14:45:22 20.08.2014 00:45:19 cifs/server.test.lab@TEST.LAB
renew until 19.08.2014 14:45:19
И может в окне открыть по адресу smb://server.test.lab общий ресурс share, и получать доступ к находящимся в нём файлам под собственным именем и с соответствующими правами доступа.