Прикручиваем SQUID в домен Win2012 - Kerberos-аутентификация

Конфигурирование прокси-сервера (Установка, настройка SQUID)
Ответить
Аватара пользователя
Роман Торопов
Администратор
Сообщения: 134
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Прикручиваем SQUID в домен Win2012 - Kerberos-аутентификация

Сообщение Роман Торопов » 29 янв 2017, 10:30

На прозрачном проси не будет работать эта аутентификация
Прежде всего заведем служебного пользователя, в нашем случае squid (оригинальный текст)

Код: Выделить всё

Имя: squid
Имя пользователя: squid @имя.домена
Имя входа пользователя: ИМЯ.ДОМЕНА\ squid
далее
Запрещаем смену пароля пользователем и не ограничиваем срок его действия,

Код: Выделить всё

вводим пароль
Теперь создадим специальный keytab-файл, который содержит имя Kerberos-принципала (имя хоста, пользователя и домен) и ключ, созданный на основе пароля.
В дальнейшем keytab-файл будет использоваться squid (на компьютере gw01.имя.домена) для аутентификации пользователей в AD.
Откроем командную строку и введем следующую команду (соблюдая регистр):

Код: Выделить всё

ktpass -princ HTTP/gw01.имя.домена@ИМЯ.ДОМЕНА -mapuser squid -pass пароль -ptype KRB5_NT_PRINCIPAL -out C:\squid.keytab
Если все сделано правильно, то команда должна отработать без ошибок.
Затем следует передать сгенерированный keytab-файл на комп со squid-ом любым доступным образом,
например, через WinSCP в домашнюю директорию пользователя.

Аватара пользователя
Роман Торопов
Администратор
Сообщения: 134
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Re: Прикручиваем SQUID к AD - Kerberos-аутентификация

Сообщение Роман Торопов » 29 янв 2017, 10:54

Настройка поддержки Kerberos в Ubuntu Server / Debian

После того, как мы передали keytab-файл, его следует разместить в надежном месте и ограничить доступ.
Понятно, что домашняя директория пользователя не самое лучшее для этого место.
Так как работать с ним будет squid, то логично будет расположить keytab-файл в папке с настройками прокси-сервера.

Код: Выделить всё

mv ~/squid.keytab /etc/squid
Затем изменим владельца и установим ограниченные права на файл:

Код: Выделить всё

chown proxy:proxy /etc/squid/squid.keytab
chmod 640 /etc/squid/squid.keytab
Для поддержки Kerberos установим пакет krb5-user:

Код: Выделить всё

apt-get install krb5-user
Теперь откроем файл /etc/krb5.conf, он содержит очень много ненужных параметров, поэтому удаляем или комментируем все лишнее, у вас должно остаться только то, что будет приведено ниже.

Первой идет секция libdefaults, которая содержит параметры по умолчанию,
а именно область Kerberos (опция создается автоматически) и keytab-файл:

Код: Выделить всё

[libdefaults]
          default_realm = ИМЯ.ДОМЕНА
          default_keytab_name = /etc/squid/squid.keytab
Следующая секция realms описывает области Kerberos, у нас она одна

Код: Выделить всё

[realms]
        ИМЯ.ДОМЕНА = {
              kdc = dc01.имя.домена
              kdc = dc02.имя.домена
              admin_server = dc01.имя.домена
              default_domain = имя.домена
        }
Здесь все понятно, единственного пояснения требует опция admin_server,
в ее качестве указываем контроллер домена, исполняющий FSMO-роль PDC.

Последняя секция сопоставляет домены с областями Kerberos:

Код: Выделить всё

[domain_realm]
          .имя.домена = ИМЯ.ДОМЕНА
          имя.домена = ИМЯ.ДОМЕНА
Сохраняем файл. Теперь проверим работу Kerberos, для этого выполним команду:

Код: Выделить всё

kinit -kV -p HTTP/gw01.имя.домена
Если все сделано правильно, вы должны получить сообщение об успешной аутентификации.

Аватара пользователя
Роман Торопов
Администратор
Сообщения: 134
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Re: Прикручиваем SQUID к AD - Kerberos-аутентификация

Сообщение Роман Торопов » 29 янв 2017, 11:04

Удалим полученный билет командой:

Код: Выделить всё

kdestroy
Настройка Kerberos-аутентификации в Squid
Прежде всего следует "научить" squid работать с keytab-файлом, для этого создадим специальный файл настроек:

Код: Выделить всё

touch /etc/default/squid
И внесем в него следующие строки:

Код: Выделить всё

KRB5_KTNAME=/etc/squid/squid.keytab
export KRB5_KTNAME
Откроем конфигурационный файл /etc/squid/squid.conf, найдем три строки, начинающиеся с auth_param negotiate,
раскомментируем и приведем их к следующему виду:

Код: Выделить всё

auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -d -s HTTP/gw01.имя.домена
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive on
Ключ -d в первой строке указан для отладки, убедившись, что все работает как надо его следует убрать, чтобы избежать чрезмерного раздувания логов.

В секцию с элементами ACL добавим:

Код: Выделить всё

acl auth proxy_auth REQUIRED
Данный элемент будет соответствовать всем пользователям, успешно прошедшим Kerberos-аутентификацию.
если дополнительно к аутентификации хотите добавить своих правил,то

Код: Выделить всё

acl имя_правила proxy_auth "/путь/к/файлу/списка/пользователей"
в этом файле пишим список коменных пользователей в формате:

Код: Выделить всё

имя_пользователя@ИМЯ.ДОМЕНА
имя2_пользователя@ИМЯ.ДОМЕНА
Ниже, в секции со списками доступа, строку

Код: Выделить всё

http_access allow localnet 
меняем на:

Код: Выделить всё

http_access allow auth
сохраняем изменения, перезагружаем сервер.

Аватара пользователя
Роман Торопов
Администратор
Сообщения: 134
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

Re: Прикручиваем SQUID к AD - Kerberos-аутентификация

Сообщение Роман Торопов » 29 янв 2017, 11:09

Чтобы не бегать по компам и прописывать в свойствах обозревателя прокси, gw01.имя.домена:3128 и исключения локальный адресов,
в групповых политиках, для пользователей, в реестре, указываем, (оригинальный текст)

Код: Выделить всё

WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable","00000001","REG_DWORD") 
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyServer","gw01.имя.домена:3128","REG_SZ") 
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyOverride","192.168.0.*;<local>","REG_SZ") 
Изображение

Ответить