Linux контроллер домена centos

Установка Samba4 на Linux CentOS8 с подключением к Active Directory

Для настройки работы Samba с доменом Active Directory понадобятся собственно сама Samba, а так же пакеты Kerberos и Winbind. Kerberos используется для установления защищенной связи между клиентом и сервером, а Winbind — для получения доменных пользователей и групп Linux сервером

Все команды выполняются от имени суперпользователя

Параметры сети

Пусть сеть будет содержать следующие параметры:

Имя домена office.domain.com
Краткое имя домена office
Имя сервера — контроллера домена SRV-DC
ip-адрес сервера — контроллера домена 192.168.10.15
Имя сервера на котором устанавливается samba SRV-SMB
ip-адрес сервера на котором устанавливается samba 192.168.10.20
DNS сервер и контроллер домена установлены на одном сервере

Подготовка

domain office.domain.com search office.domain.com nameserver 192.168.10.15

nmcli con down && nmcli con up

192.168.10.20 srv-smb.domain.com srv-smb

Для системы, на которой устанавливается samba, контроллер домена должен быть сервером для синхронизации времени. Для настройки нужно зайти в файл

#server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst
server 192.168.10.15 iburst prefer
systemctl restart chronyd

Установка и конфигурирование

yum install samba-winbind samba-winbind-clients samba krb5-workstation
firewall-cmd --permanent --add-service=samba firewall-cmd --reload
mkdir -p /home/share/dir1 mkdir -p /home/share/dir2
semanage fcontext -a -t samba_share_t "/home/share/dir1(/.*)?" semanage fcontext -a -t samba_share_t "/home/share/dir2(/.*)?" restorecon -R -v /home/share/dir1 restorecon -R -v /home/share/dir2 setsebool -P samba_export_all_rw 1
systemctl enable smb --now systemctl enable nmb --now
realm discover office.domain.com

Все слова, которые написаны заглавными буквами, должны быть написаны заглавными. В конфиге нужно поменять имя домена на свое

[libdefaults] default_realm = OFFICE.DOMAIN.COM dns_lookup_realm = false dns_lookup_kdc = true ticket_lifetime = 24000 krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = < host = < rcmd = host ftp = ftp >plain = < something = something-else >> fcc-mit-ticketflags = true [realms] OFFICE.DOMAIN.COM = < kdc = SRV-DC.OFFICE.DOMAIN.COM admin_server = SRV-DC.OFFICE.DOMAIN.COM default_domain = OFFICE.DOMAIN.COM >[domain_realm] .office.domain.com = OFFICE.DOMAIN.COM office.domain.com = OFFICE.DOMAIN.COM [login] krb4_convert = false krb4_get_tickets = false

Теперь нужно заполнить конфиг Samba. Настройка winbind так же осуществляется в этом конфиге. Он находится по пути

#глобальные параметры, для всех расшариваемых каталогов [global] #рабочая группа workgroup = OFFICE #имя в сетевом окружении netbios name = SRV-DC #область kerberos realm = OFFICE.DOMAIN.COM #тип безопасности - active directory service security = ads #использовать домен по умолчанию, тогда не нужно будет писать имя пользователя с указанием домена winbind use default domain = yes #разрешить winbind'у пробрасывать пользователей и группы домена на локальную систему winbind enum groups = Yes winbind enum users = Yes #автоматическое получение билетов kerberos winbind refresh tickets = yes #диапазон проброшенных winbind`ом uid и gid idmap config * : range = 1000000-20000000 idmap config * : rangesize = 1000000 idmap config * : backend = autorid #позволяет сопоставлять списки управления доступом windows и linux vfs objects = acl_xattr store dos attributes = yes #samba не может стать контроллером домена и master browser`ом domain master = no local master = no #nmbd-сервер не будет сервером wins preferred master = no os level = 0 #автоматическое обновление билета Kerberos winbind refresh tickets = yes #отключить поддержку принтеров load printers = no show add printer wizard = no disable spoolss = yes printcap name = /dev/null #опции для ускорения работы socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=65536 SO_SNDBUF=65536 #Имя каталога, отображаемое в сети (может быть любым) [dir1] #путь к расшариваемому каталогу path = /home/share/dir1 #скрывает от пользователя каталоги и файлы на которые у них нет доступа hide unreadable = yes #список тех, кому разрешен доступ valid users = "@OFFICE\пользователи домена", "@OFFICE\администраторы домена" #наследовать разрешения acl от родительского каталога inherit acls = yes #наследовать владельца от родительского каталога inherit owner = yes #наследовать права от родительского каталога inherit permissions = yes #сопоставлять разрешения linux со списками контроля доступа windows nt acl support = yes #наследовать списки доступа map acl inherit = yes #разрешение на запись, тем у кого есть доступ writable = yes #файлы и каталоги создаются с указанными разрешениями create mask = 0770 directory mask = 0770 #Имя каталога, отображаемое в сети (может быть любым) [dir2] #путь к расшариваемому каталогу path = /home/share/dir2 #скрывает от пользователя каталоги и файлы на которые у них нет доступа hide unreadable = yes #список тех, кому разрешен доступ valid users = "@OFFICE\администраторы домена" #наследовать разрешения acl от родительского каталога inherit acls = yes #наследовать владельца от родительского каталога inherit owner = yes #наследовать права от родительского каталога inherit permissions = yes #сопоставлять разрешения linux со списками контроля доступа windows nt acl support = yes #наследовать списки доступа map acl inherit = yes #разрешение на запись, тем у кого есть доступ writable = yes #файлы и каталоги создаются с указанными разрешениями create mask = 0770 directory mask = 0770

Для того, чтобы у каждого расшаренного каталога была корзина, в секцию [global] нужно добавить следующее. Если нужно, чтоб корзина была только у некоторых каталогов, то добавить строки нужно в их секции.
Вместо

vfs objects = acl_xattr recycle
#НАСТРОЙКИ КОРЗИНЫ #где хранить удаленные файлы. Они будут храниться в скрытом каталоге recycle, для каждого пользователя будет создаваться свой подкаталог с удаленными им файлами recycle:repository = .recycle/%U #список исключений каталогов. Каталоги, файлы из которых не будут попадать в корзину recylce:excludedir = tmp temp cache #список исключений файлов. Если файл содержит в названии указанную строку, он не попадает в корзину recycle:exclude = *.tmp *.temp ~$* #если имена файлов совпадают, будет добавляться номер файла recycle:versions = yes #будет ли изменена дата файла на время удаления файла recycle:touch = yes #сохранение дерева каталогов для удаленных файлов recycle:keeptree = yes #файлы и каталоги создаются с указанными разрешениями recycle:directory_mode = 0750 #считать файлы и каталоги, начинающиеся с точки скрытыми hide dot files = yes
testparm systemctl restart smb
mkdir /home/share/dir1/.recycle mkdir /home/share/dir2/.recycle
0 19 * * * root find /home/share/dir1/.recycle -mtime +4 -delete 30 19 * * * root find /home/share/dir1/.recycle -type d -empty -delete
passwd: sss files systemd winbind group: sss files systemd winbind

Теперь можно проверить возможность авторизации в домене, для этого нужно выполнить команду с существующим именем пользователя домена, имя домена нужно писать заглавными буквами

kinit username@OFFICE.DOMAIN.COM

Если не появилось ошибок, значит все правильно
Убедиться в том, что билет kerberos получен, можно командой

net ads join -U userDomain -S SRV-DC.office.domain.com

У указанного пользователя должно быть право на добавление пользователей в домен
При успешном вводе, появится сообщение

Using short domain name -- OFFICE Joined 'SRV-SMB' to dns domain 'office.domain.com'
Using short domain name -- OFFICE Joined 'SRV-SMB' to dns domain 'office.domain.com' No DNS domain configured for srv-smb. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMETER

Это значит, что не добавилась автоматически запись о системе на DNS сервер. Это можно сделать вручную, нужно зайти в настройки DNS сервера и добавить A-запись. Это не критичная ошибка, даже если она возникает хост все равно добавляется в домен.

net ads info net ads testjoin
systemctl enable winbind --now

Проверить работу winbind можно следующими командами (запускать обязательно с правами суперпользователя)
Проверка соединения с доменом, вывод должен содержать calls succeeded

Читайте также:  Linux mint как переустановить загрузчик

В linux по умолчанию максимальное количество открытых файлов составляет 1024, а в windows 16384, приведем эти значения в соответствие, для этого в файле

* - nofile 16384 root - nofile 16384

Настройка доступа к каталогам

Пусть нужно сделать так, чтоб в общий каталог и подкаталоги могли записывать данные все пользователи домена, тогда нужно изменить права следующим образом

chown -R "OFFICE\администратор":"OFFICE\пользователи домена" /home/share/dir1 chmod 770 /home/share/dir1

Пусть нужно сделать так, чтоб в корень общего каталога могли записывать данные и создавать там каталоги только некоторые пользователи, а в подкаталоги могли записывать данные все.
Тогда нужно на контроллере домена создать группу, например share_admins и включить в нее нужных пользователей (добавление в группу применится только после перезахода пользователя в учетную запись). Задать следующие права

chown -R "OFFICE\администратор":"OFFICE\пользователи домена" /home/share/dir1 chmod 750 /home/share/dir1
setfacl -m g:"OFFICE\\share_admins":rwx /home/share/dir1 setfacl -d -m u::rwx,g::rwx,o::-,g:"OFFICE\\share_admins":rwx /home/share/dir1

В этом случае, пользователи, находящиеся в группе share_admins будут иметь полные права на все каталоги.

chmod 770 /home/share/dir1/.recycle

С помощью ACL можно задавать различные права доступа к каталогам большому количеству пользователей и групп
Права доступа к каталогам можно менять и из windows, в Свойствах каталога, во вкладке Безопасность

После всех сделанных действий можно подключится к расшаренному каталогу из сети от доменного пользователя, по пути

Ссылки

Полный список параметров конфига Samba: |ссылка|
Подробно про ACL: |ссылка 1|, |ссылка 2|
Решение проблем: |ссылка|
Samba и SELinux: |ссылка|

Источник

Контроллер домена на SAMBA — CentOS 7

SAMBA достаточно давно уже может стать контроллером домена на предприятии и стабильно и нетребовательно выполнять свои задачи. Да, это уровень 2012R2 на сегодня. Но не везде и нужны серьёзные леса доменов с эксченджами и т.п. весьма дорогостоящими хотелками. Авторизовать пользователей, хранить о них информацию, играть групповыми политиками и скидывать по LDAP адресную книгу — это SAMBA умеет без проблем.

Читайте также:  Нет беспроводная сеть на linux

Установка SAMBA

Итак для начала рекомендую проработать вопрос с IP и DHCP. Сервера в начало сети и т.д. — тут уже на вкус и цвет.

Далее на свежей машинке прописываем корректное имя хоста

Если с SeLinux не знакомы близко, то пока можно отключить

Так же как и firewall. Его можно и в дальнейшем настроить.

systemctl disable firewalld systemctl stop firewalld

Ставим нужные для сборки пакеты:

yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation openldap-devel pam pam-devel
cd /tmp/ wget https://ftp.samba.org/pub/samba/samba-4.6.5.tar.gz tar -xzvf samba-4.6.5.tar.gz cd ./samba-4.6.5 ./configure –enable-selftest –with-systemd

Смотрим сколько ядер и ставим -j количество ядер+1. У меня их 8, поэтому -j9

Настройка SAMBA как контроллер домена

Скопируем нужный конфиг, сохранив старый

mv /etc/krb5.conf /etc/krb5.conf_alt cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf
/usr/local/samba/bin/samba-tool domain provision –use-rfc2307 –interactive

Запилим службу для systemd

cat > /etc/systemd/system/samba4.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

systemctl enable samba4 systemctl restart samba4

Далее проверяем аутентификацию NT:

/usr/local/samba/bin/smbclient -L localhost -U%
host -t SRV ldap.tcp.domain.local host -t SRV kerberos.udp.domain.local host -t A dc.domain.local
vim /usr/local/samba/etc/smb.conf
  1. Global parameters
    [global]
    workgroup = DOMAIN
    realm = domain.local
    netbios name = DC
    server role = active directory domain controller
    dns forwarder = 8.8.8.8 #пишем DNS
    allow dns updates = nonsecure
    nsupdate command = /usr/bin/nsupdate -g

[netlogon]
path = /usr/local/samba/var/locks/sysvol/domain.local/scripts
read only = No
write ok = Yes

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
write ok = Yes

Делаем линк на конфиг кербероса

ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf

[libdefaults]
default_realm = DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = true

Прописываем срок жизни пароля (тут не ограничено)

/usr/local/samba/bin/samba-tool domain passwordsettings set –complexity=off –min-pwd-length=6 –max-pwd-age=0

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMAIN.LOCAL

/usr/local/samba/bin/samba-tool dns zonecreate dc.domain.local 0.168.192.in-addr.arpa /usr/local/samba/bin/samba-tool dns add dc.domain.local 0.168.192.in-addr.arpa zzz PTR dc.domain.local

Источник

Оцените статью
Adblock
detector