У squid3 існує підтримка negotiate аутентифікації за допомогою kerberos. Для цього необхідно при установці squid відзначити опцію AUTH _KERB. як показано на малюнку вибору опцій нижче. Так само, мною залишилася відзначена можливість аутентифікації по ldap (опція AUTH _LDAP), для визначення належності користувачів до тієї чи іншої групи, яка існує в AD.
Тож почнемо. На момент написання статті маємо наступне:
Зробимо установку squid:
Відзначте необхідні опції:
І зробіть власне установку:
Всі необхідні хелпери для аутентифікації ви виявите по шляху:
Тепер необхідно провести деякі важливі підготовчі роботи.
Хоча все описане далі справедливо і для версії Heimdal 1.1.0 на FreeBSD 8.4, що особисто мною перевірено.
Обов'язково приведіть мережеві настройки свого сервера FreeBSD до виду:
Перевірте висновок команди hostname:
Якщо висновок вас не влаштує, внесіть в /etc/rc.conf наступний рядок:
DNS вашого домену повинен мати пряму - A і зворотний - PTR запису, що описують ваш сервер FreeBSD, на якому ви налаштовуєте squid (перевіряємо запитом до одного з dns-серверів):
Думаю, що зайве, але все ж: ваш домен повинен мати синхронізацію з єдиним сервером часу - і dc, і сервер FreeBSD, і клієнтські комп'ютери користувачів.
Останнє припущення: на вашому сервері FreeBSD немає інших працюючих сервісів, що використовують kerberos.
Наведемо настройку файлу /etc/krb5.conf до наступного вигляду (джерело - wiki.squid-cache.org):
Йдемо на dc, запускаємо cmd.exe і вводимо чарівні символи в один рядок:
Довідку по даній команді ви отримаєте по ktpass -. Зверніть увагу на синтаксис в даній команді. Мені довелося багато експериментувати, перш ніж вдалося зробити працездатний кейтаб. Він був отриманий саме з даними ключами.
Висновок роботи команди ktpass для отримання кейтаба:
Зверніть увагу, ім'я користувача squid для входу в домен поміняється на:
Тепер перемістіть (рекомендується зробити це "секурно") отриманий кейтаб з домен-контроллера на ваш сервер FreeBSD і покладіть в каталог / usr / local / etc / squid. або в місце, яке ви вказали в вашому /etc/krb5.conf. Врахуйте одне, якщо ви не позначили файл кейтаба, як це зробив я, буде прийматися до уваги кейтаб за замовчуванням, який повинен мати ім'я і розташовуватися: /etc/krb5.keytab.
Тепер ви можете спробувати отримати квиток ініціалізації від вашого домену. Робиться це командою:
Якщо на цьому етапі у вас нічого не вийшло (видає будь-які помилки), в подальшому у вас нічого не вийде. Перевірено ... :(
Так як даний квиток нам більше не знадобиться, знищіть його командою kdestroy і перевірте:
Нарешті, нам необхідно вказати squid'у, де він повинен брати кейтаб. Це дуже важлива опція для запуску! Помістіть в ваш /etc/rc.conf наступні рядки:
- де squid_krb5_ktname - файл, вказаний вами у вашому /etc/krb5.conf. куди ви поклали отриманий з домен-контроллера кейтаб.
Тепер нарешті можна провести запуск squid і здійснити моніторинг його роботи:
Наостанок приведу свій повний робочий файл конфігурації кешируючого сервера squid (всі лапки - прямі "):
Basic аутентифікація використовується мною для доступу до інтернету через squid користувачів з комп'ютерів не входять в домен. На таких комп'ютерах необхідно ввести логін і пароль якогось доменного користувача.
Одне важливе зауваження: в настройках браузера в якості проксі-сервера тепер необхідно вказувати не його ip, а FQDN (Fully Qualified Domain Name - «повністю певне ім'я домену»). Тобто НЕ 192.168.0.3, а squid.domain.ru. Щоб здійснити дану настройку через AD, зробіть так:
Відкрийте оснастку Group Policy Management. виберіть необхідну Group Policy Objects (в моєму випадку - test), Edit -> Конфігурація користувача -> Конфігурація Windows -> Налаштування Internet Explorer -> Підключення та внесіть свої настройки (squid.domain.ru, порт 3128):
Ось тепер - все!
P.S. у вас можуть виникнути труднощі з доступом до інтернету при kerberos аутентифікації з комп'ютерів під управлінням Windows XP. Так, таких в моїй мережі поки що теж не бракує. Справа в тому, що навіть при наявності в мережі NTP-сервера для синхронізації часу всіх пристроїв, вона (синхронізація) не виконується належним чином на Windows XP. Microsoft благополучно припинила підтримку цієї операційної системи, тому оновлення timezone для неї не було випущено після останнього закону про перехід на "зимовий час" в Росії. Щоб виправити це непорозуміння, вам необхідно вручну переставити тимчасову зону. Наприклад для MSK виставити у властивостях дати і часу зону для Калінінграда (GMT +03: 00):