System administration
14 January 2012

Настройка Squid 3 + QuintoLabs Content Security 1.4 и интеграция с Active Directory

Original author: sichent
Translation

Про Squid рассказывать не буду, а про возможности QCS расскажу.

Что же умеет делать QuintoLabs Content Security
* Удаляет назойливую рекламу
* Запрет на закачку файлов
* Групповой контроль
* Исключение любого домена, подсети, ip из фильтра
* Высокая производительность
* Легкая настройка и обслуживание
* Поддержка дистрибутивов RedHat, CentOS, Fedora, Debian, Ubuntu



Для настройки связки у нас имеется предварительно настроенный
1) dc.example.lan [192.168.28.20] — Win2K2008 с DNS и Active Direcory
2) 192.168.28.2 — Шлюз
3) DNS [192.168.28.20]
3) example.lan — Домен
4) proxy.example.lan — Наш сервер CentOS 6
5) client.example.lan — Клиент Win7

Далее будем настраивать на proxy сервер(CentOS) с учетом того что сервер на Win2K2008 с нужными нам службами настроен

Настраиваем статический ip в /etc/sysconfig/network-scripts/ifcfg-eth0:
BOOTPROTO=static
NETMASK=255.255.255.0
IPADDR=192.168.28.21
ONBOOT=yes

Выставляем шлюз /etc/sysconfig/network:
GATEWAY=192.168.28.2
Указываем dns в /etc/resolv.conf:
nameserver 192.168.28.20
Рестарт сетевых интерфейсов
/etc/init.d/network restart
Пингуем:
$ping -c 3 192.168.28.2

Если все удачно. то можно двигаться дальше
Обновляемся:
yum update
а после ставим дополнительные пакеты:
yum install bind-utils
устанавливаем ntp
yum install ntp
добавим в автозагрузку
chkconfig ntpd on
Открываем /etc/ntp.conf и добавляем на контроллер домена в конфиг


Останавливаем сервис:
service ntpd stop
Синхронизируемся с нашим dc:
ntpdate -b dc.example.lan
и запускаем обратно сервис ntp:
service ntpd start
Устанавливаем kerberos:
yum install krb5-workstation krb5-libs
Приводим конфиг /etc/krb5.conf к аналогичному виду:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = EXAMPLE.LAN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
default_tgs_enctypes = rc4-hmac
default_tkt_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac

[realms]
EXAMPLE.LAN = {
kdc = dc.example.lan
admin_server = dc.example.lan
default_domain = example.lan
}

[domain_realm]
.example.lan = EXAMPLE.LAN
example.lan = EXAMPLE.LAN


Пробуем получить билетик:
kinit Administrator@EXAMPLE.LAN
Если прошло все без проблем то проверяем выданный нам билет:
klist
и видим:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@EXAMPLE.LAN
Valid starting Expires Service principal
12/07/11 11:07:58 12/07/11 21:08:00 krbtgt/EXAMPLE.LAN@EXAMPLE.LAN
renew until 12/14/11 11:07:58

Перегружаемся:
shutdown -r now
Устанавливаем sabma и заводим наш сервер в домен
yum install samba
добавляем в атозагрузку:
chkconfig smb on
Открываем конфиг самбы /etc/samba/smb.conf и приводим его к такому виду:
[global]
workgroup = EXAMPLE
realm = EXAMPLE.LAN
server string = Samba Server Version %v
security = ADS
log file = /var/log/samba/log.%m
max log size = 50
cups options = raw

[homes]
comment = Home Directories
read only = No
browseable = No

[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No


Перезапустим самбу:
service smb restart
Инициализируем kerberos:
kinit Administrator@EXAMPLE.LAN
klist

net ads join -S dc.example.lan -U Administrator%P@ssw0rd



Открываем оснастку AD и проверяем появился ли наш proxy сервер в OU «Computers»


Видим положительный результат и опять ребут:
shutdown -r now
Устанавливаем Squid:
yum install squid
Открываем /etc/squid/squid.conf, находим нужные нам строки и заменяем их:
visible_hostname proxy.example.lan
http_access allow localnet and acl localnet src 192.168.28.0/24

Добавляем в автозагрузку:
chkconfig squid on
Перезапустим сервис:
service squid start
Добавим запись по умолчанию в файл /etc/krb5.keytab
net ads keytab add HTTP -U administrator
Processing principals to add...
Enter administrator's password:



Изменяем владельца файла:
chown squid:squid /etc/krb5.keytab
и выставляем chmod:
chmod 400 /etc/krb5.keytab
Меняем содержимое конфига в /etc/squid/squid.conf:
auth_param negotiate program /usr/lib/squid/negotiate_kerb_auth -s HTTP/proxy
auth_param negotiate children 10
auth_param negotiate keep_alive on

acl auth proxy_auth REQUIRED

http_access deny !auth
http_access allow auth

http_access deny all

После этого перегружаем наш сервер, и на клиентской тачке, открываем ie и проверяем аутентификацию. Если все прошло удачно то в логах /var/log/squid/*.log мы увидем нашего пользователя

Далее устанавливаем apache
yum install httpd php mod_wsgi
Добавляем в автозагрузку
chkconfig httpd on
Запускаем apache:
service httpd start
Переходим к финальной части, устанавливаем QuintoLabs Content Security 1.4.2

Скачиваем:
curl quintolabs.com/qlproxy/binaries/1.4.2/qlproxy-1.4.2-32d12.i386.rpm > qlproxy-1.4.2-32d12.i386.rpm
Устанавливаем:
rpm --install qlproxy-1.4.2-32d12.i386.rpm
Для блокировки рекламы достаточно раскоментировать нужную нам подписку в файле /opt/quintolabs/qlproxy/etc/adblock.conf
По желанию можно повысить эвристику фильтра для онлайн игр в файле /opt/quintolabs/qlproxy/etc/adultblock.conf
Ищем строку:
heuristics_level = normal
и normal меняем на high:
heuristics_level = high
В конфиге /opt/quintolabs/qlproxy/etc/exceptions.conf можно настроить родительский контроль, поддерживающий фильтрацию html страниц для запрещеных слов и фраз.
А в конфиге /opt/quintolabs/qlproxy/etc/httpblock.conf можно настроить защиту от троянов и вирусов которые часто посылают запросы по IP:
http://\d+\.\d+\.\d+\.\d+/.*
После всех изменений перезапускаем демон:
/etc/init.d/qlproxy restart
Открываем конфиг squid /etc/squid/squid.conf и вносим изменения для взаимодействитя с нашим фильтром:
icap_enable on
icap_preview_enable on
icap_preview_size 4096
icap_persistent_connections on
icap_send_client_ip on
icap_send_client_username on
icap_service qlproxy1 reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
icap_service qlproxy2 respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
adaptation_access qlproxy1 allow all
adaptation_access qlproxy2 allow all

Перегружаем сервис squid:
service squid restart
Далее правим конфиг apache /etc/httpd/httpd.conf и добавляем:
WSGIScriptAlias /qlproxy.cgi /var/opt/quintolabs/qlproxy/www/data/qlproxy.wsgi
<Directory /var/opt/quintolabs/qlproxy/www/data>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
Alias /qlproxy /var/opt/quintolabs/qlproxy/www
<Directory /var/opt/quintolabs/qlproxy/www>
Options FollowSymLinks
AllowOverride None

Перегружаем apache
service httpd restart

И соответственно проверяем всю работу сервера и фильтарции в том числе.
Немного линков


P.S. Если Вы найдете очемятку, пишите в ЛС, буду исправлять :)

+9
11.3k 189
Comments 16
Top of the day