Ввод в домен на базе Windows 2003: различия между версиями

Материал из ALT Linux Wiki
Строка 112: Строка 112:
  Security = ads (это режим domain member)
  Security = ads (это режим domain member)


Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view:
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):


  #  ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать)
  #  ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать)
Строка 135: Строка 135:
  winbind refresh tickets = yes
  winbind refresh tickets = yes


Снова подтверждаем изменения. Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).
Снова подтверждаем изменения ('''сохранить изменения'''). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).


=== Настраиваем синхронизацию времени с нашим контроллером домена ===
=== Настраиваем синхронизацию времени с нашим контроллером домена ===

Версия от 08:57, 22 октября 2012

Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux

Задача

Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.

Дано

  1. Windows Server 2003;
  2. Simply Linux (обновленный до бранча 5.1);
  3. Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена).

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

samba-swat
samba-client
samba-winbind
krb5-kinit
libkrb5
ntpdate
pam_mount

Настраиваем сетевое соединение

Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена -- DC3.OFFICE.DOMEN.LOCAL, а его ip-адрес -- 192.168.10.11. Он же является DNS- и WINS-сервером в сети.

Проверяем его доступность по ip-адресу:

ping 192.168.10.11
PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data. 
64 bytes from 192.168.10.11: icmp_seq=1 ttl=128 time=0.138 ms
64 bytes from 192.168.10.11: icmp_seq=2 ttl=128 time=0.217 ms

Проверяем его доступность по имени узла:

ping DC3 
ping: unknown host DC3 

Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить.

Проверяем его доступность по имени узла:

ping DC3
PING DC3.office.domen.local (192.168.10.11) 56(84) bytes of data.
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.137 ms
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.147 ms

В файл /etc/hosts добавляем запись о нашей машине:

127.0.0.1	localhost.localdomain localhost
127.0.0.1	wslinux.office.domen.local wslinux

По имени DC3 узел отвечает, но вот если попробовать его пинговать, указав полное имя домена DC3.OFFICE.DOMEN.LOCAL -- получим ошибку:

ping DC3.OFFICE.DOMEN.LOCAL
ping: unknown host DC3.OFFICE.DOMEN.LOCAL

И соответственно в домен машину мы ввести не сможем. Ищем файл /etc/nsswitch.conf, в нем строку с hosts:

У по умолчанию она имеет вид:

hosts:      files nisplus nis mdns4_minimal [NOTFOUND=return] dns mdns4 fallback

И приводим ее к такому виду:

hosts:      files dns nisplus nis mdns4_minimal [NOTFOUND=return] mdns4 fallback

Сохраняем изменения и проверяем:

ping DC3.OFFICE.DOMEN.LOCAL 
PING DC3.OFFICE.DOMEN.LOCAL (192.168.10.11) 56(84) bytes of data. 
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.201 ms 
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms 

Настраиваем сервисы самбы

Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута:

# chkconfig --list | grep smb 
smb            	0:off	1:off	2:off 	3:off 	4:off 	5:off 	6:off


Смотрим, на каких уровнях запускается самба, если ничего не задано -- включаем нужные уровни:

# chkconfig --levels 2345 smb on

Проверяем:

# chkconfig --list | grep smb 
smb            	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Делаем то же самое для winbind:

# chkconfig --list | grep winbind 
winbind            	0:off	1:off	2:off 	3:off 	4:off 	5:off 	6:off
# chkconfig --levels 2345 winbind on

Запускаем сервис самба:

# service smb start

Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:

# service xinetd restart

Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно)

Во вкладке GLOBALS ставим следующие значения:

Workgroup = OFFICE (указываем первую часть имени домена)
Realm = OFFICE.DOMEN.LOCAL (полное имя домена)
Netbios name = WSLINUX (netbios имя нашего компьютера)
Security = ads (это режим domain member)

Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):

#  ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать)
Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
winbind enum users = yes
winbind enum groups = yes


# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
# будут использоваться с доменом, т.е. вместо username - DOMAIN\username. 
winbind use default domain = yes
# Если вы хотите разрещить использовать командную строку для пользователей домена, то
# добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
winbind refresh tickets = yes

Снова подтверждаем изменения (сохранить изменения). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).

Настраиваем синхронизацию времени с нашим контроллером домена

Проверяем уровни запуска службы:

# chkconfig --list | grep ntpd 
ntpd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off

Задаем необходимые:

# chkconfig --levels 345 ntpd  on

Добавляем в конфигурационный файл /etc/ntpd.conf запись о сервере времени для синхронизации, все остальное комментируем:

#servers pool.ntp.org
servers 192.168.10.11

Запускаем синхронизацию времени:

# ntpdate 192.168.10.11
17 Aug 11:03:44 ntpdate[14747]: step time server 192.168.10.11 offset 82.524429 sec

И только после этого запускаем службу:

# service ntpd start

Настраиваем службу аутентификации для получения билетов Kerberos

Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = OFFICE.DOMEN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
OFFICE.DOMEN.LOCAL = {
kdc = 192.168.10.11
default_domain = office.domen.local
}

[domain_realm]
.office.domen.local = OFFICE.DOMEN.LOCAL
office.domen.local = OFFICE.DOMEN.LOCAL

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Пробуем получить билет авторизации:

# kinit admin@OFFICE.DOMEN.LOCAL 
Password for mad_max@OFFICE.DOMEN.LOCAL:

где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена (именно заглавными).

Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.

Проверяем наличие билета командой klist, вывод должен быть примерно такой:

# klist 
Ticket cache: FILE:/tmp/krb5cc_0 
Default principal: admin@OFFICE.DOMEN.LOCAL 

Valid starting     Expires            Service principal 
08/17/10 11:11:58  08/17/10 21:12:04  krbtgt/OFFICE.DOMEN.LOCAL@OFFICE.DOMEN.LOCAL 
	renew until 08/18/10 11:11:58 

Правим /etc/nsswitch.conf примерно до такого вида:

passwd: files winbind
shadow: tcb files winbind
group: files winbind
gshadow:    files

Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду:

# ldconfig

Вводим в домен

Для ввода в домен необходимо дать команду:

# net ads join -U admin
admin's password:
Using short domain name -- OFFICE
Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL'

где admin -- имя доменного админа, а admin's password — пароль доменного админа.

Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):

$ wbinfo -u 
OFFICE\гость 
OFFICE\администратор 
OFFICE\user1 
OFFICE\user2 
…

Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо привести /etc/pam.d/gdm к виду:

#%PAM-1.0
auth     include        system-auth
auth     required       pam_nologin.so
account  include        system-auth
password include        system-auth
session  include        system-auth
session  optional       pam_console.so

(Для KDE4 это файл /etc/pam.d/kde4)

А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):

#%PAM-1.0
auth            required        pam_securetty.so
auth            required        pam_nologin.so
auth            sufficient      pam_tcb.so shadow fork prefix=$2a$ count=8 nullok
auth            sufficient      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login use_first_pass
auth            include         system-auth-use_first_pass
account         sufficient      pam_tcb.so shadow fork
account         sufficient      pam_winbind.so use_first_pass
password        sufficient      pam_winbind.so
password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        sufficient      pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 nullok write_to=tcb
password        include         system-auth-use_first_pass
session         required        pam_mkhomedir.so skel=/etc/skel/ umask=0077
session         required        pam_mktemp.so
session         required        pam_limits.so
session         sufficient      pam_tcb.so
session         sufficient      pam_winbind.so

NB: Может это кому-то покажется несекьюрным, но в своей конфигурации я закомментировал первую строку(auth required pam_securetty.so) для нормального использования консоли доменным пользователем --Tora-bora 19:02, 19 октября 2012 (MSD)

И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):

#%PAM-1.0
auth            sufficient      pam_winbind.so use_first_pass
auth            sufficient      pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass
password        sufficient      pam_winbind.so use_authtok
password        sufficient      pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb

Не забываем переключить авторизацию на winbind

(Внимание! Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход - см.Примечание --Tora-bora 19:02, 19 октября 2012 (MSD))
# control system-auth winbind

С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.

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

Добавляем пользователей с административными привилегиям (sudo)

Разрешаем всем вызывать sudo:

# control sudo public

Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:

# echo '%OFFICE\\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers


Настраиваем автомонтирование сетевых ресурсов

Устанавливаем smbnetfs, samba, samba-client, fuse-smb.

Создаем /etc/fuse.conf и добавляем запись:

user_allow_other (не забываем нажимать enter после строчки)

Добавляем в /etc/modules запись:

fusermount public (не забываем нажимать enter после строчки)

Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/

Копируем /etc/samba/smb.conf в /home/%username%/.smb/

Добавляем пользователя в группу fuse.

Создаем в домашнем каталоге каталог (например) /home/%username%/net

Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:

#!/bin/sh
smbnetfs /home/%username%/net

Делаем скрипт исполняемым и помещаем в автозапуск, например в .bash_profile.

Библиография

Инструкция составлена с применением следующих ресурсов:

Примечание

На KDesktop мне не удалось настроить вход в домен AD используя

# control system-auth winbind

Взамен этого можно сделать некоторые ручные манипуляции

  • делаем ссылку system-auth указывающую на system-auth-winbind
  • делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind
  • файл /etc/pam.d/kde4 приводим к виду:
#%PAM-1.0
auth    required        pam_group.so
auth     include        system-auth-winbind
auth     required       pam_nologin.so
account  include        system-auth-winbind
password include        system-auth-winbind
session  include        system-auth-winbind
  • файл /etc/pam.d/kde4-kscreensaver приводим к виду:
#%PAM-1.0
auth     required       pam_securetty.so
auth     required       pam_nologin.so
auth     sufficient     pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth     sufficient     pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass