Поиск по сайту:

Установка контроллера домена Samba 4 на CentOS 7


На этой странице

  1. Установка Samba 4
  2. Добавление хоста Windows в домен
  3. Установка средства RSAT в Windows 10
  4. Аутентификация клиента с помощью Samba 4 в CentOS 7
  5. Аутентификация клиента с помощью 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]#