Установка контроллера домена Samba 4 на CentOS 7
На этой странице
- Установка Samba 4
- Добавление хоста Windows в домен
- Установка средства RSAT в Windows 10
- Аутентификация клиента с помощью Samba 4 в CentOS 7
- Аутентификация клиента с помощью Samba 4 в CentOS 6
Начиная с версии 4.0, Samba может работать как контроллер домена (DC) Active Directory (AD). В этом руководстве я покажу вам, как настроить Samba 4 в качестве контроллера домена с клиентами Windows 10, CentOS 7 и CentOS 6.
В этом уроке я скомпилирую Samba 4 из исходников. Если вы ищете установку Samba 4 на основе RPM и конфигурацию SELinux для Samba 4, см. мое новое руководство по Samba 4 здесь.
Я буду использовать 3 Системы, один сервер CentOS 7 и клиент Windows 10 для удаленного управления, клиент CentOS 7 и CentOS 6.
- 192.168.1.190 Samba4 AD centos7
- 192.168.1.191 удаленное управление win 10
- 192.168.1.22 — Аутентификация клиента — Centos 7
- 192.168.1.192 — Аутентификация клиента — Centos 6
Установка Самбы 4
192.168.1.190 Samba4 н.э. центос 7
Основа — CentOS 7 с минимальной установкой и отключенным SELinux.
[ ~]# sestatus SELinux status: disabled [ ~]#
Сделайте запись в файле /etc/hosts.
[ ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.190 samba4.sunil.cc samba4 [ ~]#
Установите репозиторий epel.
[ ~]# yum install epel-release -y
Установите все пакеты, необходимые для компиляции samba4.
[ ~]# yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\ policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\ cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -y
Теперь загрузите пакет samba4. Я использую последнюю версию samba-4.6.0 во время этой установки.
[ ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gz
Теперь давайте установим samba4.
[ ~]# tar -zxvf samba-4.6.0.tar.gz [ ~]# cd samba-4.6.0 [ samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind [ samba-4.6.0]# make && make install
Установка займет около 10 минут в зависимости от скорости системы.
Теперь займемся подготовкой домена.
[ samba]# samba-tool domain provision --use-rfc2307 --interactive Realm [SUNIL.CC]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=sunil,DC=cc Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820 File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run return self.run(*args, **kwargs) File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 471, in run nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision skip_sysvolacl=skip_sysvolacl) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill next_rid=next_rid, dc_rid=dc_rid) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le')) File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif ldb.add_ldif(data, controls) File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 225, in add_ldif self.add(msg, controls) [ samba]#
При предоставлении домена будут некоторые ошибки.
Чтобы исправить их, закомментируйте следующую строку в /etc/krb5.conf.
-------- #includedir /etc/krb5.conf.d/ --------
Запустите подготовку домена еще раз, и теперь домен будет создан без ошибок.
[ etc]# samba-tool domain provision --use-rfc2307 --interactive Realm [SUNIL.CC]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [4.2.2.1]: Administrator password: Retype password: Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=sunil,DC=cc Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=sunil,DC=cc Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: samba4 NetBIOS Domain: SUNIL DNS Domain: sunil.cc DOMAIN SID: S-1-5-21-2936486394-2075362935-551615353 [ etc]#
Убедитесь, что порты открыты в брандмауэре.
[ etc]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent; \ firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent; \ firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent; \ firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent; \ firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent [ ~]# firewall-cmd --reload
Создайте сценарий запуска для автоматического запуска службы во время перезагрузки.
[ ~]# cat /etc/systemd/system/samba.service [Unit] Description= Samba 4 Active Directory After=syslog.target After=network.target [Service] Type=forking PIDFile=/usr/local/samba/var/run/samba.pid ExecStart=/usr/local/samba/sbin/samba [Install] WantedBy=multi-user.target [ ~]# [ ~]# systemctl enable samba Created symlink from /etc/systemd/system/multi-user.target.wants/samba.service to /etc/systemd/system/samba.service. [ ~]# systemctl start samba
Добавление хоста Windows в домен
192.168.1.191 удаленное управление win 10
Убедитесь, что хост добавлен со статическим IP-адресом.
Добавление хоста в домен.
Чтобы управлять Samba4 из Windows, нам необходимо установить Microsoft Remote Server Tools (RSAT).
На вики-странице есть ссылки https://wiki.samba.org/index.php/Installing_RSAT.
Установка инструмента RSAT в Windows 10
Запустите установщик.
После перезагрузки запустите и введите dsa.msc
Нажмите на домен sunil.cc и щелкните правой кнопкой мыши Создать -> Пользователи.
Создание тестового пользователя.
Аутентификация клиента с помощью Samba 4 на CentOS 7
192.168.1.22 — аутентификация клиента в CentOS 7
Установка пакетов:
[ ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-common
Проверьте подключение к samba4:
[ ~]# realm discover SUNIL.CC sunil.cc type: kerberos realm-name: SUNIL.CC domain-name: sunil.cc configured: kerberos-member 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 login-formats: %U login-policy: allow-realm-logins [ ~]#
Присоединение к домену.
[ ~]# realm join SUNIL.CC Password for Administrator: [ ~]#
Проверяем, можем ли мы получить пользователя от samba4.
[ ~]# id SUNIL\\testuser uid=1570001104() [ ~]#
Настроить ссд.
[ ~]# cat /etc/sssd/sssd.conf [sssd] domains = sunil.cc config_file_version = 2 services = nss, pam [domain/sunil.cc] ad_domain = sunil.cc krb5_realm = SUNIL.CC realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%%d access_provider = ad [ ~]#
Перезагрузите ссд.
[ ~]# systemctl restart sssd [ ~]# systemctl enable sssd
Проверьте пользователя.
[ uid=1570001105() [ ~]#
Получить пользователя без доменного имени.
[ ~]# vim /etc/sssd/sssd.conf ----------- ------------ use_fully_qualified_names = False ----------- -----------
Перезапустите sssd и проверьте команду id.
[ ~]# systemctl restart sssd [ ~]# id sambauser uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group) [ ~]#
Аутентификация клиента с помощью Samba 4 на CentOS 6
192.168.1.192 — Аутентификация клиента в CentOS 6.
Установка пакетов.
[ db]# yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
Измените файл конфигурации kerberos.
[ db]# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = SUNIL.CC dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] SUNIL.CC = { kdc = samba4.sunil.cc admin_server = samba4.sunil.cc } [domain_realm] .sunil.cc = SUNIL.CC sunil.cc = SUNIL.CC [ db]#
Мы будем использовать команду adcli для присоединения к домену.
[ db]# adcli info sunil.cc [domain] domain-name = sunil.cc domain-short = SUNIL domain-forest = sunil.cc domain-controller = samba4.sunil.cc domain-controller-site = Default-First-Site-Name domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret domain-controller-usable = yes domain-controllers = samba4.sunil.cc [computer] computer-site = Default-First-Site-Name [ db]# [ db]# adcli join sunil.cc Password for : [ db]#
Убедитесь, что билет kerberos создан.
[ db]# klist -ke
Настройте аутентификацию.
[ db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Измените конфигурацию sssd сейчас, чтобы выполнить аутентификацию.
[ db]# cat /etc/sssd/sssd.conf [sssd] services = nss, pam, ssh, autofs config_file_version = 2 domains = sunil.cc [domain/sunil.cc] id_provider = ad # Uncomment if service discovery is not working # ad_server = server.win.example.com default_shell = /bin/bash fallback_homedir = /home/%u [ db]#
Перезапустите службу sssd.
[ db]# chkconfig sssd on [ db]# service sssd restart Stopping sssd: [ OK ] Starting sssd: [ OK ] [ db]#
Проверка пользователя.
[ db]# id sambauser uid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group) [ db]#