Записки системного администратора

Ещё один блог о системном администрировании, операционных системах, СУБД, сетях, костылях-велосипедах и пр.

Samba4 в роли AD

В этой статье будет рассмотрена по шагам подготовка к использованию Samba4 в роли контроллера домена. Установка производится на сервере под управлением операционной системы CentOS7.

В официальном репозитории CentOS7 предоставляется Samba без поддержки DC, поэтому необходимо скачать Samba RPM package с сайта EnterpriseSAMBA http://enterprisesamba.com/

Sernet производит сборку самбы для нескольких дистрибутивов — Debian, Ubuntu, RHEL, CentOS, SLES, openSUSE. Я использовал Samba версии 4.2.

Установка необходимых пакетов

Для того, чтобы скачать Samba RPM package, необходимо выполнить следующее:

  1. Зарегистрироваться на https://portal.enterprisesamba.com/
  2. После регистрации необходимо войти под только что созданным пользователем.
  3. После того, как вы вошли, на сайте будут отображены username и accesskey. Эти данные необходимо запонить, они понадобятся при настройке подключения репозитория.
  4. Далее скачиваем файл sernet-samba-4.2.repo для CentOS7, помещаем его в /etc/yum.repos.d/ и добавляем наши username и accesskey.

В итоге файл будет содержать следующее:

# cat /etc/yum.repos.d/sernet-samba-4.2
[sernet-samba-4.2]
name=SerNet Samba 4.2 Packages (centos-7)
type=rpm-md
baseurl=https://sernet-samba-public:Noo1oxe4zo@download.sernet.de/packages/samba/4.2/centos/7/
gpgcheck=1
gpgkey=https://sernet-samba-public:Noo1oxe4zo@download.sernet.de/packages/samba/4.2/centos/7/repodata/repomd.xml.key
enabled=1

Далее производим установку Samba4:

# yum install sernet-samba sernet-samba-ad 

В прошлой статье я говорил, что дефолтный файрвол в CentOS 7 мне не удобен, поэтому я его удаляю:

# systemctl stop firewalld
# systemctl disable firewalld
# yum erase firewalld

Также я отключил SELinux за ненадобностью:

# setenforce 0

Чтобы после перезагрузки сервера снова не включился selinux правим файл /etc/selinix/config:

...
SELINUX=disabled
...

Доустанавливаем необходимые пакеты:

# yum install iptables-services bind bind-utils ntp krb5-workstation cups

Добавляем в автозагрузку следующие службы:

# systemctl enable sernet-samba-ad
# systemctl enable sernet-samba-smbd
# systemctl enable sernet-samba-nmbd 
# systemctl enable sernet-samba-winbindd
# systemctl enable iptables
# systemctl enable named
# systemctl enable ntpd
# systemctl enable cups

Настройка сети и iptables

В моей сети не используется IPv6, поэтому отключаем:

# sysctl -w net.ipv6.conf.all.disable_ipv6=1
# echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf

Для правильной работы Samba4 в роли AD в iptables необходимо внести следующие настройки:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 88 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 135 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 464 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 636 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 88 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 123 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 389 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 464 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -d 10.127.3.8 -m multiport --ports 1024:6000 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp -d 10.127.3.8 -m multiport --ports 1024:6000 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Где:

  • 10.127.3.8 - IP-адрес нашего контроллера домена

Запускаем iptables:

# systemctl start iptables

Создание домена example.local

Удаляем конфигурационный файл smb.conf:

# rm -f /etc/samba/smb.conf

Копируем файл krb5.conf:

# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

В состав Samba4 входит утилита samba-tool для создания и администрирования домена. Запускаем в интерактивном режиме эту утилиту:

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

и отвечаем на вопросы:

  • Realm [EXAMPLE.LOCAL]: EXAMPLE.LOCAL ←- название домена
  • Domain [EXAMPLE]: EXAMPLE ←- короткое имя домена
  • Server Role (dc, member, standalone) [dc]: dc ←- роль сервера (в данном случаем dc - контроллер домена)
  • DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ ←- используемый DNS-сервер
  • Administrator password:
  • Retype password:

Пароль администратора должен соответствовать стандартным политикам паролей в Windows, т.е. иметь как минимум одну маленькую и одну большую буквы, а так же цифры, плюс минимум 8 символов.

Поднимем уровень домена до 2008 R2:

# samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2 
Domain function level changed!
Forest function level changed!
All changes applied successfully!   

# samba-tool domain level show 
Domain and forest function level for domain 'DC=example,DC=local'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2

В результате получился файл /etc/samba/smb.conf со следующим содержимым:

# Global parameters
[global]
    workgroup = EXAMPLE
    realm = EXAMPLE.LOCAL
    netbios name = NEWAD
    server role = active directory domain controller
    server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
    idmap_ldb:use rfc2307 = yes

[netlogon]
    path = /var/lib/samba/sysvol/example.local/scripts
    read only = No

[sysvol]
    path = /var/lib/samba/sysvol
    read only = No

Нужно подправить файл /etc/default/sernet-samba. Правим строчку SAMBA_START_MODE= на следующую:

SAMBA_START_MODE="ad"

В качестве DNS-сервера у меня ипсользуется bind9. Производим его настройку:

# vi /etc/named.conf

Приводим его к следующиму виду:

options {
    directory "/var/cache/bind";
    auth-nxdomain yes;
    allow-transfer { none; };
    notify no;
    empty-zones-enable no;

    allow-query {
            10.127.3.0/24;
            127.0.0.0/8;
    };

    allow-recursion {
            10.127.3.0/24;
            127.0.0.0/8;
    };

    allow-update {
            10.127.3.0/24;
            127.0.0.0/8;
    };

tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
};        

include "/var/lib/samba/private/named.conf";

Указываем Samba4 использовать в качестве DNS-сервера bind:

# nano /var/lib/samba/private/named.confdlz 
...
"AD DNS Zone" {
# For BIND 9.8.x
# database "dlopen /usr/lib64/samba/bind9/dlz_bind9.so";

# For BIND 9.9.x
 database "dlopen /usr/lib64/samba/bind9/dlz_bind9_9.so";

# For BIND 9.10.x
# database "dlopen /usr/lib64/samba/bind9/dlz_bind9_10.so";
};

Правим настройки DNS-сервера на сетевом интерфейсе eth0:

# less /etc/sysconfig/network-scripts/ifcfg-eth0
...
DNS1=10.127.3.8
...

# ifdown eth0 && ifup eth0

Запускаем:

# systemctl start cups
# systemctl start ntpd
# systemctl start named
# systemctl start sernet-samba-ad

Проверка Samba4 AD

Проверяем работоспособность аутентификации в домене:

# kinit administrator@EXAMPLE.LOCAL
Password for administrator@EXAMPLE.LOCAL: 
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@EXAMPLE.LOCAL

Valid starting       Expires              Service principal
30.11.2015 13:14:35  30.11.2015 23:14:35  krbtgt/EXAMPLE.LOCAL@EXAMPLE.LOCAL
    renew until 01.12.2015 13:14:28
# 
...

# smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password: 
Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.3-SerNet-RedHat-18.el7]
  .                                   D        0  Fri Aug 21 09:44:46 2015
  ..                                  D        0  Fri Aug 21 09:44:54 2015

    39277836 blocks of size 1024. 37868308 blocks available

Если вывод введенных команд примерно такой же, Samba4 в роли контроллера домена настроен правильно. Теперь можно вводить в этот домен сервер на Windows Server 2008 R2, установить оснастку управления Active Directory и тут уже создавать группы безопасности, пользователей.

Настройка групповых политик паролей в Samba4

Через стандртые средства управления групповыми политиками MS Windows невозможно изменить политики паролей, и делается это только на сервере с Samba4.
Для того, чтобы увидеть текущие параметры политик, выполняем следующее:

# samba-tool domain passwordsettings show
Password informations for domain 'DC=example,DC=local'

Password complexity: off
Store plaintext passwords: off
Password history length: 0
Minimum password length: 0
Minimum password age (days): 0
Maximum password age (days): 0
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30

Для настройки этих политик используется параметр set и опция к нему. К примеру:

# samba-tool domain passwordsettings set --min-pwd-length=0

Minimum password length changed!
All changes applied successfully!

Таким образом мы изменили минимальную длину пароля на 0.

Список возможных параметров после set :

-H - Помощь
--quiet -выход
--complexity=on|off|default - Пароль должен отвечать требованиям сложности
--store-plaintext=on|off|default - Хранить пароли используя обратимое шифрование
--history-length=число - Число хранимых предыдущих паролей пользователей(Требовать неповторяемость паролей)
--min-pwd-length=число - Минимальное количество символов в пароле
--min-pwd-age=число - Минимальный срок действия пароля
--max-pwd-age=число - Максимальный срок действия пароля

Для понимания процесса настройки я использовал следующие материалы:

Комментарии (RSS)

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

Комментарий ожидает проверки

HTML Preview:

Коротко о себе:

Привет! Меня зовут Вадим. В этом блоге я пишу об интересующих меня вещах, о проблемах, с которыми сталкиваюсь во время работы, и о путях их решения.

Связаться со мной можно, написав письмо на адрес vadim@adminbook.click