|
Интеграция AIX в MS AD через LDAP+Kerberos
#34474904
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
Гут!
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277.
1 . Пререквизиты
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 . http://www.redbooks.ibm.com/redbooks/pdfs/sg247165.pdf - IBM RedBook Integrating AIX into Heterogeneous LDAP Environments
2 . http://www- 128 .ibm.com/developerworks/aix/library/au-aixadsupport.html - AIX5 LDAP user management
|
|
|