Admin/LinuxADAuth
Linux клиент в домене Windows
Подробнее, зачем это нужно и как это работает.
Смысл в том чтобы сделать единую базу для авторизации и не спрашивать имя пользователя и пароль много раз.
Единообразность реализуется с помощью сервера AD Microsoft на базе Windows (или LDAP сервера на базе Unix), а SSO (Single-Sign-On) при помощи билетов Керберос и приложений использующих этот тип авторизации.
Билет, при правильной настройке модуля PAM, выдается автоматически. После этого он хранится локально определенной время, указанное в конфигурации клиентской части, с помощью параметра ticket_lifetime. Билет создается каждый раз при авторизации и удаляется после завершения сеанса.
Данная инструкция опробована на Windows 2003 + AD и различных Linux клиентах (Fedora Core 6, AltLinux3)
1) Необходимые пакеты:
samba-common-3.0.24-5
samba-client-3.0.24-5
pam_krb5-2.2.11-1
krb5-auth-dialog-0.7-1
krb5-libs-1.5-7
krb5-workstation-1.5-7
версии не так важны. Самба должна быть собрана (если из src) c опцией активирующей WINBIND и PAM
2) Настройка 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.ETERSOFT.RU dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h [realms] OFFICE.ETERSOFT.RU = { kdc = WIN2K3.OFFICE.ETERSOFT.RU admin_server = WIN2K3.OFFICE.ETERSOFT.RU default_domain = OFFICE.ETERSOFT.RU } [domain_realm] .OFFICE.ETERSOFT.RU = OFFICE.ETERSOFT.RU OFFICE.ETERSOFT.RU = OFFICE.ETERSOFT.RU [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false
ticket_lifetime и renew_lifetime в секундах.
kdc -- сервер авторизации Kerberos
3) Настройка Samba (/etc/samba/smb.conf)
[global] workgroup = OFFICE server string = auto netbios name = BORROMAN security = ADS password server = WIN2K3.OFFICE.ETERSOFT.RU realm = OFFICE.ETERSOFT.RU template shell = /bin/bash template homedir = /home/%D/%U idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind use default domain = yes encrypt passwords = yes dns proxy = No winbind cache time = 10 winbind separator = + socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
realm -- должен совпадать с указанным в krb5.conf
template shell -- shell по умолчанию
template homedir -- домашняя директория для пользователей домена, где %D -- имя домена, а %U -- имя пользователя
idmap uid и idmap gid -- диапозон UID и GID присваиваемый доменным пользователям
winbind cache time -- время между запросами по обновлению данных о пользователях и группах домена, в секундах
winbind separator -- разделитель между именем домена и именем пользователя
winbind use default domain -- позволяет автоматически добавлять имя домена к имени пользователя при авторизации
в конце стоит проверить на правильность командой
- testparm
обязательно должны присутствовать строчки вида
- Loaded services file OK.
- Server role: ROLE_DOMAIN_MEMBER
4) Изменения файла /etc/nsswitch.conf
Необходимо добавить winbind в строчки: passwd, shadow, group, protocols, services, netgroup, automount.
Получится что-нибудь вида:
passwd: files winbind shadow: files winbind group: files winbind hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files winbind rpc: files services: files winbind netgroup: files winbind publickey: nisplus automount: files winbind aliases: files
5) Изменение настроек PAM (/etc/pam.d/system-auth)
Важно заметить, в различных дистрибутивах требуется изменять и другие конфигурационные файлы PAM, такие как system-auth-use_first_pass, если он не является ссылкой на system-auth. Также имеет значение порядок строк в секциях, и разумнее всего (если вы не понимаете, что делаете) добавлять в конец каждой секции.
Необходимо добавить строчки в соответстующие секции:
auth required pam_krb5.so use_first_pass auth required pam_winbind.so use_first_pass account required pam_krb5.so account required pam_winbind.so password required pam_krb5.so use_authtok password required pam_winbind.so use_authtok session optional pam_mkhomedir.so skel=etc/skel/ umask=0022 session optional pam_krb5.so
Параметр use_first_pass заставляет модуль использовать имя пользователя и пароль полученные от предыдущего модуля.
6) Получение тикета Kerberos
ОЧЕНЬ ВАЖНО! Различие в системном времени клиента и сервера не должно превышать 5 минут. Если это не так
Если в п.1 все правильно на команду
- kinit
система выдаст предложение а вводе пароля
- Password for administrator@OFFICE.ETERSOFT.RU:
после ввода пароля и при отсутствии ошибок, полученный тикет можно посмотреть командой
- klist
после чего система выдаст список всех тикетов
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@OFFICE.ETERSOFT.RU
Valid starting Expires Service principal
05/16/07 18:47:31 05/17/07 04:47:31 krbtgt/OFFICE.ETERSOFT.RU@OFFICE.ETERSOFT.RU
7) WINBIND
Запускаем службу WINBIND командой
- service winbind start
Наличие ошибок можно посмотреть в логе (/var/log/samba/winbindd.log)
Присоединяемся к домену командой
- net join -U Administrator
первое присоединие необходимо сделать именно пользователем Администратор
в ответ должно быть
Using short domain name -- OFFICE
Joined 'BORROMAN' to realm 'OFFICE.ETERSOFT.RU'
если не так, смотрим лог /var/log/samba/winbindd.log и /var/log/samba/log.wb-ИМЯ_ДОМЕНА
После успешного присоединения нужно перезапустить службу WINBIND командой
- service winbind restart
Проверить можно командами:
- wbinfo -u Должена вывести список доменных пользователей
- wbinfo -g Должена вывести список доменных групп
- wbinfo -i Administrator Должена вывести информацию о доменном пользователе Administrator
- getent passwd Должена вывести список системных и доменных пользователей
- getent group Должена вывести список системных и доменных групп