Ads 468x60px

вторник, 27 ноября 2012 г.

Squid с Active Directory в Debian Wheezy.

Задача.
Необходимо поднять прокси сервер с прозрачной аутентификацией доменных пользователей, и, конечно, с возможностью просмотра статистики.
Исходные данные.
Прокси сервер IP: 192.168.30.22.
Имя домена: thiscompany.net
Сервер домена: domain3.thiscompany.net
IP сервера домена: 192.168.30.81
Подготовка для работы в домене.
Синхронизации времени.
Синхронизация времени прокси с контроллером домена обязательна. Установка клиента:
$ sudo aptitude install ntp
комментируем, заданные по умолчанию, сервера для синхронизации
$ sudo sed -i "s/^server\s.*/# \0/" /etc/ntp.conf
добавляем IP контролера домена
$ sudo sed -i "/3.debian.po/ a\ server 192.168.30.81" /etc/ntp.conf
проверяем, что в /etc/resolv.conf прописаны параметры нашего домена:
$ cat /etc/resolv.conf
domain thiscompany.net
search thiscompany.net
nameserver 192.168.30.81
перезагружаем службу ntp
$ sudo service ntp restart
Ввод в домен.
Установка программного обеспечения:
$ sudo aptitude install samba winbind krb5-admin-server krb5-clients
правим конфигурационный файл самбы, в строке server string пробел обязателен!:
$ sudo tee /etc/samba/smb.conf << EOF
[global]

workgroup = THISCOMPANY
server string = 
netbios name = SQUID
realm = THISCOMPANY.NET
security = ads
encrypt passwords = true
password server = domain3.thiscompany.net
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yse
winbind uid = 10000-20000
winbind gid = 10000-20000
EOF
перезагружаем службу samba:
$ sudo service samba restart
вносим изменения в в конфигурацию kerberos, Регистр букв важен!:
$ sudo tee /etc/krb5.conf << EOF
[loggining]
    Default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmin.log

[libdefaults]
    default_realm = THISCOMPANY.NET

[realms]
    THISCOMPANY.NET = {
    kdc = domain3.thiscompany.net
    admin_server = domain3.thiscompany.net
    default_domain = domain3.thiscompany.net
}

[domain_realm]
    .domain3.thiscompany.net = THISCOMPANY.NET
    domain3.thiscompany.net = THISCOMPANY.NET
EOF
Создаем базу для протокола kerberos, соответствующие службы будут перезагружены:
$ sudo krb5_newrealm
Получаем билет для работу по протоколу kerberos:
$ kinit domainAdminLoginHere
присоединяем наш сервер к домену:
$ net ads join -U domainAdminLoginHere
Перезагружаем службу winbind:
$ sudo service winbind start
Проверяем корректность настроек:
$ wbinfo -p
Ping to winbindd succeeded
Установка и настройка Squid.
Установка
$ sudo aptitude install squid
правим файл конфигурации squid:
$ sudo tee /etc/squid/squid.conf << EOF
# доменная аутентификация
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20

# Режимы прослушивания портов
http_port 192.168.30.22:8080

# проверка пользователей через домен обязательна
acl nt_group proxy_auth REQUIRED
# даем полный доступ доменным пользователям
http_access allow nt_group

# описание группы all, необходимо обязательно
acl all src 0.0.0.0/0.0.0.0

# логирование доступа
access_log /var/log/squid/access.log
logfile_rotate 100
EOF
Перезагружаем службу squid
$ sudo service squid restart
Просмотр статистики.
Для анализа статистики будем использовать lighttpd и lightsquid. Установка:
$ sudo aptitude install lightsquid lighttpd
меняем путь к логам squid в конфигурации lightsquid:
$ sudo sed -i 's/\/var\/log\/squid3/\/var\/log\/squid/' /etc/lightsquid/lightsquid.cfg
запускаем парсер для первичной обработки логов:
$ sudo /usr/share/lightsquid/lightparser.pl
По умолчанию в Debian Wheezy, в cron, установлено задание на ежедневное сканирование логов squid в 4-00 утра, вы можете его изменить, если это необходимо.
Добавляем модуль для lighttpd:
$ sudo tee /etc/lighttpd/conf-available/10-lightsquid.conf << EOF

  alias.url = (
    "/cgi-bin/lightsquid" => "/usr/lib/cgi-bin/lightsquid",
    "/lightsquid/cgi-bin" => "/usr/lib/cgi-bin/lightsquid",
    "/lightsquid" => "/usr/lib/cgi-bin/lightsquid"
    )

  $HTTP["url"] =~ "^/lightsquid/cgi-bin" {
    cgi.assign = ( "" => "" )
  }
EOF
Перезагружаем web server:
$ sudo service lighttpd restart
Теперь статистику можно просмотреть по адресу: http://192.168.30.22/lightsquid/
Материалы по теме.
Программное обеспечение:
- операционная система: Debian
- прокси сервер: Squid
- http сервер: lightsquid
Статьи которые помогли:
Прокси Squid с авторизацией в домене Active Directory
Debian Squid + AD

2 комментария:

Анонимный комментирует...

Спасибо за статью, но сначала:
[code]sudo service squid reload[/code]
а потом только:
[code]sudo service squid restart[/code]

felis-lybica комментирует...

Всегда, пожалуйста)
спасибо за добавление!
не буду настаивать, однако в моем случае было достаточно restart.