Настройка 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. Если Вы найдете очемятку, пишите в ЛС, буду исправлять :)
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 16

    0
    Как-то бррр…
    Читать сложно.
    Инструкция какая-то, а не статья…
      0
      А чем оно лучше/хуже аналогов?
        +4
        Во первых, я не понял в чем бонус QuintoLabs по сравнению с ACL'ями Squid'а?..
        Во вторых, вы не упомянули, что клиенты исключительно являются членами домена AD, т.к. вы использовали авторизацию клиентов через kerberos и ни какую более.
          –1
          я так понимаю что у производителя фильтра база url будет поболее и актуальнее… а ACL надо самому все. Ну и как + фильтрация по словам — фразам внутри html
          0
          Еще для фильтрации нежелательного контента есть dansguardian. Но, как показывает практика, все эти «интеллектуальные» фильтры работают максимум неделю. До тех пор, пока не заблочится тот же яндекс, потому, что на его странице есть запрещенные слова.
            +1
            Тоже недавно настраивал похожую связку (Debian lenny+Squid2.7stable3+AD2008server), только вот управляется всё ACL'ями Squid'а, также думаю не мешало было добавить строку для базовой аутентификацию для клиентов, которые не умеют kerberos, что-то на подобии этого:

            auth_param basic program /usr/lib/squid/ntlm_auth --helper-protocol=squid-2.7-basic

            хотя возможно она там и есть, просто вы ее не привели здесь ;-))
            а авторизация проходит в ldap.
            Надо бы статью дописать — никак ноги не доходят ;-)
              +1
              У меня на внутрикорпоративном портале лежит шикарная инструкция по настройке убунту-сервера на много-вкусняшек в т.ч. и MS ADS, попробую её проверить, обезличить и выложить. там не только сквид :)
              Кстати, черти сколько лет назад встречал настройку параметров ACL сквида на группы из АД, т.е. параметры интернет пользователя настраивались определением его в группу в АД — випы, качальщики, внешняя почта и т.п. т.е. админы в настройки линукс сервера лазили только для обновлений сервера и для прописывания новой группы пользователей.
              в PS — очеМятка :)
                0
                У нас так и работает, чтобы виндовым админам проще было, поместил юзера в нужную группу и всё.
                  0
                  Ага. Еще когда убирается авторизация по IP и настроено автоматическая настройка прокси сервера через WPAD для недоменных машин и гостей…
                0
                Я так понял — все правила quintolabs — от разработчика, значит в рунете эффективность мала?
                Не встречал ли кто вариантов прикручивания механизма и подписок от плагина к ФФ Adblockplus?
                  0
                  Про квинтолабс слышу вообще впервые, хотя сквид не стоял только в одной организации где я работал… но там стояло решение от Майкрософт
                  0
                  dns_lookup_realm = false
                  dns_lookup_kdc = false

                  Можете объяснить почему вы отключаете поиск в DNS? Таким образом, если упадёт dc.example.lan, то и прокси работать перестанет. kerberos может сам запрашивать SRV записи и там всегда будет список актуальных DC.

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

                  Хорошей практикой считается подготавливать(pre-staging) учётки компьютеров заранее. Создать компьютер proxy в заранее подготовленном OU для серверов.

                  Толком не описан сам QuintoLabs Content Security…
                    –1
                    Только дошло, что это перевод с хаутуфоржа. Вобще тоска.
                    0
                    Походу перевод с добавлением картинок вот этой статьи www.howtoforge.com/web-filtering-on-squid-3-with-quintolabs-content-security-1.4-and-windows-active-directory-integration
                      0
                      Это было первое что я подумал :)
                      А по теме — QuintoLabs Content Security еще один аналог dansguardian и режика, только правила свои добавили.
                      0
                      Хорошо бы этой статье вняли горе вин админы. А то уже задолбали всякие керио, иса и прочие вин поделки.
                      Я давно уже интегрировал squid с ad, только без QuintoLabs и получилось очень даже приятненько.
                      Вин поделки даже не рядом несмотря на их вроде бы не малый возраст на рынке.
                      Когда же уже осознают это повсеместно.

                      Only users with full accounts can post comments. Log in, please.