Счетчик

Поисковый анализ сайта
яндекс.ћетрика
Cервер и сайт запущен 2011.02.01 на Debian

Всем доброго дня!
Сегодня я расскажу как подключить дебиан к домену windows 2003 сервера. И так нам понадобится.... предустановленная система debian без иксов ибо не нужны они.
Далее ставим пакеты

apt-get install krb5-user samba winbind

Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.RU, доменконтроллером которого является сервер trmsrv.domain.ru с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер1), он же DNS - trmsrv3.domain.ru с IP 192.168.0.2. Ваш же компьютер будет называться filesrv.

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

Необходимо изменить содержимое файла /etc/resolv.conf на примерно такое: 

domain domain.ru
search domain.ru
nameserver 192.168.0.1
nameserver 192.168.0.2

Рестартуем сетевые интерфейсы

/etc/init.d/networking restart

Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname
filesrv
Кроме того необходимо отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP: 
Имена этого компьютера

127.0.0.1   localhost
127.0.1.1   filesrv.domain.ru   filesrv

делаем ребут серверу.

Настройка синхронизации времени
Даме такую команду, он должен подхватить его с DC 

net time set dc

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным: 
ntpdate ntp.mobatime.ru

Настройка авторизации через Kerberos
Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf. В общем случае он выглядит так: 

[libdefaults]
default_realm = DOMAIN.RU
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]
DOMAIN.RU = {
kdc = trmsrv
kdc = trmsrv3
admin_server = trmsrv
default_domain = DOMAIN.RU
}

[domain_realm]
.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU
[login]
krb4_convert = false
krb4_get_tickets = false
Красным я выделил то что должны изменить на свои параметры.

Обратите особое внимание на регистр написания имени домена - везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего не заработать. 

kinit Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. - указываем админа AD
Имя домена необходимо писать заглавными буквами! 
вводим пароль.
Если вы не получили никаких ошибок - значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже. 

Убедиться в том, что билет получен, можно выполнив команду 
klist

Удалить все билеты (они вам вообще говоря не нужны) можно командой 
kdestroy


Распространённые ошибки kinit
kinit(v5): Clock skew too great while getting initial credentialsЭто значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше). 

kinit(v5): Preauthentication failed while getting initial credentialsВы ввели неверный пароль. 

kinit(v5): KDC reply did not match expectations while getting initial credentials
Самая странная ошибка. Убедитесь, что имя realm в krb5.conf, а так же домен в команде kinit введены большими буквами: 

DOMAIN.RU = {
# ...kinit Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
kinit(v5): Client not found in Kerberos database while getting initial credentials
Указанного пользователя не существует в домене. 

Настройка Samba и вход в домен
Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf. На данном этапе вас должны интересовать только некоторые опции из секции [global]. Ниже - пример части файла конфигурации Samba с комментариями по поводу значения важных параметров: 

[global]
   # Эти две опции нужно писать именно в заглавном регистре, причём workgroup без
   # последней секции после точки, а realm - полное имя домена 
[code]   workgroup = DOMAIN
   realm = DOMAIN.RU[/code]

   # Эти две опции отвечают как раз за авторизацию через AD
[code]   security = ADS
   encrypt passwords = true
   # Просто важные 
   dns proxy = no 
   socket options = TCP_NODELAY[/code]

   # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,
   # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде
[code]   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no[/code]

   # Отключить поддержку принтеров
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes

После того, как вы отредактируете smb.conf выполните команду 

testparm
Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём: 

# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
По нажатию энтер у вас выведится список глобальных настроек

Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду: 
net ads join -U administrator -D DOMAIN
И в случае успеха вы увидите что-то похожее на: 

# net ads join -U administrator -D DOMAIN
Enter username's password:
Using short domain name -- DOMAIN
Joined 'FILESRV' to realm 'domain.ru'

net ads testjoin

#net ads testjoin
Join is OK

Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие3): 

DNS update failed!
(читайте в сторону DNS)

Не в коем случае не рестартуем сервер, иначе будет печальный опыт в восстановлении системы, у Вас не будет прав доступа к системе вы не сможите войти под root или под созданной учетной записью. т.к. не настроены некоторые параметры.

apt-get install smbclient


Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation: 

smbclient -k -L workstation

Настройка Winbind
Подошли почти к финалу

Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind - специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu. 

Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы. 

Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки: 
# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
# Диапазоны идентификаторов для виртуальных пользователей и групп.

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

Теперь перезапустим сервер или рестартонем деманы

sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start


После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой: 

# wbinfo -t


checking the trust secret for domain DCN via RPC calls succeededА так же, что Winbind увидел пользователей и группы из AD командами4): 

# wbinfo -u
# wbinfo -g


Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN\, либо без него - в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf. 

Итак, Winbind работает, однако в систему он ещё не интегрирован. 

Добавление Winbind в качестве источника пользователей и групп
Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах. 

Для этого измените две строчки в файле /etc/nsswitch.conf: 

passwd:         compat
group:          compat


добавив к ним в конец winbind: 

passwd:         compat winbind
group:          compat winbind


Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив 

getent passwd
getent group


Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп. 

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

Авторизация в Debian через пользователей домена
Последовательность строк в файлах имеет значение! 

/etc/pam.d/common-auth 

auth        required      pam_env.so
auth        sufficient    pam_unix.so likeauth nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth        required      pam_deny.so

/etc/pam.d/common-account 

account     sufficient    pam_winbind.so
account     required      pam_unix.so/etc/pam.d/common-session
session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     optional      pam_ck_connector.so nox11
session     required      pam_limits.so
session     required      pam_env.so
session     required      pam_unix.so

/etc/pam.d/common-password 

password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    sufficient    pam_winbind.so
password    required      pam_deny.so

Офф-лайн авторизация нам нужна для того.... вдруг вам надо поработать дома а AD не позволяет этого, ставим кэширующие учтеные записи.

Для этого необходимо сделать следующее. Добавьте в секцию [global] файла /etc/samba/smb.conf следующие строки: 

[global]
   # Возможность оффлайн-авторизации при недоступности доменконтроллера
   winbind offline logon = yes
   # Период кэширования учетных записей, по умолчанию равен 300 секунд
   winbind cache time = 300


Далее в шаре можно делай все что угодно, только будте осторожей.

Выкладываю свои рабочие конфиги 

samba.zip

Добавить комментарий


Защитный код
Обновить