bender

Установка контроллера домена на Samba 4.1 + CentOS 6.5

Итак, поехали!
Т.к. в предыдущем ролике я рассматривал установку CentOS 7. Давайте быстро пробежимся по установке CentOS 6.5. Всё как обычно, сначала создаём машинку и конфигурируем её под наши нужды. Т.е. это:

Тип системы: RedHat 32 bit
8GB - HDD, с фиксированным размером
512 МБ ОЗУ
Сетевой адаптер - виртуальная сеть
Звуковую карту можно выключить.

Машину создали - приступим к установке. Ставить ОС мы будем в неграфическом режиме. Тут стоит сказать, что в этом режиме отсутствуют некоторые опции. К примеру, невозможно отредактировать разделы HDD, но в нашем, конкретном случае это и не нужно.  Итак, для установки выбираем пункт:

“Установить CentOS с базовым графическим драйвером”

 

 

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

Выбираем нужный нам язык:

Выбираем RE-INITIALIZE-ALL:

Теперь выбираем нужный часовой пояс:

Вводим пароль root’а:

Указываем системе использовать весь жёсткий диск:

Подтверждаем разбиение HDD:

С установкой, собственно всё. Ждём окончания ребутимся, логинимся, и начинаем работать.

Как обычно, сначала настроим сеть. Для этого заходим в файл конфигурации интерфейса и правим его должным образом:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

 Содержимое файла:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.10.2
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
DNS1=8.8.8.8
IPV6INIT=no
USERCTL=no

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

service network restart

 Проверим пинг – отлично.

 Теперь давайте обновим систему:

yum update –y

 Теперь, мне нужно подключить репозитории EPEL и RPMForge. Для этого я воспользуюсь утилитой elinks – это веб-браузер работающий в текстовом режиме. Давайте установим её:

yum install elinks

 Теперь зайдём на сайт centos.name и скачаем rpm с резпозиториями. Нас интересуют EPEL и RPM Forge:

elinks centos.name

 Заходим в "Помощь->...информация о репозиториях->выбираем нужные нам репы", сохраняём нужный нам пакет клавишей "D" на клавиатуре.

Теперь установим rpm которые мы скачали

yum localinstall *.rpm

 Самое время получить и настроить репозиторий SERNET. Для того, чтобы это сделать нужно зайти на сайт https://portal.enterprisesamba.com/ и зарегистрироваться там. После этого вы получите свой логин и пароль для скачки реп. После того, как это сделано, создадим соответсвующий файл и внесём туда полученные от SERNET логин и пароль:

vim /etc/yum.repos.d/sernet-samba-4.1.repo

 Содержимое файла:

[sernet-samba-4.1]
name=SerNet Samba 4.1 Packages (centos-6)
type=rpm-md
baseurl=https://USERNAME:PASSWORD@download.sernet.de/packages/samba/4.1/centos/6/
gpgcheck=1
gpgkey=https:// USERNAME:PASSWORD @download.sernet.de/packages/samba/4.1/centos/6/repodata/repomd.xml.key
enabled=1

 Теперь переходим к установке.

Сейчас я установлю минимальный пакет программ, который обычно ставлю на все машинки. Конечно, далеко не все из них мне пригодятся, но…

yum install vim mc nano wget system-config-network-tui system-config-firewall-tui screen elinks acpid ntp ntpdate crontabs bash-completion htop –y

 Теперь поставим всё,  что нам понадобится для работы  SAMBA:

yum install sernet-samba-ad krb5-workstation

Сконфигурируем автозагрузку служб:

chkconfig sernet-samba-ad on
chkconfig sernet-samba-nmbd off
chkconfig sernet-samba-smbd off
chkconfig sernet-samba-winbindd off

Задаём имя хоста:

hostname dc.traning.kz
vim /etc/sysconfig/network

 Содержимое файла:

HOSTNAME=dc.traning.kz
GATEWAY=192.168.10.1

 Выключаем SELINUX:

vim /etc/selinux/config

 Содержимое файла:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Перезагрузимся.

Запустим мастер установки SAMBA с начальными параметрами. В принципе, можно указать мастеру все параметры, и установить все без диалога, но, давайте запустим посмотрим, как это выглядит:

samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2 --interactive --use-ntvfs

В принципе, если Вы всё сделали правильно, то большинство параметров мастер заполнить за Вас. Первое что с нас спрашивают – имя REALM’а, его, кстати, нужно вводить заглавными буквами, но, как видим в квадратных скобках оно и так указано верно, по этому просто жмём enter.

Realm [TRANING.KZ] – вводим имя нашего REALM’а. Пишется заглавными буквами
DOMAIN [traning]– имя домена, его можем писать маленькими, и оно у нас уже прописано, жмём Enter
Server Role [dc] = роль нашего сервера, ставим dc, по умолчанию уже стоит dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) – выбираем, какой DNS сервер будем использовать. Мы будем использовать встроенный - SAMBA_INTERNAL

Редактируем правила файровола iptables. Для нормальной работы сервера, нам нужно открыть кучу портов, для разных служб, таких, как DNS, и т.п.

vi /etc/sysconfig/iptables

Содержимое файла:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 464 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 464 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 389 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 135 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 88 -j ACCEPT
        -A INPUT -m state --state NEW -m udp -p udp --dport 88 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 1024 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 3268 -j ACCEPT
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 3269 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

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

service iptables restart

Настроим Kerberos:

mv /etc/krb5.conf /etc/krb5.conf.old
cp /var/lib/samba/private/krb5.conf /etc/

Ну, что? Нам осталась самая малость! Укажем САМБЕ, чтобы она запускалась в режиме АД.

vi /etc/default/sernet-samba

Содержимое файла:

# SAMBA_START_MODE defines how Samba should be started. Valid options are one of
#   "none"    to not enable it at all,
#   "classic" to use the classic smbd/nmbd/winbind daemons
#   "ad"      to use the Active Directory server (which starts the smbd on its own)
# (Be aware that you also need to enable the services/init scripts that
# automatically start up the desired daemons.)
SAMBA_START_MODE="ad"
# SAMBA_RESTART_ON_UPDATE defines if the the services should be restarted when
# the RPMs are updated. Setting this to "yes" effectively enables the
# functionality of the try-restart parameter of the init scripts.
SAMBA_RESTART_ON_UPDATE="no"
# NMBD_EXTRA_OPTS may contain extra options that are passed as additional
# arguments to the nmbd daemon
NMBD_EXTRA_OPTS=""
# WINBINDD_EXTRA_OPTS may contain extra options that are passed as additional
# arguments to the winbindd daemon
WINBINDD_EXTRA_OPTS=""
# SMBD_EXTRA_OPTS may contain extra options that are passed as additional
# arguments to the smbd daemon
SMBD_EXTRA_OPTS=""
# SAMBA_EXTRA_OPTS may contain extra options that are passed as additional
# arguments to the samba daemon
SAMBA_EXTRA_OPTS=""
# SAMBA_IGNORE_NSUPDATE_G defines whether the samba daemon should be started
# when 'nsupdate -g' is not available. Setting this to "yes" would mean that
# samba will be started even without 'nsupdate -g'. This will lead to severe
# problems without a proper workaround!
SAMBA_IGNORE_NSUPDATE_G="no"

Я на всякий случай ещё внесу изменения через system-config-network-tui.

Поправим файл resolv.conf

vim /etc/resolv.conf

 Содержимое файла:

domain traning.kz
nameserver 192.168.10.2

 Стартуем САМБУ:

service sernet-samba-ad start

 Ошибок нет - продолжим.

smbclient -L localhost -U%

 - флаг выводит на экран список сервисов, доступных на сервере, заданном параметром host; при использовании этого флага нет необходимости указывать ресурс.

Примерный "выхлоп":

Domain=[TRANING] OS=[Unix] Server=[Samba 4.1.11-SerNet-RedHat-9.el6]
        Sharename               Type      Comment
        ---------                     ----      -------
        netlogon                   Disk
        sysvol                     Disk
        IPC$                        IPC       IPC Service
Domain=[TRANING] OS=[Unix] Server=[Samba 4.1.11-SerNet-RedHat-9.el6]
        Server               Comment
        ---------            -------
        Workgroup            Master
        ---------            -------

 

smbclient //localhost/netlogon -UAdministrator -c 'ls'

 - логинимся под нашим пользователем.

Выхлоп:

smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[TRANING] OS=[Unix] Server=[Samba 4.1.11-SerNet-RedHat-9.el6]
  .                                   D        0  Tue Sep  2 11:52:37 2014
  ..                                  D        0  Tue Sep  2 11:52:46 2014
                54111 blocks of size 131072. 40182 blocks available

 

Получим керберос-билет для нашего админа:

kinit Administrator@TRANING.KZ

Выхлоп:

Warning: Your password will expire in 28 days on Tue Oct 14 11:52:44 2014

 Посмотрим его:

klist

 Выхлоп:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@TRANING.KZ
Valid starting     Expires            Service principal
09/15/14 16:26:26  09/16/14 02:26:26  krbtgt/TRANING.KZ@TRANING.KZ
        renew until 09/16/14 16:26:22

 Теперь давайте добавим зону traning.kz в наш сервер:

samba-tool dns zonecreate traning.kz 10.168.192.in-addr.arpa -UAdministrator%'Traning.kz!'

Создаём PTR запись для сервера dc.traning.kz:

samba-tool dns add dc.traning.kz 10.168.192.in-addr.arpa 1 PTR dc.traning.kz -UAdministrator%'Traning.kz!'

 Теперь создадим А запись для нашего сервера gateway:

samba-tool dns add 192.168.10.2 traning.kz gateway A 192.168.10.1 -UAdministrator%'Traning.kz!'

 Давайте проверим:

ping gateway

 После создания зоны Самбу необходимо перезапустить:

service sernet-samba-ad restart

Всё! Конфигурация этого сервера завершена. Осталось загнать в домен тестовую виртуальную машинку для проверки.