Posted: June 17th, 2008, 7:59pm CEST
div style="text-align: center;"span style="font-weight: bold;"Установка Kerberos /spanbr //divp Для администраторов небольших сетей проблем в организации доступа пользователей к немногочисленным сетевым ресурсам, в общем, то и нет. Но как только сеть начинает расти, требуется уже синхронизировать учетные записи пользователей на всех сервисах и управлении доступом к различным сервисам. Здесь уже требуется централизованный подход, к решению этой проблемы. Сейчас разберем, как установить и настроить сетевую систему аутентификации пользователей Kerberos на примере Linux Ubuntu./p p class="MsoNormal" span id="more-217"/span/p h3 align="center"span style="font-size:85%;"История Kerberos/span/h3 p class="MsoNormal"В 1983 году две компании DEC, IBM и MIT (Massachusetts Institute of Technology) начали работу над проектом Athena. Суть работ продолжавшихся 8 лет, заключалась в создании единой вычислительной среды, количество пользователей и сервисов в которой можно было бы легко расширить вплоть до 10 тысяч. Пользователь в такой среде мог бы спокойно выходить в сеть с любого компьютера, получать доступ к требуемым файлам и приложениям, не замечая различий в работе и интерфейсе. Было разработано множество передовых на тот момент технологий, из которых сегодня самыми известными являются графическая подсистема X-Window, которая применяется во всех Unix и Kerberos. Разработкой протокола защиты сетевых сервисов используемых в Athena занимались в MIT, в недрах которой и использовались версии 1-3. В 1987 году общественности был представлен протокол Kerberos 4, который имел ряд недостатков и ограничений. Если кто забыл греческую мифологию, так называли трехгодового пса охранявшего выход из царства мертвых Аида (он всего 5 раз не справился со своими обязанностями). В 1993 вышла пятая версия протокола, используемая и по сей день, хотя современные реализации могут работать и с 4 версией. В пятой версии использовалась весьма стойкая по тем временам криптография (DES с 56-битным ключом), и по американским законам попадала под категорию военных технологий, экспорт которых за территорию США запрещен. Поэтому была разработана версия MIT Bones в основу, которой была положена версия 4 и убрана вся сильная криптография. Экспорту Bones уже ни что не препятствовало, но такая “функциональность” никого естественно не устраивала. В 1997 году группа программистов KTH-KRB из Стокгольмского Королевского университета (Royal Institute of Technology in Sweden) выпустила вариант eBones, в котором недостающее было восстановлено. Но в современном мире больше известна реализация Kerberos 5 от KTH-KRB получившая название Heimdal (существо в скандинавской мифологии защищавшее богов, кстати, это еще и город в Trondheim, местность, исхоженная в Wolfenshtein вдоль и поперек). Сейчас версия от MIT распространяется уже безо всяких ограничений./p h3 align="center"span style="font-size:85%;"Принцип работы Kerberos/span/h3 p class="MsoNormal"Кратко опишу принцип работы системы, чтобы было понятно, чем мы будем заниматься. Протокол описан в RFC 1510 (a sp_eventwasset="on" href="http://tools.ietf.org/html/rfc1510"tools.ietf.org/html/rfc1510/a) и RFC 4120 (a sp_eventwasset="on" href="http://tools.ietf.org/html/rfc4120"tools.ietf.org/html/rfc4120/a). В настоящее время клиентские компоненты для работы с Kerberos имеются в большинстве современных операционных систем. Для подтверждения подлинности используется доверенная третья сторона, которая владеет секретными ключами всех субъектов и участвующая в по парной проверке подлинности. Когда клиент пытается получить доступ к ресурсу, он посылает запрос, содержащий сведения о себе и о запрашиваемой услуге. Весь процесс происходит в три этапа, в ответ контролер Kerberos (Key Distribution Center, KDC) выдает билет, удостоверяющий пользователя TGT (ticket granting ticket). Каждый билет имеет ограниченный срок жизни, что снижает интерес к его перехвату. Поэтому одним из требований к системе Kerberos синхронизация времени между всеми участниками. При последующем обращении к другим сервисам вводить пароль уже не нужно. Каждый участник системы Kerberos как служба, так и пользователь именуются принципал (principial). Каждый принципал имеет имя и пароль. Типичное имя принципала выглядит так root/admin@GRINDER.COM, что означает имя (primary name) root, характеристику (instance), который принадлежит сектору GRINDER.COM. Такой подход позволяет различать несколько служб работающих на одном компьютере, и среди однотипных служб выбирать нужную. Вся схема работы от пользователя скрыта. При обращении к ресурсу, по прежнему вводит только свой логин и пароль. Для удобства компьютеры могут быть объединены в сектора (realms), кстати в некоторой литературе realms переводят как домен. Все принципиалы сохраняются в базе данных сервера Kerberos. В сети может быть использовано несколько KDC, один из которых является основным (master). На master KDC устанавливается административный сервер kadmind управляющий политиками. Все конечно не так просто, и на порядок или два сложнее, но этого достаточно для понимания, того чего мы будем настраивать дальше./p p class="MsoNormal" /p h3 align="center"span style="font-size:85%;"Устанавливаем NTP/span/h3 p class="MsoNormal"Прежде чем установить Kerberos, необходимо настроить службу синхронизации времени (NTP - Network Time Protocol), без которой не возможна нормальная работа Kerberos./p p$ sudo apt-get install ntp/p pВсе настройки производятся в одном единственном файле./p p$ sudo mcedit /etc/ntp.conf/p p class="MsoNormal" /p pdriftfile /var/lib/ntp/ntp.drift/p pstatsdir /var/log/ntpstats//p pstatistics loopstats peerstats clockstats/p pfilegen loopstats file loopstats type day enable/p pfilegen peerstats file peerstats type day enable/p pfilegen clockstats file clockstats type day enable/p p class="MsoNormal" /p p# серверы с которыми будем синхронизировать время/p pserver ntp.ubuntulinux.org/p pserver pool.ntp.org/p pserver time.nist.gov/p p class="MsoNormal" /p p# используем локальное время в случае неудачи/p pserver 127.127.1.0/p pfudge 127.127.1.0 stratum 13/p p class="MsoNormal" /p prestrict default kod notrap nomodify nopeer noquery/p p class="MsoNormal" /p p# локальные пользователи могут запрашивать время/p prestrict 127.0.0.1 nomodify/p p class="MsoNormal" /p p# включаем вroadcast/p pbroadcast 192.168.1.255/p p class="MsoNormal" /p p# прослушивание времени в сети/p pdisable auth/p pbroadcastclien/p p class="MsoNormal" /p pПерезапускаем сервер./p p$ sudo /etc/init.d/ntp restart/p p class="MsoNormal" * Stopping NTP server ntpd [ OK ]/p p class="MsoNormal" * Starting NTP server ntpd [ OK ]/p pТеперь синхронизируем время./p p$ ntpq -p -c as amp;amp; echo amp;amp; ntptrace/p p class="MsoNormal" /p h3 align="center"span style="font-size:85%;"Устанавливаем Kerberos/span/h3 pВ репозитариях пакетов дистрибутивов Linux уже все необходимое есть. Хотя при желании можно установить систему из исходных текстов. Дистрибутив Heimdal найдете на FTP сервере Стокгольмского университета a sp_eventwasset="on" href="ftp://ftp.pdc.kth.se/pub/heimdal/src"ftp://ftp.pdc.kth.se/pub/heimdal/src/a, последняя версия на момент написания этих строк 1.0.2 от декабря 2007 года, там же можно найти готовые пакеты для некоторых дистрибутивов. Версия от MIT лежит по адресу a sp_eventwasset="on" href="http://web.mit.edu/kerberos/"http://web.mit.edu/kerberos//a./p pКоманда “sudo apt-cache search kerberos” в Ubuntu выдаст большой список пакетов в котором можно найти решения от MIT и Hemdail./pa onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_oFTNOc_lDwQ/SFf9el2dRAI/AAAAAAAAFPw/bd5BlXN_kjE/s1600-h/Kerberos.png"img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_oFTNOc_lDwQ/SFf9el2dRAI/AAAAAAAAFPw/bd5BlXN_kjE/s400/Kerberos.png" alt="" id="BLOGGER_PHOTO_ID_5212913795703063554" border="0" //abr /Основные настройки их практически идентичны, эти системы также понимают билеты выданные друг другом, хотя есть и проблемы совместимости, но о них говорить не будем. Для примера, выберем версию от MIT. p$ sudo apt-get install krb5-admin-server krb5-kdc krb5-config krb5-user krb5-clients/p pОсновные настройки Kerberos производятся в файле /etc/krb5.conf. Набивать его полностью не надо, можно использовать готовый шаблон:/p p$ sudo cp /usr/share/kerberos-configs/krb5.conf.template /etc/krb5.conf/p pТеперь открываем файл и начинаем подгонять под свои условия./p p$ sudo mcedit /etc/krb5.conf/p pbr /[libdefaults]/p pdefault_realm = GRINDER.COM/p p class="MsoNormal" /p p# kdc и admin сервер для GRINDER.COM/p p class="MsoNormal" [realms]/p pGRINDER.COM = {/p p class="MsoNormal" kdc = server.grinder.com/p p class="MsoNormal" admin_server = server.grinder.com/p p}/p pbr /# сообщаем kdc, какие узлы входят в облать GRINDER.COM/p p# если область и домен совпадает эту секцию можно опустить/p p class="MsoNormal" [domain_realm]/p pgrinder.com = GRINDER.COM/p p.grinder.com = GRINDER.COM/p p# отключаем совместимость с 4 версией Kerberos/p p[login]/p pkrb4_convert = false/p pkrb4_get_tickets = false/p pЭтот файл используется как сервером, так и приложениями, поэтому его можно практически без изменений распространить на остальные системы входящие в один realms (если их много можно использовать службу DNS). Все настройки KDC производятся в /etc/krb5kdc/kdc.conf. В принципе большую часть параметров можно оставить как есть, заменив только realms:/p p$ sudo mcedit /etc/krb5kdc/kdc.conf/p p[kdcdefaults]/p p class="MsoNormal" kdc_ports = 750,88/p p class="MsoNormal" /p p[realms]/p p class="MsoNormal" GRINDER.COM = {/p p class="MsoNormal" database_name = /var/lib/krb5kdc/principal/p p class="MsoNormal" admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab/p p class="MsoNormal" acl_file = /etc/krb5kdc/kadm5.acl/p p class="MsoNormal" key_stash_file = /etc/krb5kdc/stash/p p class="MsoNormal" kdc_ports = 750,88/p p class="MsoNormal" max_life = 10h 0m 0s/p p class="MsoNormal" max_renewable_life = 7d 0h 0m 0s/p p class="MsoNormal" master_key_type = des3-hmac-sha1/p p class="MsoNormal" supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3/p p class="MsoNormal" default_principal_flags = +preauth/p p class="MsoNormal" }/p pПерезапускаем KDC и сервер администрирования./p p$ sudo /etc/init.d/krb5-kdc restart/p p$ sudo /etc/init.d/krb5-admin-server restart/p pСоздаем принципиалы и ключи/p pДля начала следует создать новую базу данных и наполнить ее принципиалами. Здесь возможно несколько вариантов, один из них вызов kadmin с ключом –l. Можно использовать специальные утилиты./p p$ sudo kdb5_util create -s/p pLoading random data/p pInitializing database ‘/var/lib/krb5kdc/principal’ for realm ‘GRINDER.COM’,/p pmaster key name ‘K/M@GRINDER.COM’/p pYou will be prompted for the database Master Password./p pIt is important that you NOT FORGET this password./p pEnter KDC database master key:/p pRe-enter KDC database master key to verify:/p pНовая база создана. Утилита попросит ввести пароль, не забудьте его. Создадим принципиал, который потребуется для административных целей:/p p$ sudo kadmin.local -q “addprinc admin/admin”/p pAuthenticating as principal root/admin@GRINDER.COM with password./p pEnter password for principal “admin/admin@GRINDER.COM”:/p pRe-enter password for principal “admin/admin@GRINDER.COM”:/p pPrincipal “admin/admin@GRINDER.COM” created./p pAuthenticating as principal root/admin@GRINDER.COM with password./p pEnter password for principal “admin/admin@GRINDER.COM”:/p pRe-enter password for principal “admin/admin@GRINDER.COM”:/p pPrincipal “admin/admin@GRINDER.COM” created./p pbr /Для добавления принципиалов для KDC, admin сервера, своего компьютера , пользователей воспользуемся интерактивным режимом работы:/p p$ sudo kadmin.local -p admin/admin/p pAuthenticating as principal admin/admin with password./p p# зарегистрировались использовав принципиал администратора/p p# создаем принципиал компьютера, так как компьютер не будет вводить пароль, используем случайный пароль/p pkadmin.local: addprinc -randkey host/grinder.com/p pPrincipal “host/grinder.com@GRINDER.COM” created./p p# теперь пользователь/p pkadmin.local: addprinc grinder/p pEnter password for principal “grinder@GRINDER.COM”:/p pRe-enter password for principal “grinder@GRINDER.COM”:/p pPrincipal “grinder@GRINDER.COM” created./p p# добавим принципиал компьютера в файл keytab в котором хранятся собственные принципиалы/p pkadmin.local: ktadd host/grinder.com/p pEntry for principal host/grinder.com with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab./p pEntry for principal host/grinder.com with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab./p pИ так далее. Чтобы иметь возможность заходить удаленно на сервер с использованием Kerberos необхдимо создать файл .k5login (с точкой) в который вписать имя принципиал./p p$ echo grinder@GRINDER.COM ~/k5login/p h3 align="center"span style="font-size:85%;"Настраиваем рабочую станцию/span/h3 p class="MsoNormal" В состав обоих вариантов Kerberos входят утилиты, предназначенные для замены стандартных системых утилит вроде /bin/login. Настройки керберизации в разных дистрибутивах будут отличаться. Хотя бы потому что в большинтсве систем используется /sbin/init и достаточно в /etc/inittab заменить /bin/login на керберизированый /usr/bin/login, после чего при регистрации пользователя сначала будет идти обращение к Kerberos, а в случае неудаче к локальной базе /etc/passwd. В Ubuntu с 6.10 вместо /sbin/init используется новая система загрузки upstart, потому здесь немножечко все по-другому./p pДля настройки нам понадобятся пакеты krb5-clients, krb5-user и libpam-krb5. Файл /etc/krb5.conf берем с KDC. Затем приступаем к настройкам PAM. В каталоге /etc/pam.d необходимо создать файл common-krb5 такого содержания:/p pauth sufficient /lib/security/pam_krb5.so use_first_pass/p p class="MsoNormal" /p pВ самом конце файла /etc/pam.d/login есть строки описывающие методы аутентифкации.br /br /# Standard Un*x account and session/p p@include common-account/p p@include common-session/p p@include common-passwordbr /br /Перед этими строчками добавляем еще одну:/p p@include common-krb5br /br /И если регистрация в системе происходим в графическом менеджере: GDM в Ubuntu, KDM в KUbuntu, в файлах gdm и/или kdm поступаем аналогично. Кстати в репозитарии имеется пакет kredentials, после установки, которого в панели задач появится аплет с помощью которого можно управлять личными билетами. Установить его можно командой./p p$ sudo apt-get install kredentials/p pПосле чего ярлык для запуска найдете в меню K./p Нам удалось создать систему, которая будет надежно аутентифицировать пользователей. Регистрация пользователей и сервисов управляется с одного места. Пользователь успешно зарегистрировшийся в системе сможет без проблем попасть на любой разрешенный сетевой ресурс. Настройка поддержки Kerberos в различных сервисах это предмет отдельного разговора.br /br /div style="text-align: center;"div style="text-align: left;"источник :br //diva href="http://www.tux.in.ua/articles/217#more-217"span style="font-weight: bold; color: rgb(204, 102, 0);"www.tux.in.ua/span/abr //divbr /br /br /br /p align="center"a href="http://1proxy.blogspot.com/" target="_blank"FREE PROXY SERVERS/a/pbr /div align="center"a href="http://russianforum.com.ar/" target="_blank"Русский Форум в Аргентине/a/divbr /p align="center"a href="http://firefox-mozilla-free.blogspot.com/" target="_blank" title="для быстрой и безопасной навигации по сети интернет установите новую версию Mozilla Firefox!"img src="http://img-fotki.yandex.ru/get/5/gramnemo.b9/0_672e_57a2c773_L.jpg" border="0" height="60" width="468" //a/pbr /p align="center"a href="http://google-pack-software.blogspot.com/" target="_blank" title="Программы Google Pack - бесплатно !"img src="http://img-fotki.yandex.ru/get/9/gramnemo.b9/0_672c_99422050_L.jpg" border="0" height="60" width="468" //a/pdiv class="blogger-post-footer"MINT/div