Инструменты пользователя

Инструменты сайта


Боковая панель

Навигация

unix
notes
firmware
windows

Внешние ссылки

Внешняя ссылка

samba_ad

Установка samba4 в роли контроллера домена на CentOS 7

ini
#yum update -y
#yum upgrade
#systemctl stop NetworkManager
#systemctl disable NetworkManager
#systemctl stop firewalld
#systemctl disable firewalld

Отключим систему принудительного контроля доступа:

ini
#vi /etc/selinux/config

SELINUX=disabled

Перезапустим:

#reboot

Проверим:

ini
#sestatus

Вывод: 
SELinux status:                 disabled

Настроим сеть:

ini
#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
ini
#vi /etc/resolv.conf

nameserver 8.8.8.8

Установим имя:

#hostnamectl set-hostname CENTDC

Пропишем хосты:

#vi /etc/hosts

192.168.1.170 centdc.linux.ltd CENTDC

Перезапустим сеть:

ini
#systemctl restart network

Приступим к установке пакетов:

ini
#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, скрипт установит недостающие пакеты, которые по какой-то причине были не установлены, запустим его:

ini
#cd /home/admin
#nano install.sh
#chmod +x install.sh
#./install.sh

Приступим к установке (к configure и make можно добавить параметр -j и указать кол-во ядер, что бы ускорить процесс сборки пример: -j4):

ini
#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

Настроим Bind:

ini
#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"; - раскомментируем чуть позже.

Включим автозапуск службы, перезапустим и посмотрим статус:

ini
#systemctl enable named
#systemctl restart named
#systemctl status named

Переименуем конфиг Kerberos:

ini
#mv /etc/krb5.conf /etc/krb5.conf.default

Начнем установку КД:

ini
#samba-tool domain provision --use-rfc2307 --interactive
....

DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:  BIND9_DLZ

Включим автозапуск и запустим:

ini
#systemctl enable samba
#systemctl start samba

Раскомментируем include и keytab в /etc/named.conf о котором упоминали выше.

Скопируем конфиг Kerberos:

ini
# 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

Перезапустим все:

ini
#systemctl restart network
#systemctl restart named
#systemctl restart samba

Получим билет Kerberos и посмотрим что получили:

ini
# kinit administrator
# klist

Проверим возможность динамического обновления записей DNS:

ini
# /usr/local/samba/sbin/samba_dnsupdate --verbose
IPs: ['192.168.1.170']
......................
No DNS updates needed

Создадим прямую и обратную зону:

ini
# 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 добавим:

ini
#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.

Пропишем хосты:

ini
#vi /etc/hosts
 
192.168.1.200 centbdc.linux.ltd CENTBDC

Перезапустим сеть:

ini
#systemctl restart network

Установим пакеты так же как и в 1-м случае:

ini
#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, запустим:

ini
#cd /home/admin
#nano install.sh
#chmod +x install.sh
#./install.sh

Приступим к установке:

ini
#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:

ini
#nano /etc/resolv.conf 

# Generated by NetworkManager
search linux.ltd
nameserver 192.168.1.200 - вторичный
nameserver 192.168.1.170 - первичный

Настроим Bind:

ini
#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"; - раскомментируем чуть позже.

Включим автозапуск службы, перезапустим и посмотрим статус:

ini
#systemctl enable named
#systemctl restart named
#systemctl status named

Поправим конфиг Kerberos:

ini
#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

Запуск samba:

ini
#systemctl enable samba
#systemctl start samba
#systemctl status samba

Получим билеты:

ini
#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

Входим в домен:

ini
# samba-tool domain join linux.ltd DC -UAdministrator --realm=linux.ltd --dns-backend=BIND9_DLZ

Раскомментируем include и keytab в /etc/named.conf о котором упоминали выше.

выставим права:

ini
#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

и перезапустим все:

ini
#systemctl restart named
#systemctl restart samba

Проверим:

ini
#/usr/local/samba/sbin/samba_dnsupdate --verbose

Вывод:
IPs: ['192.168.1.200']
......................
No DNS updates needed

Ошибок быть не должно. если есть. то идем смотреть права.

Добавляем запись: (возможно, что она сама прилетит… что-то забыл я как там было, но если она там будет, то он просто скажет что уже существует.)

ini
# samba-tool dns add 192.168.1.170 linux.ltd centdbdc A 192.168.1.200

Выводим GUID:

ini
#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
ini
#samba-tool dns add 192.168.1.170 _msdcs.linux.ltd e8d9d63d-3a87-4f78-bdb8-a96efede0287- вставляем сюда CNAME centbdc.linux.ltd -UAdministrator

Проверка существования записи:

ini
#host -t CNAME <color #ed1c24>e8d9d63d-3a87-4f78-bdb8-a96efede0287</color>._msdcs.linux.ltd.

Добавим форвард:

ini
#nano /usr/local/samba/etc/smb.conf 

[global]
....
dns forwarder=192.168.1.170
min protocol = NT1 #если в вашей сети есть машины с Win XP
....

Перезапустим:

ini
#systemctl restart samba
#samba-tool drs showrepl

Пробуем добавить пользователя:

ini
#samba-tool user add testov

Пошли смотреть на первичном:

ini
#samba-tool user list

Продолжим.

Настроим управление доступом к шарам из под Windows, за это у нас отвечает пакет ACL он уже установлен, настроим:

Добавим в smb.conf папку:

ini
...
[ShareACL]
       

https://wiki.samba.org/index.php/Transferring_and_Seizing_FSMO_Roles#Transferring_an_FSMO_Role - если все умерло.
https://wiki.samba.org/index.php/Main_Page - документация

Надеюсь ничего не забыл :-)

samba_ad.txt · Последние изменения: 2019/10/15 16:36 — sector

Яндекс.Метрика