В данной короткой записке написано, как установить Samba 4 на операционную систему CentOS 6.7 x32. Этот пакет поможет организовать аналог доменного контроллера Windows 2003 на Linux системе.
Из записки вы узнаете, как настроить первичный контроллер домена PDC (primary domain controller). Плюс будет описано как сделать вторичный доменный контроллер BDC (Backup domain controler).
Samba 4 как доменный контроллер
Краткое содержание:
1. Настройка сетевого адаптера и имения хоста (сервера)
2. Отключаем SELINUX и iptables
3. Уставка зависимостей
4. Загрузка и установка Samba 4 из исходников
5. Создание нового домена
6. Настройка DNS
7. Настройка Kerberos
8. Установка и настройка NTP
9. Выставляем права на каталоги Samba
10. Редактируем скрипты запуска Samba и NTP
Исходные данные:
Домен - company.ru
Имя хост машины - company-pdc
ip-адрес сервера - 192.168.0.10
1. Настройка сетевого адаптера и имени хоста сервера
# vi /etc/sysconfig/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:04:5A:BD
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.10 # IP-адрес контроллера домена
NETMASK=255.255.255.0
GATEWAY=192.168.0.1 # адрес роутера - выход в Интернет
DNS1=8.8.8.8 # Google public DNS
# vi /etc/sysconfig/network
hostname=company-pdc
# service network restart
2. Отключаем SELINUX и iptables
# vi /etc/selinux/config
selinux=disabled
# setenforce 0
# chkconfig iptables off
# service iptables stop
3. Уставка зависимостей
# yum install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils perl openldap-devel -y
4. Загрузка и установка Samba 4 из исходников
# wget http://ftp.samba.org/pub/samba/samba-4.3.0.tar.gz
# tar -xzvf samba-4.3.0.tar.gz
# cd samba-4.3.0/
# ./configure --enable-selftest
# make && make install
5. Создание нового домена
# /usr/local/samba/bin/samba-tool domain provision --realm=company.ru --domain=COMPANY --adminpass 'MyPassword123' --server-role=dc --dns-backend=BIND9_DLZ
6. Настройка DNS
# rndc-confgen -a -r /dev/urandom
# vi /etc/named.conf
options {
listen-on port 53 { any; };
forwarders {8.8.4.4; }; # Google public DNS server
allow-query { any; };
tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
};
include "/usr/local/samba/private/named.conf";
# vi /etc/resolv.conf
nameserver 127.0.0.1
domain company.ru
# vi /etc/sysconfig/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:04:5A:BD
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.10 # IP-адрес контроллера домена
NETMASK=255.255.255.0
GATEWAY=192.168.0.1 # адрес роутера - выход в Интернет
#DNS1=8.8.8.8 # Удаляем Google public DNS, теперь он прописан в /etc/named.conf
# service network restart
# service named restart
7. Настройка Kerberos
# vi /etc/krb5.conf
[libdefaults]
default_realm = COMPANY.RU
dns_lookup_realm = false
dns_lookup_kdc = true
8. Установка и настройка NTP
# wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
# tar -xzvf ntp-4.2.6p5.tar.gz
# cd ntp-4.2.6p5
# ./configure --enable-ntp-signd
# make && make install
Настройка NTP
# vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
9. Выставляем права на каталоги Samba
# chown named:named /usr/local/samba/private/dns
# chown named:named /usr/local/samba/private/dns.keytab
# chmod 775 /usr/local/samba/private/dns
10. Редактируем скрипты запуска Samba и NTP
# vi /etc/init.d/samba4
#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to
# start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi
CWD=$(pwd)
prog="samba4"
start() {
# Attach irda device
echo -n $"Starting $prog: "
/usr/local/samba/sbin/samba
sleep 2
if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
echo
}
stop() {
# Stop service.
echo -n $"Shutting down $prog: "
killall samba
sleep 2
if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
echo
}
status() {
/usr/local/samba/sbin/samba --show-build
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status irattach
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
# chmod 755 /etc/init.d/samba4
# vi /etc/init.d/ntp
#! /bin/bash
#
# ntp Bring up/down ntp service
#
#chkconfig: - 99 30
#description: Bring up/down ntp
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down ntp
# Description: Bring up/down ntp
### END INIT INFO
# Source function library.
. /etc/init.d/functions
CWD=$(pwd)
NTPD=/usr/local/bin/ntpd
prog="ntp"
start() {
# Attach irda device
echo -n $"Starting $prog: "
$NTPD -p /var/run/ntpd.pid
sleep 2
if ps ax | grep -v "grep" | grep -q $NTPD ; then success $"ntp startup"; else failure $"ntp startup"; fi
echo
}
stop() {
# Stop service.
echo -n $"Shutting down $prog: "
kill -9 `cat /var/run/ntpd.pid` > /dev/null 2>&1
sleep 2
if ps ax | grep -v "grep" | grep -q $NTPD ; then failure $"ntp shutdown"; else success $"ntp shutdown"; fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Стартуем демон Samba, ntp и named:
# chmod 755 /etc/init.d/ntp
# /etc/init.d/named start
# /etc/init.d/ntp start
# /etc/init.d/samba4 start
Ставим автозагрузку службы Samba, ntp и named:
# chkconfig --levels 235 samba4 on
# chkconfig --levels 235 ntp on
# chkconfig --levels 235 named on
Проверка ответственных демонов:
# service samba4 status
# service ntp status
# service named status
Samba 4 как резервный доменный контроллер
Здесь все тоже самое что и выше.
Краткое содержание:
1. Настройка сетевого адаптера и имения хоста (сервера)
2. Отключаем SELINUX и iptables
3. Уставка зависимостей
4. Загрузка и установка Samba 4 из исходников
5. Создание нового домена
6. Настройка DNS
7. Настройка Kerberos
8. Установка и настройка NTP
9. Выставляем права на каталоги Samba
10. Редактируем скрипты запуска Samba и NTP
Исходные данные:
Доменная зона - company.ru
Главный доменный контроллер - pdc.company.ru
Резервный доменный контроллер - bdc.company.ru
ip-адрес главного контролера - 192.168.0.10
ip-адрес резервного контроллера -192.168.0.11
В моем случае главный контроллер на Windows 2003, вторичный на CentOS 6.
1. Настройка сетевого адаптера и имени хоста (сервера)
# vi /etc/sysconfig/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:04:5A:BD
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.11 # IP-адрес резервного контроллера домена
NETMASK=255.255.255.0
GATEWAY=192.168.0.1 # выход в Интернет
# vi /etc/sysconfig/network
hostname=bdc
2. Отключаем SELINUX и iptables
# vi /etc/selinux/config
selinux=disabled
# setenforce 0
# chkconfig iptables off
# service iptables stop
3. Уставка зависимостей
# yum install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils perl openldap-devel -y
4. Настройка DNS
# vi /etc/resolv.conf
nameserver 192.168.0.11
nameserver 192.168.0.10
domain company.ru
# vi /etc/named.conf
Удалить include "/usr/local/samba/private/named.conf";
5. Загрузка и установка Samba 4 из исходников
# wget http://ftp.samba.org/pub/samba/samba-4.0.6.tar.gz
# tar -xzvf samba-4.0.6.tar.gz
# cd samba-4.0.6/
# ./configure --enable-selftest
# make && make install
6. Установка и настройка NTP
# wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz
# tar -xzvf ntp-4.2.6p5.tar.gz
# cd ntp-4.2.6p5
# ./configure --enable-ntp-signd
# make && make install
Настройка NTP
# vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
7. Выставляем права на каталоги Samba
# chown named:named /usr/local/samba/private/dns
# chown named:named /usr/local/samba/private/dns.keytab
# chmod 775 /usr/local/samba/private/dns
8. Редактируем скрипты запуска Samba и NTP
# vi /etc/init.d/samba4
#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: - 90 10
# description: Activates/Deactivates all samba4 interfaces configured to
# start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi
CWD=$(pwd)
prog="samba4"
start() {
# Attach irda device
echo -n $"Starting $prog: "
/usr/local/samba/sbin/samba
sleep 2
if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
echo
}
stop() {
# Stop service.
echo -n $"Shutting down $prog: "
killall samba
sleep 2
if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
echo
}
status() {
/usr/local/samba/sbin/samba --show-build
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status irattach
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
# chmod 755 /etc/init.d/samba4
# vi /etc/init.d/ntp
#! /bin/bash
#
# ntp Bring up/down ntp service
#
#chkconfig: - 99 30
#description: Bring up/down ntp
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down ntp
# Description: Bring up/down ntp
### END INIT INFO
# Source function library.
. /etc/init.d/functions
CWD=$(pwd)
NTPD=/usr/local/bin/ntpd
prog="ntp"
start() {
# Attach irda device
echo -n $"Starting $prog: "
$NTPD -p /var/run/ntpd.pid
sleep 2
if ps ax | grep -v "grep" | grep -q $NTPD ; then success $"ntp startup"; else failure $"ntp startup"; fi
echo
}
stop() {
# Stop service.
echo -n $"Shutting down $prog: "
kill -9 `cat /var/run/ntpd.pid` > /dev/null 2>&1
sleep 2
if ps ax | grep -v "grep" | grep -q $NTPD ; then failure $"ntp shutdown"; else success $"ntp shutdown"; fi
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Запускаем Samba, ntp и named:
# chmod 755 /etc/init.d/ntp
# /etc/init.d/named start
# /etc/init.d/ntp start
# /etc/init.d/samba4 start
Ставим в автозагрузку нужные демоны:
# chkconfig --levels 235 samba4 on
# chkconfig --levels 235 ntp on
# chkconfig --levels 235 named on
9. Настройка Kerberos
# rm /usr/local/samba/etc/smb.conf
# vi /etc/krb5.conf
[libdefaults]
default_realm = COMPANY.RU
dns_lookup_realm = true
dns_lookup_kdc = true
Проверка соединения с главным контроллером:
# kinit Administrator
Password: *********
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@COMPANY.RU
Valid starting Expires Service principal
06/09/13 02:13:41 06/09/13 12:13:45 krbtgt/COMPANY.RU@COMPANY.RU
renew until 06/16/13 02:13:41
# service samba4 restart
# service named restart
# Перезапускаем первый контроллер домена Windows AD или CentOS Samba4
10. Добавляем резервный контроллер BDC к существующему PDC
# cd /usr/local/samba/bin/
# ./samba-tool domain join company.ru DC -UAdministrator --realm=company.ru
# ./samba-tool domain join company.ru DC -UAdministrator --realm=company.ru --dns-backend=BIND9_DLZ
11. Проверка требуемых DNS записей нового хоста BDC
# vi /usr/local/samba/etc/smb.conf
Добавить DNS сервер первичного DC:
[global]
dns forwarder = 192.168.0.10
# host -t A bdc.company.ru.
Если нет записи, добавляем с помощью команды:
# ./usr/local/samba/sbin/samba-tool dns add 192.168.0.11 company.ru BDC A 192.168.0.11 -UAdministrator
# ./ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid
# host -t CNAME 737506d0-bfe6-40c8-815d-08c3dff7a67f._msdcs.company.ru.
# ./samba-tool dns add 192.168.0.10 _msdcs.company.ru 737506d0-bfe6-40c8-815d-08c3dff7a67f CNAME BDC.company.ru -UAdministrator
12. Репликация
# ./samba-tool drs kcc -UAdministrator pdc.company.ru
Password for [COMPANY\Administrator]:
Consistency check on pdc.company.ru successful.
# ./samba-tool drs showrepl
13. Проверка
Для проверки создайте любую учетную запись на первичном контроллере, после отключите его.
Попытайтесь зайти в клиентский компьютер используя резервный контроллер домена, все должно работать!
ИСТОЧНИКИ:
http://opentodo.net/2013/01/samba4-as-ad-domain-controller-on-centos-6/
http://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC
http://alexwyn.com/computer-tips/centos-samba4-active-directory-domain-controller