- Дополнительные серверы и member-сервисы в домене ALT Linux
- Домен
- Клиент
- Сервер
- Файловый сервер Samba
- Настройка аутентификации пользователей
- Настройка smb.conf
- Создание принципала и получение ключа Kerberos
- Samba/Fileserver/AD-auth
- Параметры описанного стенда
- Подключение к домену
- Настройка Samba
- Настройка доменной аутентификации
Дополнительные серверы и member-сервисы в домене ALT Linux
Виртуализатор 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. А отсюда же следует
чтобы 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, и получать доступ к находящимся в нём файлам под собственным именем и с соответствующими правами доступа.
Samba/Fileserver/AD-auth
Задача: поднять файловый сервер на samba с авторизацией доменных пользователей и беспарольным доступом к общей папке.
Параметры описанного стенда
Имя домена: TEST.ALT Рабочая группа: TEST Имя компьютера в netbios: DC Имя пользователя-администратора: Administrator Пароль администратора: Pa$$word Контроллер домена: dc.test.alt Файл-сервер samba: fileserver.test.alt
Подключение к домену
Вводим файл-сервер в домен, настраиваем аутентификацию и авторизацию SSSD согласно инструкции.
Настройка Samba
Создадим директорию на файл-сервере, куда будем предоставлять доступ доменным пользователям:
Изменим группу владельцев папки на доменных пользователей:
# chown :"TEST\domain users" /mnt/share/sambashare
Отредактируем /etc/samba/smb.conf, указав доступность папки:
[sambashare] comment=shared files path=/mnt/share/sambashare read only=no browseable=yes
Настройка доменной аутентификации
Создадим keytab-файл и пропишем в /etc/samba/smb.conf kerberos-аутентификацию. Инструкция
Добавим в keytab-файл принципала сервиса «CIFS»:
# net ads keytab add CIFS -U Administrator Processing principals to add…
Скопируем /etc/krb5.keytab в /etc/samba/:
cp /etc/krb5.keytab /etc/samba/
Укажем в /etc/samba/smb.conf путь к keytab-файлу:
dedicated keytab file = /etc/samba/krb5.keytab kerberos method = dedicated keytab
Попробуем зарегистрироваться с помощью keytab-файла:
# kinit -V -k CIFS/fileserver.test.alt -t /etc/samba/krb5.keytab Using default cache: persistent:0:0 Using principal: CIFS/fileserver.test.alt@TEST.ALT Using keytab: /etc/samba/krb5.keytab Authenticated to Kerberos v5
После выполненных действий при открытии сетевого окружения с хоста, где выполнен вход от доменного пользователя, нам без дополнительного ввода пароля будет доступен наш файл-сервер и папка, к которой мы открывали доступ.