#yum update -y #yum upgrade #systemctl stop NetworkManager #systemctl disable NetworkManager #systemctl stop firewalld #systemctl disable firewalld
#vi /etc/selinux/config SELINUX=disabled
Перезапустим:
#reboot
Проверим:
#sestatus Вывод: SELinux status: disabled
#vi /etc/sysconfig/network-script/ifcfg-eth0 BOOTPROTO="none" IPADDR=192.168.1.170 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 PEERDNS=no
#vi /etc/resolv.conf nameserver 8.8.8.8
#hostnamectl set-hostname CENTDC
#vi /etc/hosts 192.168.1.170 centdc.linux.ltd CENTDC
#systemctl restart network
#yum install -y bash-completion nano mc htop wget bind bind-utils bind-sdb docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel keyutils-libs-devel krb5-workstation libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography python3-dns python3-gpg python36-devel readline-devel rpcgen systemd-devel tar zlib-devel ntp
Скопируем содержимое по ссылке оно нужно нам для подготовки перед сборкой, вставим содержимое в install.sh, скрипт установит недостающие пакеты, которые по какой-то причине были не установлены, запустим его:
#cd /home/admin #nano install.sh #chmod +x install.sh #./install.sh
#wget https://download.samba.org/pub/samba/stable/samba-4.11.0.tar.gz #tar -zxf samba-4.11.0.tar.gz #cd samba-4.11.0 #./configure --with-systemd --with-winbind #make && make install #echo 'pathmunge /usr/local/samba/bin/' > /etc/profile.d/custompath.sh #chmod +x /etc/profile.d/custompath.sh #. /etc/profile #nano /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
#nano /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // See the BIND Administrator's Reference Manual (ARM) for details about the // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html options { #tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; - раскомментируем чуть позже. listen-on port 53 { any;}; #listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; allow-update { any; }; allow-recursion { any; }; forwarders { 8.8.8.8; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; #include "/usr/local/samba/bind-dns/named.conf"; - раскомментируем чуть позже.
#systemctl enable named #systemctl restart named #systemctl status named
Переименуем конфиг Kerberos:
#mv /etc/krb5.conf /etc/krb5.conf.default
#samba-tool domain provision --use-rfc2307 --interactive .... DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Включим автозапуск и запустим:
#systemctl enable samba #systemctl start samba
Раскомментируем include и keytab в /etc/named.conf о котором упоминали выше.
Скопируем конфиг Kerberos:
# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
Исправим resolv:
#nano /etc/resolv.conf search linux.ltd nameserver 192.168.1.170
Изменим и проверим права:
#chown root:named /usr/local/samba/private #chmod 775 /usr/local/samba/private #chown root:named /usr/local/samba/private/dns.keytab #chmod 640 /usr/local/samba/private/dns.keytab # ls -ld /usr/local/samba/private/ drwxrwxr-x 7 root named 4096 сен 30 13:26 /usr/local/samba/private/ # ls -l /usr/local/samba/private/dns.keytab -rw-r----- 2 root named 717 сен 30 13:26 /usr/local/samba/private/dns.keytab
Перезапустим все:
#systemctl restart network #systemctl restart named #systemctl restart samba
# kinit administrator # klist
# /usr/local/samba/sbin/samba_dnsupdate --verbose IPs: ['192.168.1.170'] ...................... No DNS updates needed
# samba-tool dns zonecreate LINUX.LTD 1.168.192.in-addr.arpa -Uadministrator # samba-tool dns add LINUX.LTD 1.168.192.in-addr.arpa 170 PTR LINUX.LTD -Uadministrator -----------------------------------------------------------------------------------------
Готово.
На 1-й, тот что настраивали выше в resolv добавим:
#nano /etc/resolv.conf # Generated by NetworkManager search linux.ltd nameserver 192.168.1.170 - первичный nameserver 192.168.1.200 - вторичный
Подготовку системы сделаем такую же, только ip укажем 192.168.1.200.
Пропишем хосты:
#vi /etc/hosts 192.168.1.200 centbdc.linux.ltd CENTBDC
Перезапустим сеть:
#systemctl restart network
Установим пакеты так же как и в 1-м случае:
#yum install -y bash-completion nano mc htop wget bind bind-utils bind-sdb docbook-style-xsl gcc gdb gnutls-devel gpgme-devel jansson-devel keyutils-libs-devel krb5-workstation libacl-devel libaio-devel libarchive-devel libattr-devel libblkid-devel libtasn1 libtasn1-tools libxml2-devel libxslt lmdb-devel openldap-devel pam-devel perl perl-ExtUtils-MakeMaker perl-Parse-Yapp popt-devel python3-cryptography python3-dns python3-gpg python36-devel readline-devel rpcgen systemd-devel tar zlib-devel ntp
Скопируем содержимое по ссылке, вставим содержимое в install.sh, запустим:
#cd /home/admin #nano install.sh #chmod +x install.sh #./install.sh
Приступим к установке:
#wget https://download.samba.org/pub/samba/stable/samba-4.11.0.tar.gz #tar -zxf samba-4.11.0.tar.gz #cd samba-4.11.0 #./configure --with-systemd --with-winbind #make && make install #echo 'pathmunge /usr/local/samba/bin/' > /etc/profile.d/custompath.sh #chmod +x /etc/profile.d/custompath.sh #. /etc/profile #nano /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
Исправим resolv:
#nano /etc/resolv.conf # Generated by NetworkManager search linux.ltd nameserver 192.168.1.200 - вторичный nameserver 192.168.1.170 - первичный
Настроим Bind:
#nano /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // See the BIND Administrator's Reference Manual (ARM) for details about the // configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html options { #tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab"; - раскомментируем чуть позже. listen-on port 53 { any;}; #listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; allow-update { any; }; allow-recursion { any; }; forwarders { 8.8.8.8; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; #include "/usr/local/samba/bind-dns/named.conf"; - раскомментируем чуть позже.
Включим автозапуск службы, перезапустим и посмотрим статус:
#systemctl enable named #systemctl restart named #systemctl status named
Поправим конфиг Kerberos:
#mv /etc/krb5.conf /etc/krb5.conf.default #nano /etc/krb5.conf [libdefaults] default_realm = LINUX.LTD dns_lookup_realm = true dns_lookup_kdc = true
#systemctl enable samba #systemctl start samba #systemctl status samba
Получим билеты:
#kinit administrator #klist Вывод Valid starting Expires Service principal 26.09.2019 16:21:55 27.09.2019 02:21:55 krbtgt/LINUX.LTD@LINUX.LTD renew until 27.09.2019 16:21:50
# samba-tool domain join linux.ltd DC -UAdministrator --realm=linux.ltd --dns-backend=BIND9_DLZ
Раскомментируем include и keytab в /etc/named.conf о котором упоминали выше.
выставим права:
#chown root:named /usr/local/samba/private #chmod 775 /usr/local/samba/private #chown root:named /usr/local/samba/private/dns.keytab #chmod 640 /usr/local/samba/private/dns.keytab # ls -ld /usr/local/samba/private/ drwxrwxr-x 7 root named 4096 сен 30 13:26 /usr/local/samba/private/ # ls -l /usr/local/samba/private/dns.keytab -rw-r----- 2 root named 717 сен 30 13:26 /usr/local/samba/private/dns.keytab #chmod 770 /usr/local/samba/bind-dns #chown root:named /usr/local/samba/bind-dns
и перезапустим все:
#systemctl restart named #systemctl restart samba
Проверим:
#/usr/local/samba/sbin/samba_dnsupdate --verbose Вывод: IPs: ['192.168.1.200'] ...................... No DNS updates needed
Ошибок быть не должно. если есть. то идем смотреть права.
Добавляем запись: (возможно, что она сама прилетит… что-то забыл я как там было, но если она там будет, то он просто скажет что уже существует.)
# samba-tool dns add 192.168.1.170 linux.ltd centdbdc A 192.168.1.200
Выводим GUID:
#ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid Вывод: # record 1 dn: CN=NTDS Settings,CN=CENTBDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=linux,DC=ltd objectGUID: e8d9d63d-3a87-4f78-bdb8-a96efede0287 - копируем # record 2 dn: CN=NTDS Settings,CN=CENTDC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=linux,DC=ltd objectGUID: 7a610a38-6195-41ad-a62d-22039db284fd # returned 2 records # 2 entries # 0 referrals
#samba-tool dns add 192.168.1.170 _msdcs.linux.ltd e8d9d63d-3a87-4f78-bdb8-a96efede0287- вставляем сюда CNAME centbdc.linux.ltd -UAdministrator
Проверка существования записи:
#host -t CNAME <color #ed1c24>e8d9d63d-3a87-4f78-bdb8-a96efede0287</color>._msdcs.linux.ltd.
Добавим форвард:
#nano /usr/local/samba/etc/smb.conf [global] .... dns forwarder=192.168.1.170 min protocol = NT1 #если в вашей сети есть машины с Win XP ....
Перезапустим:
#systemctl restart samba #samba-tool drs showrepl
#samba-tool user add testov
Пошли смотреть на первичном:
#samba-tool user list
Продолжим.
Настроим управление доступом к шарам из под Windows, за это у нас отвечает пакет ACL он уже установлен, настроим:
Добавим в smb.conf папку:
... [ShareACL]
samba-tool ldapcmp ldap://srv1c.test.local ldap://fst.test.local -UАдминистратор - сравнение
Тут могут быть и ошибки т.к. самба подхватывает не все параметры. результат:
Attributes with different values: lastLogonTimestamp servicePrincipalName userParameters * Comparing [CONFIGURATION] context... * Objects to be compared: 1679 * Result for [CONFIGURATION]: SUCCESS * Comparing [SCHEMA] context... * Objects to be compared: 1550 * Result for [SCHEMA]: SUCCESS * Comparing [DNSDOMAIN] context... * Objects to be compared: 175 * Result for [DNSDOMAIN]: SUCCESS * Comparing [DNSFOREST] context... * Objects to be compared: 20 * Result for [DNSFOREST]: SUCCESS ERROR: Compare failed: -1
samba-tool dbcheck --cross-ncs -проверка на ошибки samba-tool dbcheck --cross-ncs --fix - исправление ошибок
Если отвалилась репликация:
Службе каталогов не удается реплицировать следующий объект из исходной службы каталогов по следующему сетевому адресу из-за различий в схеме доменных служб Active Directory. Объект: CN=SQL,CN=Computers,DC=domain,DC=local Сетевой адрес: a5714808-efa7-49c2-a108-b787dd13bdd4._msdcs.domain.local Перед попыткой синхронизации следующего раздела каталога доменные службы Active Directory предпримут попытку синхронизации схемы. Раздел каталога: DC=domain,DC=local
Репликация раздела каталога приложений DC=domain,DC=local из источника a5714808-efa7-49c2-a108-b787dd13bdd4 (fst.domain.local) была прервана. Для репликации требуется непротиворечивое состояние схемы, но последняя попытка синхронизации схемы не удалось. Совершенно необходимо, чтобы репликация схемы функционировала нормально. Проверьте предыдущие сообщения об ошибках, чтобы получить дополнительные диагностические сведения. Если эта ситуация повторится, обратитесь в службу поддержки Майкрософт за помощью. Ошибка 8418: Произошла ошибка операции репликации из-за несоответствия схемы задействованных серверов..
Проверяем версию схемы:
ldbsearch -H /usr/local/samba/private/sam.ldb -b 'cn=Schema,cn=Configuration,dc=local,dc=local' -s base objectVersion # record 1 dn: CN=Schema,CN=Configuration,DC=local,DC=local objectVersion: 47
Samba - 47 версия
Windows:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters\SystemSchemaVersion - тоже 47
Исходя из информации в сообщении после которого выводилась ошибка я подумал что у меня не все в порядке с компьютером под именем SQL Сравнение между контроллерами говорило следующее:
samba-tool ldapcmp ldap://srv1c.domain.local ldap://fst.domain.local -UАдминистратор Comparing: 'CN=SQL,CN=COMPUTERS,DC=DOMAIN,DC=LOCAL' [ldap://srv1c.domain.local] 'CN=SQL,CN=COMPUTERS,DC=DOMAIN,DC=LOCAL' [ldap://fst.domain.local] Difference in attribute values: servicePrincipalName => [b'HOST/SQL', b'HOST/sql.domain.local', b'RestrictedKrbHost/SQL', b'RestrictedKrbHost/sql.domain.local', b'TERMSRV/SQL', b'TERMSRV/sql.domain.local', b'WSMAN/SQL', b'WSMAN/sql.domain.local', b'tapinego/SQL', b'tapinego/sql.domain.local'] [b'HOST/SQL', b'HOST/sql.domain.local', b'RestrictedKrbHost/SQL', b'RestrictedKrbHost/sql.domain.local', b'TERMSRV/SQL', b'TERMSRV/sql.domain.local', b'WSMAN/SQL', b'WSMAN/sql', b'WSMAN/sql.domain.local', b'tapinego/SQL', b'tapinego/sql.domain.local'] FAILED
Решил попытаться заменить атрибуты т.е. взять атрибуты с виндового сервера и заменить на линуксовом
ldifde -f SQL.ldif -d "CN=SQL,CN=Computers,DC=domain,DC=local" -s srv1c
Далее отредактировал файл SQL.ldif до следующего состояния:
dn: CN=SQL,CN=Computers,DC=domain,DC=local changetype: modify replace: servicePrincipalName servicePrincipalName: tapinego/SQL servicePrincipalName: tapinego/sql.domain.local servicePrincipalName: TERMSRV/sql.domain.local servicePrincipalName: WSMAN/sql.domain.local servicePrincipalName: RestrictedKrbHost/sql.domain.local servicePrincipalName: HOST/sql.domain.local servicePrincipalName: TERMSRV/SQL servicePrincipalName: WSMAN/SQL servicePrincipalName: RestrictedKrbHost/SQL servicePrincipalName: HOST/SQL -
Загрузим файл на второй контроллер домена который работает под Linux
ldifde -i -f SQL.ldif -s fst
И перезапустим репликацию:
repadmin /replicate srv1c fst dc=domain,dc=local repadmin /replicate fst srv1c dc=domain,dc=local
и проверим:
C:\>repadmin /replsummary Время запуска сводки по репликации: 2020-09-15 14:02:18 Начат сбор данных для сводки по репликации, подождите: ..... Исходный DSA наиб. дельта сбоев/всего %% ошибка FST 11m:56s 0 / 5 0 SRV1C 02m:23s 0 / 5 0 Конечный DSA наиб. дельта сбои/всего %% ошибка FST 02m:23s 0 / 5 0 SRV1C 11m:56s 0 / 5 0
https://wiki.samba.org/index.php/Transferring_and_Seizing_FSMO_Roles#Transferring_an_FSMO_Role - если все умерло.
https://wiki.samba.org/index.php/Main_Page - документация
Надеюсь ничего не забыл