Серверы · 5 min read · Sep 23, 2025
Debian Squeeze, Squid, Kerberos/LDAP Аутентификация, Интеграция Active Directory и Cyfin Reporter
Debian Squeeze, Squid, Kerberos/LDAP Аутентификация, Интеграция Active Directory и Cyfin Reporter
Введение
Этот документ охватывает настройку прокси-сервера Squid, который будет бесшовно интегрироваться с Active Directory для аутентификации с использованием Kerberos с LDAP в качестве резервного варианта для пользователей, не аутентифицированных через Kerberos. Авторизация управляется группами в Active Directory. Это особенно полезно для клиентов Windows 7, которые больше не поддерживают NTLMv2 без изменения локальной политики компьютера. Он способен использовать белые и черные списки для доступа к сайтам и ограничений.
Для этого руководства используются следующие примеры - вы должны обновить любые разделы с доменом клиентов, именами хостов и IP-адресами, где это необходимо.
- Домен = example.local
- Подсеть = 192.168.0.0/24
- Прокси-сервер: IP = 192.168.0.26, ИМЯ ХОСТА = squidproxy.example.local
- Windows Server 1: IP = 192.168.0.1, ИМЯ ХОСТА = domaincontroller1.example.local
- Windows Server 2: IP = 192.168.0.10, ИМЯ ХОСТА = server2.example.local
Предполагается базовая установка Debian Squeeze, а также базовые навыки администрирования Debian. Предполагается использование vi в качестве текстового редактора.
Предварительные требования
Клиентские браузеры Internet Explorer должны иметь установленный флажок “Включить интегрированную аутентификацию Windows” в параметрах Интернета :: Расширенные настройки, а также включено автоматическое определение прокси - поищите это в Google, если не уверены. Все современные веб-браузеры поддерживают автоматическое определение прокси. Firefox и Chrome также поддерживают аутентификацию Windows.
Настройка DNS
Установите dnsutils:
apt-get install dnsutilsНа сервере DNS Windows добавьте новую запись A для имени хоста прокси-сервера и убедитесь, что также создана соответствующая запись PTR (обратный DNS) и работает. Проверьте, что прокси использует сервер DNS Windows для разрешения имен и обновите /etc/resolv.conf соответственно.
vi /etc/resolv.confsearch example.local
nameserver 192.168.0.1
nameserver 192.168.0.10Пинг внутреннего и внешнего имени хоста, чтобы убедиться, что DNS работает.
ping domaincontroller1.example.local -c 4 && ping google.com -c 4Проверьте, можете ли вы выполнить обратный поиск Windows Server и локального IP прокси из Windows DNS.
dig -x 192.168.0.1
dig -x 192.168.0.26Предупреждение: Если любой из запросов DNS не удался, не продолжайте, пока не будет исправлено, иначе аутентификация прокси не сработает.
Настройка NTP
Установите пакет ntp:
apt-get install ntpПоскольку Kerberos требует синхронизации времени с контроллерами домена Windows для аутентификации, мы настраиваем прокси для получения времени от них.
vi /etc/ntp.confНайдите следующий раздел и обновите серверы ntp по мере необходимости. Если у вас есть более одного контроллера домена или сервера NTP, вы можете добавить несколько строк.
# Вам действительно нужно поговорить с одним или двумя (или тремя) серверами NTP.
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.localЗатем перезапустите и протестируйте NTP.
invoke-rc.d ntp restart
tpq -pВы должны увидеть вывод, который относится к контроллерам домена и другим серверам NTP, которые обрабатываются в порядке их появления в конфигурационном файле.
Настройка Kerberos
Установите пакеты Kerberos:
apt-get install krb5-user libkrb53Просто примите значения по умолчанию, представленные в любом диалоговом окне debconf, так как мы их перезаписываем.
Настройте Kerberos.
cp /etc/krb5.conf /etc/krb5.conf.default
cat /dev/null > /etc/krb5.conf
vi /etc/krb5.confОтредактируйте файл, заменив переменные (выделенные) на домен и сервер клиента.
Предупреждение: В зависимости от версии ОС контроллеров домена Windows раскомментируйте соответствующий раздел Windows 200X и закомментируйте противоположный раздел.
Если у вас только один контроллер домена, удалите дополнительную запись “kdc” из раздела “[realms]”.
[libdefaults]
default_realm = EXAMPLE.LOCAL
dns_lookup_kdc = no
dns_lookup_realm = no
ticket_lifetime = 24h
default_keytab_name = /etc/squid3/PROXY.keytab
; для Windows 2003
default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; для Windows 2008 с AES
; default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
; permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
EXAMPLE.LOCAL = {
kdc = domaincontroller1.example.local
kdc = server2.example.local
admin_server = domaincontroller1.example.local
default_domain = example.local
}
[domain_realm]
.example.local = EXAMPLE.LOCAL
example.local = EXAMPLE.LOCALУстановка Squid 3
apt-get install squid3 ldap-utilsПримечание: Конфигурация Squid происходит после настройки msktutil.
Установка и запуск msktutil
Получите пакет msktutil и установите его.
cd /var/cache/apt/archives/
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules
dpkg -i msktutil_0.4-2_i386.deb
cdИнициируйте сеанс kerberos на сервере, чтобы msktutil мог использовать его для создания нашего объекта прокси в Active Directory, который будет использоваться для доступа.
kinit administratorВведите пароль администратора домена.
Он должен вернуться без ошибок. Вы можете увидеть, если вы успешно получили билет с:
klistТеперь мы настраиваем прокси в AD с помощью принципов службы, запустив msktutil (обновите выделенные значения в соответствии с вашей сетью).
Предупреждение: Вы не должны перемещать объект из OU, в котором вы используете msktutil для его создания.
msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \
--upn HTTP/ squidproxy.example.local --server domaincontroller1.example.local --verboseЕсли вы используете домен Server 2008, добавьте “–enctypes 28” в конце команды.
msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \
--upn HTTP/ squidproxy.example.local --server domaincontroller1.example.local --verbose --enctypes 28Установите разрешения на keytab, чтобы squid мог его читать.
chgrp proxy /etc/squid3/PROXY.keytab
chmod g+r /etc/squid3/PROXY.keytabНа сервере Windows сбросьте учетную запись компьютера в AD, щелкнув правой кнопкой мыши на компьютере SQUIDPROXY и выбрав “Сбросить учетную запись”, затем запустите msktutil следующим образом, чтобы убедиться, что keytab обновляется, как ожидалось, и что keytab правильно используется msktutil из /etc/krb5.conf.
Сначала перезагрузите прокси, чтобы очистить билеты kerberos, сгенерированные командой kinit, затем выполните следующее:
msktutil --auto-update --verboseЕсли keytab не найден, попробуйте добавить “-k /etc/squid3/PROXY.keytab” к команде, чтобы увидеть, сработает ли это, а затем устраните неполадки, пока не будет решено, иначе пользователи не смогут аутентифицироваться с помощью Squid.
Добавьте следующее в cron, чтобы он мог автоматически обновлять учетную запись компьютера в Active Directory, когда она истекает (обычно около 30 дней). Я перенаправляю это через logger, чтобы я мог видеть любые ошибки в syslog, если это необходимо. Как указано, msktutil использует файл /etc/krb5.conf по умолчанию для своих параметров, поэтому будьте внимательны, если решите внести какие-либо изменения в него.
Переменные SHELL и PATH предназначены для обеспечения правильной работы cron, измените это, если вы знаете, что делаете.
crontab -eSHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# м ч дом мон дн команда
00 4 * * * msktutil --auto-update --verbose | logger -t msktutilGet new posts in your inbox
No spam. Unsubscribe anytime.