
Захист мережевого сервісу (засобами ос Windows 2003 Server, oc Linux)
Мета: навчитися встановлювати і налаштовувати мережеву систему аутентифікації користувачів Kerberos на прикладі Linux Ubuntu.
Теоретичні відомості
Розглянемо принцип роботи системи. Протокол описаний у RFC 1510 (tools.ietf.org/html/rfc1510) і RFC 4120 (tools.ietf.org/html/rfc4120). Нині клієнтські компоненти для роботи з Kerberos є у більшості сучасних операційних систем. Для підтвердження достовірності використовується довірена третя сторона, яка володіє секретними ключами усіх суб'єктів і що бере участь в попарній перевірці достовірності.
Коли клієнт намагається отримати доступ до ресурсу, він посилає запит, що містить відомості про себе і про запрошувану послугу. Увесь процес відбувається в три етапи, у відповідь контролер Kerberos (Key Distribution Center, KDC) видає квиток, що засвідчує користувача TGT (ticketgranting ticket). Кожен квиток має обмежений термін життя, що знижує інтерес до його перехоплення. Тому однією з вимог до системи Kerberos є синхронізація часу між усіма учасниками. При подальшому зверненні до інших сервісів вводити пароль вже не треба.
Кожен учасник системи Kerberos як служба, так і користувач іменуються принципіал (principial). Кожен принципіал має ім'я і пароль. Типове ім'я принципіалу виглядає так root/admin@GRINDER.COM, що означає ім'я (primary name) root, характеристику (instance), який належить сектору GRINDER.COM. Такий підхід дозволяє розрізняти декілька служб, що працюють на одному комп'ютері, і серед однотипних служб вибирати потрібну. Уся схема роботи від користувача прихована. При зверненні до ресурсу він, як і раніше, вводить тільки свій логін і пароль.
Для зручності комп'ютери можуть бути об'єднані в сектори (realms), до речі в деякій літературі realms перекладають як домен. Усі принципіали зберігаються у базі даних сервера Kerberos. У мережі може бути використано декілька KDC, один з яких є основним (master). На master KDC встановлюється адміністративний сервер kadmind керівник політиками. Усе, звичайно, не так просто, і на порядок або два складніше, але цього вистачає для розуміння, того що ми нааштовуватимемо далі.
Хід роботи
1. Встановлюємо ntp
Перш ніж встановити Kerberos, необхідно налаштувати службу синхронізації часу (NTP – Network Time Protocol), без якої не можлива нормальна робота Kerberos.
$ sudo apt-get install ntp
Всі налаштування виконуються в одному файлі.
$ sudo mcedit /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# сервери, з якими будемо синхронізовувати час
server ntp.ubuntulinux.org
server pool.ntp.org
server time.nist.gov
# використовуємо локальний час у випадку невдачі
server 127.127.1.0
fudge 127.127.1.0 stratum 13
restrict default kod notrap nomodify nopeer noquery
# локальні користувачі можуть здійснювати запит часу
restrict 127.0.0.1 nomodify
# вмикаємо broadcast
broadcast 192.168.1.255
# прослуховування часу в мережі
disable auth
broadcastclien
Перезапускаємо сервер.
$ sudo /etc/init.d/ntp restart
* Stopping NTP server ntpd [ OK ]
* Starting NTP server ntpd [ OK ]
Тепер синхронізуємо час.
$ ntpq -p -c as && echo && ntptrace