Продовжуємо цикл статей про інтеграцію проксі-сервера Squid і Active Directory. Одним з найбільш важливих питань є прозора аутентифікація користувачів домену на проксі-сервері. У цій частині ми розповімо, як налаштувати аутентифікацію по протоколу Kerberos, яка дозволить використовувати єдину точку входу, коли користувач вводить логін і пароль один раз - при вході в систему.
У минулій частині ми вже торкалися цього питання, але повторимося: ми не бачимо ніякого практичного сенсу використовувати для роботи з Active Directory відмінні від Kerberos способи аутентифікації. Всі сучасні системи підтримують Kerberos, а знижувати безпеку системи заради потенційної сумісності з абстрактними системами, які можуть не підтримувати Kerberos, явно не слід.
Підготовка Active Directory
Перед тим, як налаштовувати підтримку Kerberos-аутентифікації на роутері, необхідно виконати ряд підготовчих дій в Active Directory. Перш за все заведемо службового користувача, в нашому випадку squid3.
Забороняємо зміну пароля користувачем і не обмежуємо термін його дії, останнє дуже важливо, тому що в противному випадку вам доведеться через деякий час не тільки змінити пароль службового користувача, але і заново виконати всі підготовчі дії.
Тепер створимо спеціальний keytab-файл, який містить ім'я Kerberos-принципала (ім'я хоста, користувача і домен) і ключ, створений на основі пароля. Надалі keytab-файл буде використовуватися squid для аутентифікації користувачів в AD. Відкриємо командний рядок і введемо наступну команду (дотримуючись регістр):На перший погляд команда досить складна. Розберемо її докладніше, ключ -princ позначає Kerberos-принципала і містить FQDN ім'я роутера і область Kerberos, яка збігається з ім'ям домена, але записується в верхньому регістрі, -mapuser і -pass ім'я користувача і пароль відповідно, -ptype - тип принципала і - out - ім'я та розташування keytab-файлу.
Якщо все зроблено правильно, то команда повинна відпрацювати без помилок.
Потім слід передати згенерований keytab-файл на роутер будь-яким доступним чином, наприклад, через WinSCP в домашню директорію користувача.Налаштування підтримки Kerberos в Ubuntu Server / Debian
Після того, як ми передали keytab-файл на роутер, його слід розмістити в надійному місці і обмежити доступ. Зрозуміло, що домашня директорія користувача не найкраще для цього місце. Так як працювати з ним буде squid, то логічно буде розташувати keytab-файл в папці з настройками проксі-сервера.
Потім змінимо власника і встановимо обмежені права на файл:
Для підтримки Kerberos встановимо пакет krb5-user:
При установці слід вказати область Kerberos за замовчуванням, введіть ім'я вашого домену в верхньому регістрі:
Першою йде секція libdefaults. яка містить параметри за замовчуванням, а саме область Kerberos (опція створюється автоматично) і keytab-файл:
Наступна секція realms описує області Kerberos, у нас вона одна - INTERFACE31.LAB
Тут все зрозуміло, єдиного пояснення вимагає опція admin_server. в її якості вказуємо контролер домену, виконуючий FSMO-роль PDC.
Остання секція зіставляє домени з областями Kerberos:
Зберігаємо файл. Тепер перевіримо роботу Kerberos, для цього виконаємо команду:
Якщо все зроблено правильно, ви повинні отримати повідомлення про успішну аутентифікації.
Видалимо отриманий квиток командою:
Налаштування Kerberos-аутентифікації в Squid
Перш за все слід "навчити" squid працювати з keytab-файлом, для цього створимо спеціальний файл настройок:
І внесемо в нього наступні рядки:
Ключ -d в першому рядку вказано для налагодження, переконавшись, що все працює як треба його слід прибрати, щоб уникнути надмірного роздування логів.
У секцію з елементами ACL додамо:
Даний елемент буде відповідати всім користувачам, які успішно пройшли Kerberos-аутентифікацію. Нижче, в секції зі списками доступу, рядок
зберігаємо зміни, перезавантажуємо сервер.
Тепер зайдемо на тому ж ПК локальним користувачем, замість доступу до мережі побачимо запрошення ввести логін і пароль:
Також заглянемо в /var/log/squid3/cache.log. сюди squid пише зневадження, в самому кінці рядка можна побачити, хто саме пройшов аутентифікацію і отримав доступ. Переконавшись, що все працює як треба, вимикаємо збір налагоджувальної інформації, прибравши ключ -d з рядка в /etc/squid3/squid.conf.