Серверы · 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.conf
search 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 -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# м ч  дом мон дн   команда
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.