Настроить squid и проверить работоспособность без Kerberos с доступом по IP, либо basic-аутентификация.
Данный пункт был реализован согласно приведенных в заголовке ссылок – ранее. Но есть некоторые нюансы конфигурирования сетевой подсистемы для корректной работы с Kerberos. Необходимо обязательно правильно настроить файлы /etc/hosts, /etc/hostname, /etc/resolv.conf, ну и конечно /etc/network/interfaces. (приведенные настройки рассмотрены для Debian/Ubuntu, но если учесть особенности другого дистрибутива, то общая схема настройки будет вполне пригодна)
squid ~ # cat /etc/hosts 10.0.0.10 squid.DOMAIN.local squid 127.0.0.1 localhost # для Kerberos советуют указывать именно такой порядок # то есть первой строкой именно 10.0.0.10 (внешний IP, не loopback) squid ~ # cat /etc/hostname squid squid ~ # cat /etc/resolv.conf domain DOMAIN.local search DOMAIN.local nameserver 10.0.0.4 squid ~ # cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.0.10 netmask 255.255.0.0
1. Предварительная настройка DNS и контроллера домена.
Для корректной работы Kerberos необходимо иметь корректные прямые (A) записи и соответствующие обратные (PTR) записи для сервера squid.
2. Настройка синхронизации времени
Настройку синхронизации времени я описывал в статье о NFS в Windows AD. Здесь лишь кратко скажу, что я использую для этих целей NTP-сервер (пакет ntp) и следующий конфиг:
root@nfsd:~# cat /etc/ntp.conf server dc.domain.local restrict default ignore restrict dc.domain.local restrict 127.0.0.1 nomodify notrap
3. Настроить и проверить Kerberos на идентификацию пользователя без ключевого файла krb5.keytab.
Данный шаг так же описан в статье о NFS в Windows AD, здесь он абсолютно идентичен.
4. Создать ключевой файл krb5.keytab на KDC (контроллер домена Windows 2008 R2)
Далее, необходимо создать кейтаб-файл на контроллере домена (файл ключей, который будет использоваться для взаимодействия с Active Directory). Вся необходимая теория опять же есть в статье о NFS – создание keytab. Для squid команда создания keytab файла будет выглядеть так:
5. Настроить и проверить работу Kerberos для авторизации через krb5.keytab и корректность созданного keytab-файла.
Допустим, лежит наш keytab в /etc/squid3/squid.keytab, давайте проверим корректность работы данного кейтаба с текущей ОС:
Настройка squid на проверку подлинности через Kerberos в домене Windows 2008 R2.
Для того чтобы сквид знал, какой кейтаб использовать, ему нужно указать, где он лежит. Для этого нужно создать и заполнить файл /etc/default/squid3 следующим содержимым (задать переменную, хранящую путь к кейтаб файлу, которую читает сквид):
squid ~ # cat /etc/default/squid3 KRB5_KTNAME=/etc/squid3/squid.keytab export KRB5_KTNAME
Так же, необходимо вsquid.conf настроить схему аутентификации, для этого нужно добавить следующие строки:
Настроить веб-браузеры на Kerberos аутентификацию в squid.
Собственно, настройка браузеров для SQUID заключается в использовании FQDN-имени в адресе прокси-сервера вместо IP-адреса. То есть делаем все по инструкции Настройка адреса прокси через GPO в Windows Server 2008 R2, но адрес прокси указываем не 10.0.0.10, а squid.domain.local.
После попытки доступа мы видим в логе access.log заветные строки:
Digest – метод аутентификации в squid
Этот метод более защищен, нежели basic-аутентификация, т.к. использует MD5-шифрование для отправки пароля через сеть. Схема
работы
взаимодействия аналогична basic, за тем лишь исключением, что на 2-ом и последующих шагах в ответ сервера и ответы клиента в поля аутентификации добавляются некоторые дополнительные параметры и случайные значения, которые используются для шифрования пароля.
утилита htdigest
, которая находится в
пакете apache2-utils
. Используется хелпер
/usr/lib/squid3/digest_pw_auth
Ntlm – метод аутентификации в squid
Про протокол NTLM и его особенности и недостатки я рассказывал в первой статье о samba. В данной теме особенно делать упор на этот протокол не буду, ибо – небезопасен. Для проверки подлинности используется хелпер /usr/lib/squid3/ntlm_auth. Данный вид аутентификации работает в браузерах IE, Mozilla, Opera, Crome.
Squid и ntlm-авторизация через active directory [rtzra’s hive]
Первое что нужно сделать – это присоединить наш сервер к домену Active Directory. Для этого в обязательном порядке необходимо синхронизировать время на всех серверах.
Остался последний этап – отображать красивую статистику посещений сайтов пользователями. Самый простой и красивый инструмент для этого – LightSquid.
Очень хочется чтобы в отчете фигурировало полное ФИО пользователя, а не доменное имя или IP-адрес. Для этого нужно заменить оригинальный файл /usr/share/lightsquid/ip2name/ip2name.squidauth следующим:
#contributor: esl #specialy for squid with turned on user authentication #simple version use strict; use warnings; use Net::LDAP; use Encode; my $ldap; my $message; my %hDisplayName; sub StartIp2Name() { my $server = "ldap://dc.mydomain.ru"; $ldap = Net::LDAP->new( $server ); return if(!defined $ldap); $message = $ldap->bind(q(MYDOMAIN.RULightSquid), password => "PASSWORD"); } sub Ip2Name($$$) { # $Lhost,$user,$Ltimestamp my $Lhost=shift; my $user =shift; $user =URLDecode($user); #decode user name return $Lhost if ($user eq "-"); return $user if (!defined $ldap); return $user if ($message->code()); if (!defined $hDisplayName{$user}) { my $result = $ldap->search( base => "dc=MYDOMAIN,dc=RU", filter => "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" . $user . "))", ); my $first_entry = $result->entry(0); if (!defined $first_entry) { return $Lhost; } my $pure_displayName = $first_entry->get_value("displayName"); $pure_displayName =~ s/ /_/g; Encode::from_to($pure_displayName, 'utf-8', 'windows-1251'); $hDisplayName{$user}=$pure_displayName; } return $hDisplayName{$user}; } sub StopIp2Name() { return if (!defined $ldap); $message = $ldap->unbind; } #warning !!! 1;
В этом файле исправляем нижеуказанные строки на свои:
... my $server = "ldap://dc.mydomain.ru"; ... $message = $ldap->bind(q(MYDOMAIN.RULightSquid), password => "PASSWORD"); ... base => "dc=MYDOMAIN,dc=RU", ...
Теперь в /etc/lightsquid/lightsquid.cfg включаем преобразование логина в ФИО:
$ip2name="squidauth"
Запускаем /usr/share/lightsquid/check-setup.pl и если все хорошо, можно запускать /usr/share/lightsquid/lightparser.pl
В папке /var/lib/lightsquid/report должны появиться отчеты, которые можно поглядеть по адресу: http://192.168.1.1/lightsquid/
Настройка internet explorer через gpo
Желательно на всех машинах локальной сети обновить Internet Explorer до 7 версии, ибо с IE 6 доменная проверка подлинности не будет работать. Об этом Mictosoft официально . Настройка параметров прокси сервера задается в объекте групповой политики в разделе Конфигурация пользователя – Политики – Конфигурация Windows – Настройка Internet Explorer – Подключение – Параметры прокси-сервера: Т.к. данная настройка расположена в конфигурации пользователя, то и применяться будет к пользователям, расположенным в текущем подразделении OU, к которому будет применен Объект групповой политики.
Настройка ntlm¶
В разделе Службы -> Веб-прокси -> Аутентификация NTLM, на вкладке Общие настройки, установите флаг Включить аутентификацию NTLM.
В разделе Службы -> Веб-прокси -> Аутентификация NTLM, на вкладке Присоединить домен,
В поле Имя администратора AD, укажите имя учетной записи администратора домена.
В поле Пароль администратора AD, укажите пароль для учетной записи администратора домена.
Нажмите на кнопку Присоединить домен.
Для проверки настройки, на контроллере домена AD, через оснастку Пользователи и компьютеры Active Directory, в контейнере Computers, проверьте существование аккаунта для Вашего устройства TING. В нашем случае, созданный аккаунт называется TINGA-NTLM.
Настройка компьютера пользователя¶
На компьютере пользователя задайте явные настройки на прокси, аналогично тому, как показано на скриншоте:
Настройка общих параметров¶
Пройдите в раздел Система -> Настройки -> Общие настройки.
В поле Имя хоста укажите PQDN DNS-имя устройства TING (в нашем примере, FQDN-имя – это tinga.dom.loc, а PQDN-имя – это tinga).
В поле Домен укажите полное DNS-имя домена (в нашем примере, домен называется dom.loc).
В поле DNS-серверы, укажите IP-адрес доменного DNS-сервера. В нашем примере, это IP-адрес 192.168.137.2.
В поле Настройки DNS-сервера, установите флаг напротив опции Не используйте перенаправляющий DNS-сервер или DNS-преобразователь в качестве DNS-сервера для межсетевого экрана
Настройка сетевого времени¶
Настройка времени на устройстве производится в рамках работы мастера первоначальной настройки, который доступен в разделе Система -> Мастер.
Настройка устройства traffic inspector next generation¶
Настройка общих параметров¶
Пройдите в раздел Система -> Настройки -> Общие настройки.
В поле Имя хоста укажите PQDN DNS-имя устройства TING (в нашем примере, FQDN-имя – это tinga.dom.loc, а PQDN-имя – это tinga).
В поле Домен укажите полное DNS-имя домена (в нашем примере, домен называется dom.loc).
В поле DNS-серверы, укажите IP-адрес доменного DNS-сервера. В нашем примере, это IP-адрес 192.168.137.2.
В поле Настройки DNS-сервера, установите флаг напротив опции Не используйте перенаправляющий DNS-сервер или DNS-преобразователь в качестве DNS-сервера для межсетевого экрана
Настройки веб-прокси¶
В разделе Службы -> Веб-прокси -> Администрирование, на вкладке Основные настройки прокси, установите флаг Включить прокси, если он еще не установлен.
Установка плагина os-proxy-ntlm¶
Пройдите в раздел Система -> Прошивка -> Обновления. На вкладке Плагины нажмите на кнопку напротив плагина os-proxy-ntlm для его установки.
После установки плагина os-proxy-ntlm, в разделе Службы -> Веб-прокси появляется подраздел Аутентификация NTLM.