Применение Kerberos для регистрации пользователей

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 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478

При обсуждении средств поддержки сеанса Kerberos предполагалось, что пользователь

уже зарегистрирован в системе. Однако подобный подход крайне неудобен, так как поль­зователю приходится регистрироваться дважды: один раз в начале работы на компьютере,

а второй раз при работе с серверами Kerberos (при запуске программы kinit). Решени­ем этой проблемы могло бы быть использование программы, одновременно решающей обе задачи. В составе пакета Kerberos обычно поставляются два подобных инструмента: login. krb5 и ksu. Они предназначены для регистрации пользователя в текстовом ре­жиме. Регистрацию можно было бы организовать и по-другому, модифицировав библио­теки Linux для работы с Kerberos. Такое решение сложнее в реализации, но обеспечивают

большую гибкость.

ВНИМАНИБ  Рекомендуется перед использованием login. krb5 сначала проверить програм-f му kinit для основных учетных записей, в том числе для записи root. Бсли kinit не работает, не будет работать и login. krb5, следовательно, вам не удастся с консоли в текстовом режиме. Желательно также

зарегистрироваться под именем root с одного из виртуальных терминалов. В случае, если у вас возникнут проблему с использованием krb5, вы

сможете изменить конфигурацию программы. Аналогичному подходу необхо­димо следовать и при работе с другими инструментами регистрации.

Выполнение аутентификации Kerberos в текстовом режиме

Процедура регистрации в системе Linux в текстовом режиме включает использование программы getty или одной из ее разновидностей (разновидностями getty являют­ся mingetty, mgetty и vgetty). Они запускаются из /etc/inittab, контролиру­ют консольный терминал и последовательные порты и передают управление программе /bin/login. Программы поддержки некоторых сетевых протоколов, например Telnet, также вызывают /bin/login. Как следует из имени krb5, эта программа со­здана для замены /bin/login. Прежде чем выполнять такую замену, желательно со­хранить исходную программу регистрации под другим именем. Например, вы можете использовать следующие команды:

# mv  /bin/login /bin/login-original

# ср /usr/kerberos/sbin/login.krb5 /bin/login

Если возникнут проблемы с использованием login. krb5, вы всегда сможете вос­становить исходную программу /bin/login. После замены программы login реги­страция пользователя на компьютере будет автоматически сопровождаться начальной регистрацией в системе Kerberos. Процедура начальной регистрации включает получе­ние TGT, поэтому после нее нет необходимости в вызове kinit. Несмотря на то что описанная конфигурация предполагает наличие записи в файле /etc/passwd, рабо­чего каталога пользователя и прочих ресурсов, необходимых в обычных условиях для

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

Kerberos. Существуют также другие средства регистрации, которые надо модифицировать для работы с Kerberos. К ним относятся регистрация с помощью инструментов с графи­ческим интерфейсом, а также регистрация посредством серверов, которые не используют /bin/login, например SSH.

Переход к новой учетной записи после регистрации

При использовании     для замены учетной записи в работу включается новый ме­ханизм аутентификации. В состав пакета Kerberos входит альтернативный инструмент который принимает решение о переходе к учетной записи другого пользователя

и выполняет необходимые действия. Для работы этой программы должны выполняться

следующие условия.

• Компьютер, на котором работает ksu, должен иметь ярлык (обычно он хранится в файле /etc/krb5 . keytab).

• Для исполняемого файла ksu должен быть установлен признак SUID, так, что­бы программа, запускаемая от имени любого пользователя, выполнялась с пра­вами root. Во многих пакетах Kerberos этот признак не установлен, поэтому вам необходимо сделать это самостоятельно (вызвать команду chmod a+s /usr/ kerberos/bin/ksu).

• Для повышения уровня защиты пользователю, учетной записью которого вы со­бираетесь воспользоваться, должен соответствовать файл авторизации, в котором указываются права доступа для других пользователей. В роли файла авторизации может выступать . k51ogin или . k5users. Особенности создания и использова­ния этих файлов описаны ниже.

Для того чтобы один пользователь мог перейти к учетной записи другого пользователя, целевой пользователь должен создать файл авторизации. Без этого файла ksu запросит

пароль, который может быть передан по сети в незашифрованном виде (это произойдет,

если пользователь регистрировался посредством незащищенного протокола, например Telnet). Файл . k51ogin предоставляет другому пользователю полный набор привиле­гий. Он состоит из набора строк, в каждой из которых указан принципал Kerberos. Файл .k5users предоставляет пользователю ограниченный доступ; в нем указаны списки программ, которые этот пользователь может запускать. Каждая строка файла начинаетсяс идентификатора принципала Kerberos, за которым следуют имена программ, разделен­ных пробелами. Групповые операции обозначаются с помощью символа *. Ниже приведен пример записи, с помощью которой принципалу предо­ставляются права на запуск программ /bin/Is и

minerva@THREEROOMCO.COM /bin/Is /usr/bin/zip

После настройки программа ksu работает подобно su — вы вводите имя программы, затем указываете имя пользователя, привилегии которого вы собираетесь получить. Бсли файлы . и . отсутствуют, вам придется ввести пароль для принципала.

При наличии файла авторизации вводить пароль не нужно. Такой подход создает меньшую

угрозу для безопасности системы, чем взаимодействие по незащищённому протоколу.

Бсли вы хотите непосредственно выполнить некоторую программу, вы можете сделать это с помощью опции -е Например, для того, чтобы запустить /bin/

Is от имени пользователя fluff у, вам надо вызвать команду fluff у -e /bin/Is.

Использование РАМ

Замена программ login и su специальными инструментами, ориентированными на

работу с Kerberos, помогает решать задачи аутентификации, но существуют ситуации,

в которых подобный подход не приносит желаемых результатов. Особенный интерес вы­зывают случаи, когда возникает необходимость контролировать процесс регистрации на

рабочей станции с помощью программы с графическим интерфейсом и выполнять аутен­тификацию в системе Kerberos. Существуют также другие локальные средства, выполня­ющие аутентификацию пользователей, которые необходимо связать с Kerberos; в качестве примеров таких средств можно привести vlock и xscreensaver (эти инструменты

блокируют сеанс взаимодействия, осуществляемый как в текстовом, так и в графическом

режиме, до тех пор, пока пользователь не введет пароль). Существуют универсальные ин­струменты связывания различных программы со средствами Kerberos, но на сегодняшний день эти инструменты нельзя назвать широко распространенными, и они не поставляются

в комплекте с Kerberos. Средства для решения данной задачи базируются на поддержке

модулей РАМ (Pluggable Authentication Module — встраиваемый модуль аутентификации)

в системе Linux.

РАМ выполняет роль посредника между программами, которым требуется аутенти­фикация (например, сервером FTP, программой login, инструментами регистрации, работающими в среде X Window), и базами данных, в которых хранится информация о пользователях, в частности пароли (/etc/passwd, /etc/shadow и другие файлы стандартного пакета Linux). Процедуры аутентификации оформляются в виде отдельной библиотеки. В этом случае файлы, применяемые для аутентификации, могут быть без труда модифицированы, а программы, использующие их, остаются без изменений. Для поддержки нового формата файлов модифицируются только РАМ. В этом смысле реа­лизация средств поддержки Kerberos в виде РАМ является почти идеальным решением,

позволяющим обеспечить совместную работу с Kerberos многих приложений. Любые из­менения не затрагивают прикладные программы, которые взаимодействуют только с РАМ.

Поддержка Kerberos с помощью РАМ имеет свои ограничения. В частности, ес­ли код программы построен так, что программа запрашивает имя пользователя и пароль, ее поведение не изменится при замене РАМ на модуль, поддерживаю­щий Kerberos. Полученные данные программа передаст РАМ, и он предпримет попытку аутентификации с использованием базы данных Kerberos. Так, напри­мер, РАМ не устраняет необходимость ввода имени пользователя и пароля при работе с FTP-сервером, но позволяет следить за текущим паролем и приводить его в соответствие с данными для области Kerberos. Бсли речь идет о кер-программах, выполняющих регистрацию пользователя, то такая особенность не является недостатком, так как программы регистрации в любом случае запрашивают пользовательское имя и пароль.

Несмотря на то что РАМ может выступать в роли универсального средства аутенти­фикации и поддерживается во всех версиях Linux и во многих системах, отличных от Linux, версии РАМ мало распространены. Ниже описаны некоторые из

таких модулей, которые были доступны в момент написания данной книги.

• Модуль Деррика Брешера (Derrik Brashier). Этот модуль предназначен для ис­пользования совместно с Kerberos V4. Он расположен по адресу

имена файлов, содержащих этот модуль, начинают­ся символами pam_krb4. Выберите самый новый из файлов (во время написания данной книги все файлы датировались І998 г.). Данный модуль распространяется в исходных кодах, поэтому перед использованием его надо скомпилировать.

• Модуль Фрэнка Кусека (Frank Cusack). Модуль РАМ, поддерживающий MIT Кег-beros V5 и Heimdal, находится по адресу http: //www. nectar. com/zope/krb/.

Этот пакет доступен в исходных кодах; изначально коды были написаны для Solaris, но после компиляции они будут работать в системе Linux.

• Модуль Кертиса Кинга (Curtis King). Этот модуль доступен по адресу ftp: //ftp .dementia. org/pub/pam/; имя файла — pam_krb5-l . 1. З. tar . gz.

Данный модуль также требует компиляции, в ходе которой могут возникнуть про­блемы.

• Модуль для системы Red Hat. Модуль РАМ Kerberos V5 входит в состав дис­трибутивного комплекта Red Hat под именем pam_krb5. Данный вариант РАМ поставляется в виде двоичного кода в формате поэтому чрезвычайно просто устанавливается в Red Hat и других подобных системах. При подготовке материала данной главы я использовал именно этот тип модуля, хотя следует отметить, что

точно так же работает модуль Фрэнка Кусека.

• Модули для системы Debian. В Debian и других подобных системах работа с Кег-beros V5 и Heimdal поддерживается соответственно модулями и libpam-heimdal. На Web-узле Debian эти пакеты найти достаточно сложно, по­этому лучше скопировать их, обратившись по адресам http: / /ftp. nl. debian. org/debian/pool/non-US/main/libp/libpam-krb5/ и http://ftp. nl.debian.org/debian/pool/non-US/main/libp/libpam-heimdal/.

При инсталляции РАМ для поддержки Kerberos вы по сути устанавливаете средства, с помощью которых РАМ настраивается для выполнения конкретной задачи. В составмодуля РАМ входит одна или несколько библиотек, которые располагаются в каталогах /lib/securitymnt /usr/lib/security. В системе Red Hat библиотеки содержат­ся в файлах pam_krb5 . so и pam_krb5afs . so. Для работы с этими библиотеками

вы должны внести изменения в конфигурационные файлы РАМ, которые содержатся

в каталоге /etc/pam.d. Имена конфигурационных файлов составляются на основании имен серверов и других программ, для которых необходимо выполнить аутентифика­цию. Например, содержимое файла /etc/pam.d/login определяет взаимодействие программы login с РАМ. При редактировании конфигурационного файла РАМ в нем надо изменить (или добавить) одну или несколько строк, определяющих использова­ние нового модуля Kerberos. В пакете, предназначенном для системы Red Hat, содер­жится большое число файлов с примерами настройки. Эти файлы находятся в каталоге /usr/share/doc/pam_krb5-BepcHH/pam.d, где версия — это номер версии паке­та. Чтобы упростить настройку, надо скопировать соответствующие конфигурационные файлы в каталог /etc/pam.d. Файлы, которые могут потребоваться вам, перечислены ниже.

• login. Данный файл управляет взаимодействием с программой login. Настроив РАМ для работы с Kerberos, вы можете отказаться от login. krb5 и продолжать работу с привычной вам программой login.

• gdm. GNOME Display Manager, или GDM, является одним из трех широко распро­страненных средств регистрации с графическим интерфейсом. (О настройке GDM и других подобных инструментах речь пойдет в главе 14.)

• xdm. Вторым инструментом, предоставляющим графический интерфейс для реги­страции, является X Display Manager, или XDM. Конфигурационные файлы XDM может также использовать Display Manager. В описании утверждается, что

данный файл должен обеспечить аутентификацию Kerberos при работе указанных

средств регистрации, однако при установке конфигурации в системе Mandrake воз­никают проблемы.

• su и sudo. Программа su, которая обсуждалась ранее, позволяет пользователю после регистрации в системе переходить к другой учетной записи. Программа ksu делает то же самое, используя аутентификацию Kerberos, однако аналогичные ре­зультаты можно получить, создав файл РАМ для su. Файл sudo управляет взаимо­действием с утилитой sudo.

• passwd. Этот файл настраивает РАМ так, что информация об изменении пароля, выполненном с помощью программы passwd, передается KDC.

• vlock. Программ^^^ск блокирует консоль, не завершая при этом сеанс ра­боты пользователя. Чтобы разблокировать консоль, необходимо ввести пароль. Как нетрудно догадаться, данный файл обеспечивает аутентификацию путем обращения программы vlock к KDC.

• xlock и xscreensaver. Программы с такими именами предназначены для бло­кирования сеанса X Window (т. е. они выполняют действия, аналогичные vlock). Программа xscreensaver автоматически блокирует сеанс, если в течение опре­деленного периода времени пользователь не выполняет никаких действий.

Возможно, вы захотите настроить и другие программы для взаимодействия с Ker-

beros; при этом вам придется отредактировать соответствующие конфигурационные фай­лы РАМ. Бсли какой-то из серверов уже сконфигурирован для работы с Kerberos, вам не

надо модифицировать файлы РАМ. Например, если у вас уже установлен керберизован-ный FTP-сервер, вам не следует изменять файл /etc/pam.d/ftp. Подобные програм­мы могут взаимодействовать с KDC, минуя РАМ; при работе с ними нет необходимости вводить имя пользователя и пароль, как это приходится делать, используя программы,

взаимодействующие посредством РАМ.

Бсли некоторая программа использует РАМ, то для обеспечения ее совместной работы

с Kerberos вам необходимо добавить или заменить некоторые строки в конфигурацион­ном файле РАМ. В составе такого файла содержатся записи, определяющие основные действия, cвязaнныecayтeнтификaциeй:auth(ayтeнтификaцияпoльзoвaтeля),account (проверка корректности учетной записи), password (изменение пароля) и session (на­чало и завершение сеанса). В листинге б.4 показано содержимое файла входящего

в состав Kerberos РАМ для Red Hat.

Листинг 6.4. Пример конфигурационного файла РАМ для поддержки Kerberos

#%РАМ-1.0

 

 

 

auth

required

/lib/security/pam_nologin.so

 

auth

sufficient

shadow md5

\

nullok likeauth

 

 

auth

required

/lib/security/pam_krb5.so use_first_pass

account

required

/lib/security/pam_unix.so

 

password

required

/lib/security/pam_cracklib. so

 

password

required

shadow

\

nullok use_authtok

 

 

session

required

/lib/security/pam_unix.so

 

session

optional

/lib/security/pam_krb5.so

 

session

optional

/lib/security/pam_console.so

 

В разных системах РАМ настраиваются по-разному, поэтому содер-

жимое конфигурационного файла может отличаться от приведенного в ли-

чдиь I к у

стинге 6.4. Часто настройка сводится к включению строки, указывающей на . so, и удалению ссылки на другой модуль.

В данном примере наиболее важны последняя запись auth и вторая запись session, которые настраивают РАМ для использования Kerberos при регистрации пользователя и завершении его работы. В записи auth содержится параметр use_first_pass, ко­торый сообщает Kerberos РАМ о том, что для поддержки сеанса используется первый пароль. В результате модуль действует подобно kinit, получая и сохраняя TGT. Анало­гично могут быть настроены многие модули РАМ, но для установки конфигурации неко­торых из них необходимо выполнить дополнительные действия. Так, например, можетпотребоваться дополнительная запись password, которая помещается после существу­ющих и имеет следующий вид:

password       required       /lib/security/pam_krb5.so use_authtok

Зтoнeoбxoдимoвcлyчae,ecлимoдyльpasswordиcпoльзyeтcяпporpaммoйpasswd,

которая изменяет пароль, но не выполняет аутентификацию пользователя. В некоторых файлах не должны присутствовать записи session, так как это приведет к разрушению билетов. Например, недопустимо, чтобы модули xscreensaver и linuxconf разруша­ли билеты; при завершении соответствующих программ возобновляется текущий сеанс,

в котором билеты должны быть действительны.

В некоторых случаях приходится удалять существующие записи из файлов, раз­мещенных в В частности, если вы добавляете запись, указывающую на а в файле уже есть запись такого же типа, которая ссылается на pam__pwdb. so, существующую запись необходимо удалить. Библиотека pam_pwdb. so

обеспечивает непосредственный доступ к базе данных паролей, и если обе записи при­сутствуют, в аутентификации участвуют как локальная база паролей, так и база данных Kerberos. Возможно, в некоторых ситуациях, когда требуется чрезвычайно высокая сте­пень защиты, такой подход оправдан, но в большинстве случаев он лишь уменьшает степень гибкости Kerberos, так как пользователь вынужден менять пароль и на и на рабочей станции. Если в конфигурационном файле РАМ password предусмотре­на двойная проверка, при работе с одной рабочей станцией настройки легко согласовать

с помощью инструмента однако отслеживать изменения во всей сети достаточно

сложно.

Новая конфигурация РАМ становится доступна сразу после внесения соответствую­щих изменений; перезапускать программы РАМ не требуется. Если установленная конфи­гурация оказывает воздействие на сервер, который уже выполняется в системе, то чтобы

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

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