Debian Squeeze, Squid, Kerberos/LDAP аутентификация, интеграция Active Directory и Cyfin Reporter

Этот документ содержит описание настройки прокси Squid который легко интегрируются с Active Directory для проверки подлинности с использованием Kerberos с LDAP для пользователей, не идентифицирован через Kerberos. Решение находится в добавлнии группы в Active Directory. Это особенно полезно для Windows 7 клиентов, которые уже не поддерживают NTLMv2 без изменения политики локального компьютера. Он может использовать белые и черные для доступа к сайту.

В этом руководстве используются следующие параметры. Вы должны изменить их, если их значения отличаются от ваших:

  • Domain = example.local
  • Subnet = 192.168.0.0/24
  • Прокси-сервер: IP = 192.168.0.26, HOSTNAME = squidproxy.example.local
  • Windows Server 1: IP = 192.168.0.1, HOSTNAME = domaincontroller1.example.local
  • Windows Server 2: IP = 192.168.0.10, HOSTNAME = server2.example.local

Предполагается наличие установленной Debian Squeeze, а также базовых навыков администрирования Debian.

Предпосылки

Клиентский Internet Explorer должен иметь включенными галочки "Включить интегрированную проверку подлинности Windows"  в Internet Options: Дополнительные параметры, а также обнаружение прокси: Auto - Google. Все современные браузеры будут поддерживать автоматическое обнаружение прокси. Firefox и Chrome также поддерживают проверку подлинности Windows.

Конфигурация DNS

Установить dnsutils:

apt-get install dnsutils

В Windows DNS сервер добавить новые записи запись для хоста прокси-сервера и обеспечить соответствующие PTR (обратная DNS) запись также создается и работает. Убедитесь, что прокси-сервер с помощью сервера Windows DNS для разрешения имен и обновление /etc/resolv.conf соответственно.

vi /etc/resolv.conf

search example.local
nameserver 192.168.0.1
nameserver 192.168.0.10

Ping внутренних и внешних хоста для обеспечения 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-сервера, вы можете добавить несколько строк.

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.local

Затем перезагрузите и тестирования NTP.

invoke-rc.d ntp restart
ntpq -p

Вы должны увидеть результат, который ссылается на контроллеры домена и других серверов NTP, которые обрабатываются в том порядке, в котором они появляются в конфигурационном файле.

Настройка Kerberos

Установить Kerberos:

apt-get install krb5-user libkrb53

Просто примите значения по умолчанию.

Настройка Kerberos.

cp /etc/krb5.conf /etc/krb5.conf.default
cat /dev/null > /etc/krb5.conf
vi /etc/krb5.conf

Отредактируйте файл заменяя переменные (выделено) с областью клиента и сервера.

Внимание: В зависимости от ваших контроллеров домена Windows Версия ОС раскомментируйте соответствующие Windows 200x разделы и закомментируйте другие.

Если у вас есть только один контроллер домена удалить дополнительные "KDC" запись "[сфер]" раздела.

[libdefaults]
        default_realm = EXAMPLE.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/PROXY.keytab
; for 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
; for Windows 2008 with 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 -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 Server сброса учетной записи компьютера в AD щелкнув правой кнопкой на SQUIDPROXY компьютер и выберите "Переустановить учетную запись", а затем запустить msktutil следующим образом, чтобы обеспечить keytab обновляется, как ожидалось, и что keytab в настоящее время источников по msktutil от /etc/krb5.conf правильно.

Перезагрузка прокси-первых, чтобы очистить Kerberos билеты порожденных Kinit команду запустить следующее:

msktutil --auto-update --verbose

Если keytab не найден попробуйте добавить "-к / etc/squid3/PROXY.keytab" в команду, чтобы увидеть, работает ли он, а затем до устранения неполадок устранена, или пользователи не смогут аутентифицироваться Squid.

Добавьте следующее в хрон, чтобы он мог автоматически обновляет учетную запись компьютера в Active Directory, когда время истекает (обычно около 30 дней). Я трубу через регистратора, таким образом я вижу какой-либо ошибки в системный журнал, если необходимо. Как заявил msktutil использует по умолчанию файл /etc/krb5.conf для его paramaters так что надо знать о том, что если вы решите делать какие-либо изменения в нем.

SHELL и PATH переменных существуют, чтобы обеспечить хрон работает правильно изменить это, если вы знаете, что делаете.

crontab -e

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil

Настройка Squid

Для того, чтобы использовать наши избыточные LDAP доступа и разрешений с помощью групп безопасности в Active Directory, нам необходимо создать и запись с соответствующими разрешениями для поиска активных атрибутов Directory. Squid будет использовать эту учетную запись, чтобы предоставить пользователям доступ.

В Active Directory создать пользователя с именем "Squid Proxy" с [email protected] имя пользователя и пароль отметить вниз и заменить слово "squidpass" ниже с вашим паролем.

Обеспечить следующих условий при создании учетной записи.

  • Потребовать смену пароля при следующем входе Un-тикали
  • Пользователь не может изменить пароль Ticked
  • Срок действия пароля не Ticked
  • Отключить учетную запись Un-тикали

По умолчанию счет кальмар не сможет запросить "memberOf" атрибут в AD. Выберите верхний уровень вашего домена Active Directory в активной директории пользователей и компьютеры, щелкните правой кнопкой мыши на нем и выберите Свойства, вкладка Безопасность, добавить кальмары пользователя и дать ему разрешение на чтение (должно происходить по умолчанию) и дать ему следующим образом: "Этот объект и всех дочерних объектов ", перейдя в дополнительные параметры.

Создайте следующие группы безопасности с описанием в Active Directory и добавлять пользователей в соответствующие группы - если пользователь не является частью группы, которую они смогут только для доступа к сайтам в whitelistsites ACL.

Члены Интернет-пользователи не смогут получить доступ к сайтам в blocksites ACL.

  • Интернет-пользователи | Описание: Члены этой группы могут получить доступ к Интернету. Доступ регистрируется с сайта ограничений
  • Интернет-пользователи Полный Вход | Описание: Члены этой группы могут получить доступ к Интернету. Доступ регистрируется с полным доступом сайт
  • Интернет-пользователи Полный NoLog | Описание: Члены этой группы могут получить доступ к Интернету. Доступ не вошел в систему с полным доступом сайт

Затем мы создали кальмаров и это связано конфигурационных файлов.

Squid запуска

Добавить следующую конфигурацию /etc/default/squid3 (этот файл не существует по умолчанию).

vi /etc/default/squid3

KRB5_KTNAME=/etc/squid3/PROXY.keytab
export KRB5_KTNAME

squid.conf

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default
cat /dev/null > /etc/squid3/squid.conf
vi /etc/squid3/squid.conf

Обновление переменной кэша менеджера с адресом электронной почты лица, ответственного за прокси-сервером.

Изучение и обновления следующий текст внимательно, заменив пример содержания (выделено) с конфигурацией сети - если вы что-то неправильно прокси работать не будет.

####### /etc/squid3/squid.conf Configuration File #######
####### cache manager
cache_mgr [email protected]
####### kerberos authentication
auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -d -s HTTP/squidproxy.example.local
auth_param negotiate children 10
auth_param negotiate keep_alive on
####### provide access via ldap for clients not authenticated via kerberos
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R \
        -b "dc=example,dc=local" \
        -D squid@example.local \
        -w "squidpass" \
        -f sAMAccountName=%s \
        -h domaincontroller1.example.local
auth_param basic children 10
auth_param basic realm Internet Proxy
auth_param basic credentialsttl 1 minute
####### ldap authorizations
# restricted proxy access logged
external_acl_type internet_users %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D squid@example.local \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
# full proxy access no logging
external_acl_type internet_users_full_nolog %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D squid@example.local \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full NoLog,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
# full proxy access logged
external_acl_type internet_users_full_log %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
        -b "dc=example,dc=local" \
        -D squid@example.local \
        -w "squidpass" \
        -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full Log,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
        -h domaincontroller1.example.local
####### acl for proxy auth and ldap authorizations
acl auth proxy_auth REQUIRED
# format "acl, aclname, acltype, acltypename, activedirectorygroup"
acl RestrictedAccessLog external internet_users Internet\ Users
acl FullAccessNoLog external internet_users_full_nolog Internet\ Users\ Full\ NoLog
acl FullAccessLog external internet_users_full_log Internet\ Users\ Full\ Log
acl whitelistsites url_regex -i "/etc/squid3/whitelistsites.txt"
acl blockedsites url_regex -i "/etc/squid3/blockedsites.txt"
####### squid defaults
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
####### enforce auth: order of rules is important for authorization levels
no_cache deny whitelistsites
http_access allow whitelistsites
http_access allow FullAccessNoLog auth
http_access allow FullAccessLog auth
http_access deny blockedsites
http_access allow RestrictedAccessLog auth
####### logging
# don't log whitelistsites, FullAccessNoLog
access_log /var/log/squid3/access.log squid !whitelistsites !FullAccessNoLog
####### squid defaults
http_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

touch /etc/squid3/whitelistsites.txt
touch /etc/squid3/blockedsites.txt
invoke-rc.d squid3 restart

Автонастройка прокси

Установите Apache2:

apt-get install apache2

Добавить конфигурации Apache2 определить формат файла конфигурации прокси-скрипт.

vi /etc/apache2/conf.d/wpad.dat

AddType    application/x-ns-proxy-autoconfig .dat

Создание wpad.dat, используемый веб-браузеров для конфигурации:

vi /var/www/wpad.dat

Изменение строку, начинающуюся с $ прокси FQDN прокси-сервера (выделенный текст).

function FindProxyForURL(url, host)
{
        $proxy = "PROXY squidproxy.example.local:3128";
        // URLs within this network are accessed direct
        if (isInNet(host, "192.168.0.0", "255.255.0.0"))        {return "DIRECT";}
        if (isInNet(host, "172.16.0.0", "255.240.0.0"))         {return "DIRECT";}
        if (isInNet(host, "10.0.0.0", "255.0.0.0"))             {return "DIRECT";}
        if (isInNet(host, "127.0.0.0", "255.0.0.0"))            {return "DIRECT";}
        //Return proxy for EVERYTHING else
        else return $proxy;
}

Перезагрузите Apache2:

invoke-rc.d apache2 restart

WPAD DNS-записей

Внимание: Как только вы добавите следующую запись DNS прокси стартует. 

  1. Этот клиент браузеры используют встроенную проверку подлинности Windows
  2. , Которые были добавлены, чтобы все пользователи соответствующих интернет-пользователей в группы безопасности AD
  3. Это все клиентские браузеры настроены на использование автоматически определять параметры прокси-сервера для доступа в Интернет. Использование групповой политики является разумным вариантом здесь или, возможно, ограничение исходящего HTTP-доступ в брандмауэре, чтобы отсеять пользователей, не имеющих автоматического определения конфигурации.

Тестовый доступ с Internet Explorer, поставив "Использовать сценарий автоматической настройки" и вставьте http://squidproxy.example.local/wpad.dat (изменение прокси FQDN вашему, конечно) в поле адреса, а затем получить доступ к любым веб-сайтов. Удачи вам, я надеюсь, что это работает! Остановитесь здесь и устранения неполадок, если она не работает, или же вы в конечном итоге с большим количеством сердится пользователей!

Добавить CNAME запись в DNS, чтобы указать на wpad.example.local squidproxy.example.local

Примечание: Server 2008 поставляется с мерой безопасности, которая блокирует WPAD, я также видел его на сервер 2003

Чтобы снять ограничение WPAD DNS, но оставить черный список включена, запустите редактор реестра и откройте следующую локацию.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList

Server 2008, вероятно, будет иметь элементы WPAD и ISATAP. Удалите запись WPAD и перезапустить службу DNS для того, чтобы перезагрузить черный список. Затем вы должны быть в состоянии решить wpad.example.local

Затем установите браузер на использование прокси конфигурации авто. Все современные браузеры следуют WPAD стандарт и будет предпринята попытка поиска http://wpad.example.local/wpad.dat для их конфигурации.

Более подробную информацию о WPAD можно найти здесь: http://wiki.squid-cache.org/Technology/WPAD/DNS

Проверьте журналы кальмара видеть, что браузеры используют прокси-сервера.

Дополнительно: Установите Cyphin Репортер

С прокси мы работаем нам нужны достойные отчетности. Такие программы, как SARG, mysar т.д. не разрезая его, как достойного варианта отчетности для мониторинга использования интернет-пользователь. Cyfin Reporter по Wavecrest оказался очень способным и интуитивно понятный системы отчетности с большим количеством функций.

Это, как настроить и установить Cyfin Репортер с кальмарами на Squeeze Debian.

Последние Cyfin Reporter версия на момент написания это версия 8.5. Проверьте следующие места в зависимости от вашей архитектуры, прежде чем загружать и обновлять следующие команды в случае необходимости.

http://downloads.wavecrest.net/release/cyfin/linux32/
http://downloads.wavecrest.net/release/cyfin/linux64/

Так что ваша установка может выглядеть примерно так ...

cd /usr/local/src/
wget "http://downloads.wavecrest.net/release/cyfin/linux32/v850/c850linux32.bin.gz"
gunzip c850linux32.bin.gz
chmod +x c850linux32.bin

Установите программу с PS1, поэтому изменение этого для текущей оболочки решает эту проблему.

export PS1=">"
./c850linux32.bin

В ответ на запрос об установке пути зарегистрировать его в качестве

 ENTER AN ABSOLUTE PATH, OR PRESS  TO ACCEPT THE DEFAULT
      : /opt/wavecrest/cyfin

Примите все остальное по умолчанию.

Нам нужно создать Сценарий для запуска и остановки cyfin Debian.

vi /etc/init.d/cyfin

#! /bin/sh
### BEGIN INIT INFO
# Provides:          cyfin
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: cyfin reporter initscript
### END INIT INFO
NAME=cyfin
SCRIPTNAME=/etc/init.d/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
case "$1" in
        start)          sh /opt/wavecrest/cyfin/cyfin start
        ;;
        stop)           sh /opt/wavecrest/cyfin/cyfin stop
        ;;
        status)         sh /opt/wavecrest/cyfin/cyfin start
        ;;
        restart)        sh /opt/wavecrest/cyfin/cyfin restart
        ;;
        *)              echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
                        exit 3
        ;;
esac
:

chmod +x /etc/init.d/cyfin
update-rc.d cyfin defaults

Настройка Cyfin Reporter требует описания в новом руководстве. Вот его основы:

Доступ конфигурации графического интерфейса с помощью http://squidproxy.example.local:7999. Вход в систему по умолчанию является "администратор" в качестве имени пользователя и пароля.

  • Используйте помощь в GUI, как документация очень хорошо.
  • Просмотрите вопросы на http://www.wavecrest.net/support/cyfin/reporter/faqs.html
  • Используйте меню быстрого запуска для установки основы, которые являются довольно прямо вперед.
  • Включить Data Manager для импорта лог-файлов и настройки импорта лог-файл графику.
  • использовать интеграцию в Active Directory, вы можете использовать кальмара при создании учетной записи для аутентификации LDAP также извлечь информацию из Active Directory.
  • Настройка расписания импортировать список пользователей из Active Directory.
  • Вы должны убедиться, ваши пользователи являются частью группы безопасности или группы рассылки в Active Directory и добавьте эти группы Reporter Cyfin.
  • Назначение отделов менеджер в качестве получателя электронной почте отчеты.
  • Установка доступа учетных записей для сотрудников, имеющих разрешение на просмотр логов.

Если вы используете Cyfin Reporter вам необходимо учитывать для дополнительного использования памяти, так что не забудьте выделить достаточно ресурсов для его запуска.

отделка дачного дома своими руками