: | : |
‹ | › | |||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
2017-12-01 15:16:55 11418 0
Настройка файлового севрера Samba с авторизацией на сервере Freeipa
Samba - самый популярный выбор для файлового сервера в смешанной среде Linux и Windows машин. Теперь благодаря пакету SSD v1.12.2+ стало легче интегрировать Samba с доменом Freeipa, для использования таких удобных инструментов как SSO и поддержка пользователей Active Directory в доменах с доверительными отношениями.
Аутентификация файлового сервера Samba в домене Freeipa работает только через протокол Kerberos, это означает что доступ к файловому серверу могут получить Windows клиенты домена Active Directory, только если этот домен имеет доверительные отношения с доменом Freeipa
Для настройки Samba будем использовать сервер CentOs7 с доменным именем test-centos.test.un. В качестве сервера Freeipa используется сервер CeotOs7 c именем freeipa.test.un, на котором уже развернут IPA сервер
Настройка сервера Freeipa
Имя хоста должно совпадать с FQDN
hostname
freeipa.test.un
Если нет, то изменим его в файле /etc/hostname
На сервере Freeipa устанавливаем пакет
sudo yum install ipa-server-trust-ad
Запускаем утилиту
sudo ipa-adtrust-install
This program will setup components needed to establish trust to AD domains for the IPA Server. This includes: * Configure Samba * Add trust related objects to IPA LDAP server To accept the default shown in brackets, press the Enter key. Configuring cross-realm trusts for IPA server requires password for user "admin". This user is a regular system account used for IPA server administration. admin password: WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing samba configuration. Do you wish to continue? [no]: yes Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes Enter the NetBIOS name for the IPA domain. Only up to 15 uppercase ASCII letters, digits and dashes are allowed. Example: EXAMPLE. NetBIOS domain name [TEST]: WARNING: 3 existing users or groups do not have a SID identifier assigned. Installer can run a task to have ipa-sidgen Directory Server plugin generate the SID identifier for all these users. Please note, the in case of a high number of users and groups, the operation might lead to high replication traffic and performance degradation. Refer to ipa-adtrust-install(1) man page for details. Do you want to run the ipa-sidgen task? [no]: yes The following operations may take some minutes to complete. Please wait until the prompt is returned. Configuring CIFS [1/24]: validate server hostname [2/24]: stopping smbd [3/24]: creating samba domain object [4/24]: creating samba config registry [5/24]: writing samba config file [6/24]: adding cifs Kerberos principal [7/24]: adding cifs and host Kerberos principals to the adtrust agents group [8/24]: check for cifs services defined on other replicas [9/24]: adding cifs principal to S4U2Proxy targets [10/24]: adding admin(group) SIDs [11/24]: adding RID bases [12/24]: updating Kerberos config "dns_lookup_kdc" already set to "true", nothing to do. [13/24]: activating CLDAP plugin [14/24]: activating sidgen task [15/24]: configuring smbd to start on boot [16/24]: adding special DNS service records [17/24]: enabling trusted domains support for older clients via Schema Compatibility plugin [18/24]: restarting Directory Server to take MS PAC and LDAP plugins changes into account [19/24]: adding fallback group [20/24]: adding Default Trust View [21/24]: setting SELinux booleans [22/24]: starting CIFS services [23/24]: adding SIDs to existing users and groups This step may take considerable amount of time, please wait.. [24/24]: restarting smbd Done configuring CIFS. ======================================================================= Setup complete You must make sure these network ports are open: TCP Ports: * 135: epmap * 138: netbios-dgm * 139: netbios-ssn * 445: microsoft-ds * 1024..1300: epmap listener range * 3268: msft-gc UDP Ports: * 138: netbios-dgm * 139: netbios-ssn * 389: (C)LDAP * 445: microsoft-ds See the ipa-adtrust-install(1) man page for more details =======================================================================
Переходим на файловый сервер Samba
В файле /etc/hostname указываем полное FQDN имя
cat /etc/hostname
test-centos.test.un
Устанавливаем необходимые зависимости
sudo yum install ipa-client sssd-libwbclient samba samba-client
Добавляем сервер в область Freeipa
sudo ipa-client-install --mkhomedir
Discovery was successful! Client hostname: test-centos.test.un Realm: TEST.UN DNS Domain: test.un IPA Server: freeipa.test.un BaseDN: dc=test,dc=un Continue to configure the system with these values? [no]: yes Synchronizing time with KDC... Attempting to sync time using ntpd. Will timeout after 15 seconds ###Вводим имя пользователя под которым будем добавлять компьютер User authorized to enroll computers: admin ## Вводим пароль Password for admin@TEST.UN: Successfully retrieved CA cert Subject: CN=Certificate Authority,O=TEST.UN Issuer: CN=Certificate Authority,O=TEST.UN Valid From: 2017-11-26 12:26:10 Valid Until: 2037-11-26 12:26:10 Enrolled in IPA realm TEST.UN Created /etc/ipa/default.conf New SSSD config will be created Configured sudoers in /etc/nsswitch.conf Configured /etc/sssd/sssd.conf Configured /etc/krb5.conf for IPA realm TEST.UN trying https://freeipa.test.un/ipa/json [try 1]: Forwarding "schema" to json server "https://freeipa.test.un/ipa/json" trying https://freeipa.test.un/ipa/session/json [try 1]: Forwarding "ping" to json server "https://freeipa.test.un/ipa/session/json" [try 1]: Forwarding "ca_is_enabled" to json server "https://freeipa.test.un/ipa/session/json" Systemwide CA database updated. Hostname (test-centos.test.un) does not have A/AAAA record. Missing reverse record(s) for address(es): 172.20.1.162. Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub [try 1]: Forwarding "host_mod" to json server "https://freeipa.test.un/ipa/session/json" SSSD enabled Configured /etc/openldap/ldap.conf NTP enabled Configured /etc/ssh/ssh_config Configured /etc/ssh/sshd_config Configuring test.un as NIS domain. Client configuration complete. The ipa-client-install command was successful
Сервер успешно добавлен в домен Freeipa
На сервере Freeipa создаем cifs принципал
sudo ipa service-add cifs/test-centos
------------------------------------------- Добавлена служба «cifs/test-centos@TEST.UN» ------------------------------------------- Principal name: cifs/test-centos@TEST.UN Principal alias: cifs/test-centos@TEST.UN Managed by: test-centos.test.un
Переходим на сервер Samba и установим keytab файл
Получаем билет от сервера kerberos:
kinit admin
Password for admin@TEST.UN:
Проверяем получение билета
klist
Ticket cache: KEYRING:persistent:0:0 Default principal: admin@TEST.UN Valid starting Expires Service principal 28.11.2017 15:46:22 29.11.2017 15:46:18 ldap/freeipa.test.un@TEST.UN 28.11.2017 15:46:20 29.11.2017 15:46:18 krbtgt/TEST.UN@TEST.UN
sudo ipa-getkeytab -s freeipa.test.un \
-p cifs/test-centos -k /etc/samba/samba.keytab
Keytab successfully retrieved and stored in: /etc/samba/samba.keytab
Произведем настройку Samba для работы с сервером Freeipa
cat /etc/samba/smb.conf
[global] ## NetBIOS имя домена workgroup = TEST # Область домена realm = TEST.UN # режим безопасности security = ads # тип и расположиние keytab файла dedicated keytab file = FILE:/etc/samba/samba.keytab # метод kerberos kerberos method = dedicated keytab # расположение лог файла log file = /var/log/samba/log.%m # Обие директории [share] # Комментарий к шаре comment = Testing share # Расположение общей директории path = /share # Возможность записи в директорию writeable = yes # Отображение в сетевом поиске browseable = yes # Доменной группе пользователей admins разрешен доступ к общей папке valid users = @samba_users # Разрешение записи для доменно группы пользователей admins write list = @samba_users
Проверяем отсутствие ошибок в файле конфигурации Samba
testparm
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[share]" Loaded services file OK. idmap range not specified for domain "*" ERROR: Invalid idmap range for domain *! Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
Перезапускаем демона samba
sudo systemctl restart smb
Проверяем доступ к шаре (kerberos аутентификация)/p>
smbclient -k //test-centos/share
OS=[Windows 6.1] Server=[Samba 4.6.2] smb: \> ls . D 0 Tue Nov 28 15:55:42 2017 .. DR 0 Tue Nov 28 15:52:15 2017 test.txt N 0 Tue Nov 28 15:55:42 2017 18307072 blocks of size 1024. 17204884 blocks available smb: \>
Подключение к шаре с указанием учетной записи пользователя
smbclient -U admin //test-centos/share
Enter TEST\admin"s password: OS=[Windows 6.1] Server=[Samba 4.6.2] smb: \>
Подключение для Windows клиентов в домене Freeipa
\\test-centos\share
При подключении обязательно необходимо использовать имя сервера, не ip-адрес
Подключение может осуществить любой клиент в домене или в домене с которым настроены доверительные отношения.
Введите ответ:
+
=