Ввод в домен на базе Windows 2003

Материал из ALT Linux Wiki

Ввод в домен на базе 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
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

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

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

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

# service smb start

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

# service xinetd restart

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

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

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

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

#  ip-адрес контроллера домена
Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
winbind enum groups = yes
winbind enum users = 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     required    pam_env.so
#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
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
session  optional       pam_console.so 

А /etc/pam.d/system-auth-winbind к виду:

#%PAM-1.0
auth        required    pam_securetty.so
auth        required    pam_nologin.so
#auth        sufficient    pam_winbind.so
auth        sufficient    pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth        include        system-auth-use_first_pass
account        sufficient    pam_winbind.so
account        include        system-auth
password    sufficient    pam_winbind.so
password    include        system-auth-use_first_pass
# We use pam_mkhomedir to create home dirs for incoming domain users
# Note used umask, it will result in rwxr-x--x access rights
#session        required    pam_mkhomedir.so skel=/etc/skel/ umask=0026
session        required    pam_mkhomedir.so skel=/etc/skel/ umask=0077
session        include        system-auth 

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

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

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