Ключевые слова:aix, domain, windows, kerberos, samba, (найти похожие документы)
From: uxTuaHgp <alex_dubrovsky@mail.ru.>
Newsgroups: email
Date: Mon, 24 Apr 2007 14:31:37 +0000 (UTC)
Subject: Интеграция серверов AIX в MS Active Directory1. Пререквизиты
1) MS Active Directory и Kerberos на MS Windows 2003 Server.
2) AIX 5.3 ML03 и выше. Во избежание проблем биндинга к AD через
керберос необходимо установить APAR IY79120.
У меня на 5300-04 и на 5300-05 проблем с биндингом без этого APAR не возникало.
3) MS Services for Unix для поддержки расширений AD для UNIX и синхронизации паролей.
Сейчас есть версия MSSFU 3.5, с ней вроде как проблем быть не должно вообще,
я ставил и на 3.5 и на 2.0 - тонкости опишу.
4) На сервере KDC должны быть установлены Windows Support Tools.
5) Резолв через DNS на AIX должен быть настроен.
6) Допускаем
имя нашего домена - example.com
kerberos realm - EXAMPLE.COM
контроллеры домена - dc01, dc02
имя нашего хоста - aixhost
2. Инсталяция пакетов:
1) Рекомендую сначала найти и скопировать в одно место все необходимые пакеты.
В моем дистрибутиве они разложились так:
krb5.lic - AIX 5L Expansion Pack Volume #1
krb5.client - AIX 5L Expansion Pack Volume #1
krb5.toolkit - AIX 5L Expansion Pack Volume #1
krb5.msg.en_US - AIX 5L Expansion Pack Volume #1
krb5.doc.en_US - AIX 5L Expansion Pack Volume #1
ldap.client - AIX 5L Volume #4
gskta.rte - AIX 5L Expansion Pack Volume #2
ldap.max_crypto_client - AIX 5L Expansion Pack Volume #1
2) Инсталим сначала krb5.lic, с одобрением лицензионного соглашения.
Лично я пользовался smit install, но можно и строчкой :)
# installp -acgXYpd <SOURCEDIR> krb5.lic
<SOURCEDIR> - место, куда Вы свалили все пакеты
3) Инсталируем все остальные пакеты
# installp -acgXYpd <SOURCEDIR> krb5.client krb5.toolkit \
krb5.msg.en_US krb5.doc.en_US ldap.client gskta.rte ldap.max_crypto_client
3. Настройка Kerberos
1) Поправим системные пути, чтобы находились бинарники кербероса.
Добавим /usr/krb5/bin:/usr/krb5/sbin: в переменную PATH в файле
/etc/environment перед путями к java.
У меня путь получился такой:
PATH=/usr/local/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/krb5/bin:/usr/krb5/sbin:/usr/java/jre/bin:/usr/java/bin
2) Настроим синхронизацию времени с KDC
# ntpdate dc01.example.com
Добавим строчки в /etc/ntp.conf
server dc01.example.com
server dc02.example.com
заускаем демона ntp
startsrc -s xntpd
проверяем синхронизацию
# ntpq
ntpq> peers
remote refid st t when poll reach delay offset disp
+dc01.example.com dc01.example.com 6 u 454 512 377 0.61 -15.332 29.01
*dc02.example.com dc02.example.com 5 u 121 512 377 2.64 0.334 5.86
ntpq> q
#
Сделаем так, чтобы xntpd запускался автоматически при загрузке системы,
для этого раскомментируем строку запуска xntpd в файле /etc/rc.tcp
3) Собственно генерируем конфиги кербероса
# config.krb5 -C -r EXAMPLE.COM -d example.com -c dc01.example.com -s dc01.example.com
realm (-r) обязательно в верхнем регистре!!!
Поправим секцию [libdefaults] в файле /etc/krb5/krb5.conf - уберем не
поддерживаемые Windows 2000 и 2003 типы шифрования.
После исправления она должна выглядеть примерно так:
[libdefaults]
default_realm = EXAMPLE.COM
default_keytab_name = FILE:/etc/krb5/krb5.keytab
default_tkt_enctypes = des-cbc-md5 des-cbc-crc
default_tgs_enctypes = des-cbc-md5 des-cbc-crc
4) Добавим методы аутентикации сразу и для kerberos и для LDAP в /usr/lib/security/methods.cfg
KRB5A:
program = /usr/lib/security/KRB5A
options = authonly
LDAP:
program = /usr/lib/security/LDAP
program_64 = /usr/lib/security/LDAP64
KRB5ALDAP:
options = db=LDAP,auth=KRB5A
KRB5Afiles:
options = db=BUILTIN,auth=KRB5A
5) Создаем принципала для нашего хоста:
В AD создаем пользователя вида host_имяхоста, то есть в нашем случае
host_aixhost, устанавливаем ему пароль.
6) С помощью утилиты ktpass из MS Windows Support Tools создаем файл с
ключом и переносим его на AIX
C:\>ktpass -princ host/aixhost.example.com@EXAMPLE.COM -mapuser host_aixhost \
-pass superPassw0rd -out host_aixhost.keytab
С помощью утилиты setspn можем посмотреть мапинг логина на принципала
C:\>stspn -L host_aixhost
Копируем ключ на AIX
pscp host_aixhost.keytab root@aixhost:/etc/krb5/
Тут я воспользовался pscp из пакета PuTTy
7) Импортируем полученный ключ в таблицу ключей на aixhost
# ktutil
rkt /etc/krb5/host_aixhost.keytab
wkt /etc/krb5/krb5.keytab
q
#
Проверим ключ
# kinit host/aixhost.example.com@EXAMPLE.COM
Password for host/aixhost.example.com@EXAMPLE.COM: ************
#
# klist
Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0
Default principal: host/aixhost.example.com@EXAMPLE.COM
Valid starting Expires Service principal
04/19/07 10:57:13 04/19/07 20:57:19 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Renew until 04/20/07 10:57:13
#
8) Удалим импорт-ключ принципала
# rm /etc/krb5/host_aixhost.keytab
4. Проверка утентикации kerberos
1) Заведем в AD пользователя, например test01 и зададим для него пароль.
2) В AIX создадим пользователя с методом аутентикации через KRB5Afiles
# mkuser registry=KRB5Afiles SYSTEM=KRB5Afiles test01
3) Попробуем логиниться пользователем test01
login as: test01
test01@aixhost's password:
*******************************************************************************
* *
* *
* Welcome to AIX Version 5.3! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
$ echo $AUTHSTATE
KRB5Afiles
$
Видим что атентикация прошла через KRB5Afiles. Все аттрибуты пользователя и членство
в группах в данном случае хранятся локально в /etc/passwd и /etc/group
5. Настройка LDAP
1) Документы, которыми я пользовался, рекомендуют не используя mksecldap, а просто
руками прописать конфигурационные файлы, однако mksecldap дает один плюс - он прописывает
в конфиг пароль нашего принципала в зашифрованом DES виде.
Итак, запускаем конфигуратор ldap клиента
# mksecldap -c -h dc01 -a 'CN=host_aixhost,OU=Host \
Accounts,OU=Users,OU=New Vasjuki,DC=example,DC=com' -p superPassw0rd
где у вас будет расположен аккаунт принципала, я не знаю :)
2) Правим /etc/security/ldap/ldap.cfg
searchmode:OS # OS необходимо, как оказалось, для MSSFU 2.0 по умолчанию стоит ALL
ldapservers:dc01.example.com,dc02.examle.com
binddn:cn=CN=host_aixhost,OU=Host Accounts,OU=Users,OU=New Vasjuki,DC=example,DC=com
bindpwd:{DES}63FABC6A5AB7B4 29ECDEDA02F DB0D38DDD37E25AF46255 # в принципе тут можно вписать пароль и в открытом виде
userattrmappath:/etc/security/ldap/sfu20user.map # опять же для MSSFU 2.0
groupattrmappath:/etc/security/ldap/sfu20group.map
userbasedn:OU=Users,OU=New Vasjuki,DC=example,DC=com # тут должно быть ясно - юнит под которым искать
groupbasedn:OU=Groups,OU=New Vasjuki,DC=example,DC=com
userclasses:user
groupclasses:group
Пояснения:
searchmode: по умолчанию ALL и по умолчанию работает отлично с MSSFU 3.*,
однако с 2.0 демон LDAP клиента падал в кору при попытках сделать id на некоторых пользователей AD.
По сути дела, методом тыка было выведено, что нужно в этом случае прописывать OS.
userattrmappath и groupattrmappath мапфайлы, где стыкуются юникс атрибуты с AD атрибутами.
Для MSSFU 3.0 и 3.5 есть шаблоны
/etc/security/ldap/sfu30user.map
/etc/security/ldap/sfu30group.map
В AIX 5L TL05 стало возможно прописывать до 10-ти строк userbasedn и
groupbasedn, в результате LDAP клиент по порядку опрашивает все эти DN.
Кроме того появилась возможность вписывать в эти записи фильтры [2].
3) Запускаем демон LDAP клиента
# start-secldapclntd
Starting the secldapclntd daemon.
The secldapclntd daemon started successfully.
#
4) Делаем так, чтобы LDAP клиент запускался при старте системы
# mkitab "ldapclntd:2:once:/usr/sbin/secldapclntd > /dev/console 2>&1"
6. Проверка работы LDAP+Kerberos
1) Заводим в AD группу и пользователя, например tstgrp02 и test02,
проставляем пароль и заполняем поля в закладке
Unix Attributes.
2) Проверяем запросом к LDAP с AIX
# lsldap -a group tst*
# lsldap -a passwd test*
3) Смотрим видит-ли AIX базу пользователй LDAP
# id test02
uid=2365(test02) gid=1001(Domain Users)
# lsuser test02
test02 id=22365 pgrp=Domain Users groups=Domain Users home=/home/test02 \
shell=/usr/bin/sh gecos=test02 login=true su=true rlogin=true \
daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL \
expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=KRB5ALDAP SYSTEM=compat \
logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 \
maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 \
histexpire=0 histsize=0 pwdchecks= dictionlist= fsize=-1 cpu=-1 data=-1 \
stack=65536 core=2097151 rss=-1 nofiles=2000 fsize_hard=-1 data_hard=-1 \
rss_hard=-1 roles=
#
4) Чтобы пользователь успешно аутентифицировался, нужно поменять атрибут SYSTEM на KRB5ALDAP
# chuser SYSTEM=KRB5ALDAP test02
Если пользователей AD будет гораздо больше, чем локальных, а локальные
будут заводиться редко, можно сделать и иначе:
В файле /etc/security/user
для default прописать
SYSTEM=KRB5ALDAP
всем локальным пользователям прописать
SYSTEM=compat
Если существующим не проставить compat - у них будут проблемы при
попытке войти :)
5) Пытаемся логиниться
login as: test02
test02@aixhost's password:
*******************************************************************************
* *
* *
* Welcome to AIX Version 5.3! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************
$ echo $AUTHSTATE
KRB5ALDAP
$
Вот собственно и все!
Ссылки на использованную литературу:
1. IBM RedBook Integrating AIX into Heterogeneous LDAP Environments
2. AIX5 LDAP user management
хотелось бы добавить что, если делать только первую половину (тоесть непосредственно саму авторизацию, без подключения LDAP) то вместо
KRB5A:
program = /usr/lib/security/KRB5A
options = authonly
правильнее написать вот так
KRB5A:
program = /usr/lib/security/KRB5A
options = authonly,is_kadmind_compat=no,tgt_verify=no
тогда с входом пользователей по telnet и ftp с доменными аккаунтами не будет возникать проблем (сам буквально недавно всю голову себе с этим чуть не сломал)