Squid-авторизация в AD с контролем доступа к сайтам

Аватар пользователя VR__

squid-авторизация в AD с контролем доступа к сайтам

Squid
Настройки описанные в данной статье не претендуют на абсолютно верные.
Данные настройки созданы после прочтения кучи факов и ман.
Данная настройка работает на ASPLinux 11.2.
Пакеты, используемые в данной конфигурации, не пересобирались, использовались пакеты, идущие на дистрибутиве.
Использована сеть с адресным полем 10.12.0.0/255.255.255.0
В данной статье подразумевается что у вас уже должным образом настроены samba и winbind
В данной конфигурации заблокирована почти вся графика для экономии трафика.
Если данная функция не нужна, отключите соответствующие настройки в конфиге.

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


Конфигурирование Squid c авторизацией в AD

Squid - прокси-сервер. Основная конфигурация настраивается с помощью файла squid.conf, который в данном случае находится в каталоге /etc/squid/
В принципе, может работать и при дефолтном конфиге, но лучше настроить все руками.

Конфиг, используемый мною:

cache_mgr admin@domain.ru
visible_hostname my_proxy
log_mime_hdrs on
ignore_unknown_nameservers on
connect_timeout 120 seconds
half_closed_clients on

forwarded_for off
error_directory /etc/squid/error

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin ?
no_cache deny QUERY
http_port 10.12.0.10:3128
https_port 10.12.0.10:3128

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

acl all src 0.0.0.0/0.0.0.0
acl localnet src 10.12.0.0/255.255.255.0

acl nobanners src 0/0
acl banners url_regex "/etc/squid/conf/banners.acl"

acl My_SNMP snmp_community squidmrtg
snmp_port 3401

acl ICQ_port port 5190
acl ICQ_server dstdomain login.icq.com login.oscar.aol.com ibucp-vip-d.blue.aol.com ibucp-vip-m.blue.aol.com bucp2-vip-m.blue.aol.com bucp-m08.blue.aol.com 205.188.153.98 205.188.153.97 64.12.161.153
http_access allow ICQ_port localnet
http_access allow ICQ_server localnet

acl Jabber_port port 5222
http_access allow Jabber_port localnet

acl CONNECT method CONNECT

acl goodusers proxy_auth "/etc/squid/conf/good"
http_access deny goodusers banners
http_access allow goodusers

acl free_image proxy_auth "/etc/squid/conf/free_image"

acl aolaccess dst "/etc/squid/conf/host.acl"

acl banusers proxy_auth "/etc/squid/conf/user-deny"
acl nu proxy_auth "/etc/squid/conf/naglyi_user"

http_access allow aolaccess banusers localnet
http_access deny banusers localnet

acl squid_block_badlang url_regex -i "/etc/squid/squidblock/badlang.block.txt"
acl squid_unblock_badlang url_regex -i "/etc/squid/squidblock/badlang.unblock.txt"
acl squid_block_entertain url_regex -i "/etc/squid/squidblock/entertain.block.txt"
acl squid_unblock_entertain url_regex -i "/etc/squid/squidblock/entertain.unblock.txt"
acl squid_block_games url_regex -i "/etc/squid/squidblock/games.block.txt"
acl squid_unblock_games url_regex -i "/etc/squid/squidblock/games.unblock.txt"
acl squid_block_pirate url_regex -i "/etc/squid/squidblock/pirate.block.txt"
acl squid_block_mp3 url_regex -i "/etc/squid/squidblock/mp3.block.txt"
acl squid_unblock_pirate url_regex -i "/etc/squid/squidblock/pirate.unblock.txt"
acl squid_block_porn url_regex -i "/etc/squid/squidblock/porn.block.txt"
acl squid_unblock_porn url_regex -i "/etc/squid/squidblock/porn.unblock.txt"
acl squid_block_video url_regex -i "/etc/squid/squidblock/video.block.txt"
acl squid_block_reklama url_regex -i "/etc/squid/squidblock/reklama.block.txt"
acl squid_unblock url_regex -i "/etc/squid/squidblock/unblock.txt"
acl squid_block url_regex -i "/etc/squid/squidblock/block.txt"
acl squid_nu_block url_regex -i "/etc/squid/squidblock/nu_block"

http_access deny nu squid_nu_block all

http_access deny squid_block all
http_access allow squid_unblock all

http_access deny squid_block_badlang all
http_access deny squid_block_entertain all
http_access deny squid_block_games all
http_access deny squid_block_mp3 all
http_access deny squid_block_pirate all
http_access deny squid_block_porn all
http_access deny squid_block_video all
http_access deny squid_block_reklama all

http_access allow squid_unblock_badlang localnet
http_access allow squid_unblock_games localnet
http_access allow squid_unblock_pirate localnet

acl bigfiles url_regex -i "/etc/squid/conf/bigfile.txt"
acl image url_regex -i "/etc/squid/conf/image.txt"
acl free_image_site url_regex -i "/etc/squid/conf/free_image_site"

http_access allow image free_image localnet
http_access allow image free_image_site localnet
http_access deny bigfiles all

http_access deny nobanners banners


acl myusers proxy_auth REQUIRED
http_access allow myusers

refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320


acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

snmp_access allow localhost
snmp_access deny all

acl SSL_ports port 443 563

acl Safe_ports port 80
acl Safe_ports port 21 20
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777

http_access allow manager localhost
http_access deny manager

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost

http_access allow localnet
http_access allow localhost
http_reply_access allow all
icp_access allow all

coredump_dir /var/spool/squid
http_access deny all

maximum_object_size 10 MB
cache_mem 20 MB

Рассмотрим некоторые параметры.

visible_hostname my_proxy - видимое имя нашего прокси

Настройки для повышения секворности:
log_mime_hdrs on - в логах будут видны все заголовки пользователей.

ignore_unknown_nameservers on - игнорирование неизвестных ДНС-серверов
connect_timeout 120 seconds - время ожидания ответа
half_closed_clients on - сброс сессий

forwarded_for off - скрыть внутренние IP
error_directory /etc/squid/error - каталог с HTML файлами которые будут высвечиваться в случае ошибок

cache_mgr admin@domai.ru - емаил администратора, который будет высвечиваться на окне ошибки у пользователя.

Порт и адрес, на которых будет работать squid для http и https соответственно:
http_port 10.12.0.12:3128
https_port 10.12.0.12:3128

Аутефикация юзеров в AD контроллера:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

Сети описываются для большей безопасности:
acl all src 0.0.0.0/0.0.0.0
acl localnet src 10.12.0.0/255.255.255.0 - ваша локалка

Задается блокирование баннеров:
acl nobanners src 0/0
acl banners url_regex "/etc/squid/conf/banners.acl"

в файле banners.acl содержиться распространненые адреса баннеров.

Для аськи нужны следующие правила:

acl ICQ_port port 5190
http_access allow ICQ_port localnet

По аналогии можно составить правила для любого клиента:
acl Jabber_port port 5222
http_access allow Jabber_port localnet

Этот правило описывает метод соединения клиентов к серверам аськи и других месенжеров:
acl CONNECT method CONNECT

Ниже идут правила (acl), которыми описываються доступы.
Данные для этих правил беруться из обычных текстовых файлов вида:

для списков пользователей :
user_name
user_name2
user_name2

Для списков сайтов:
host1
host.ru
host.domain.com
187.25.45.15

Пользователи, имеющие доступ ко всем ресурсам инета:
acl goodusers proxy_auth "/etc/squid/conf/good"
http_access deny goodusers banners
http_access allow goodusers

acl free_image proxy_auth "/etc/squid/conf/free_image" - если надо каким то юзерам открыть картинки в веб, нужно указать их логины в free_image

acl aolaccess dst "/etc/squid/conf/host.acl" в файле host.acl содержиться адреса сайтов, к которым нужен доступ даже заблокированим юзерам

acl banusers proxy_auth "/etc/squid/conf/user-deny" - здесь содержиться юзерыв которые превысили месячный трафик.
acl nu proxy_auth "/etc/squid/conf/naglyi_user" - здесь пользователи, которые окончательно потеряли совесть, им открыт доступ только к сайтам, описаным в host.acl

Бан юзеров и предыдущих правил:
http_access allow aolaccess banusers localnet
http_access deny banusers localnet

Блокирование сайтов, которые юзеры будут смотреть только дома:
acl squid_block_badlang url_regex -i "/etc/squid/squidblock/badlang.block.txt"
acl squid_unblock_badlang url_regex -i "/etc/squid/squidblock/badlang.unblock.txt"
acl squid_block_entertain url_regex -i "/etc/squid/squidblock/entertain.block.txt"
acl squid_unblock_entertain url_regex -i "/etc/squid/squidblock/entertain.unblock.txt"
acl squid_block_games url_regex -i "/etc/squid/squidblock/games.block.txt"
acl squid_unblock_games url_regex -i "/etc/squid/squidblock/games.unblock.txt"
acl squid_block_pirate url_regex -i "/etc/squid/squidblock/pirate.block.txt"
acl squid_block_mp3 url_regex -i "/etc/squid/squidblock/mp3.block.txt"
acl squid_unblock_pirate url_regex -i "/etc/squid/squidblock/pirate.unblock.txt"
acl squid_block_porn url_regex -i "/etc/squid/squidblock/porn.block.txt"
acl squid_unblock_porn url_regex -i "/etc/squid/squidblock/porn.unblock.txt"
acl squid_block_video url_regex -i "/etc/squid/squidblock/video.block.txt"
acl squid_block_reklama url_regex -i "/etc/squid/squidblock/reklama.block.txt"
acl squid_unblock url_regex -i "/etc/squid/squidblock/unblock.txt"
acl squid_block url_regex -i "/etc/squid/squidblock/block.txt"
acl squid_nu_block url_regex -i "/etc/squid/squidblock/nu_block"

http_access deny nu squid_nu_block all

http_access deny squid_block all
http_access allow squid_unblock all

http_access deny squid_block_badlang all
http_access deny squid_block_entertain all
http_access deny squid_block_games all
http_access deny squid_block_mp3 all
http_access deny squid_block_pirate all
http_access deny squid_block_porn all
http_access deny squid_block_video all
http_access deny squid_block_reklama all

http_access allow squid_unblock_badlang localnet
http_access allow squid_unblock_games localnet
http_access allow squid_unblock_pirate localnet

Файлы с адресами у меня создались автоматически при установке squid, только файлы block.txt и unblock.txt надо создать руками, в них блокированые и разблокированые сайты соответственно, имеют приоритет в данном конфиге над другими правилами.

acl bigfiles url_regex -i "/etc/squid/conf/bigfile.txt" - здесь описывается, какие файлы нужно блокировать по расширениям.

acl image url_regex -i "/etc/squid/conf/image.txt" - то же, но для картинок
acl free_image_site url_regex -i "/etc/squid/conf/free_image_site" - блокирование графики на сайтах

http_access allow image free_image localnet - разрешение графики для пользователей
http_access allow image free_image_site localnet - и разрешение сайтов где графика нужна

http_access deny nobanners banners - блокировка банеров, описаных выше

Заключающие правила, разрешающие всему оставшемуся пройти к пользователю:
acl myusers proxy_auth REQUIRED
;http_access allow myusers

Открытые порты, взяты из дефолта:
acl SSL_ports port 443 563

acl Safe_ports port 80
acl Safe_ports port 21 20
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777

Разрешения соединений на них:
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost

http_access allow localnet
http_access allow localhost
http_reply_access allow all

Директория, где находиться ядро squid:
coredump_dir /var/spool/squid

Блокирование всего, что не прошло по правилам:
http_access deny all

Задание максимального объема обектов в кеше:
maximum_object_size 10 MB

Общий обем кеша:
cache_mem 25 MB

На этом кофигурация squid закончена, можно стартовать службу squid командой:

/etc/rc.d/init.d/squid start

Если осуществляется какое-либо изменение в файлах конфигурации или правил, то чтобы не перезагружать squid, используйте команду:
squid -k reconfigure

На этом статью заканчиваю, всем спасибо за внимание Улыбка

Your rating: Нет Average: 5.4 (5 votes)

Комментарии

Аватар пользователя Гость

Re: squid-авторизация в AD с контролем доступа к сайтам

https_port 10.12.0.12:3128 - в таком виде работать не будет! Не обманывай народ!

Аватар пользователя thealexis

Re: squid-авторизация в AD с ...

В новых версиях будет Улыбка
# TAG: http_port
# Usage: port
# hostname:port
# 1.2.3.4:port

Аватар пользователя VR__

Re: squid-авторизация в AD с ...

Исправил и дополнил статью, в своём блоге. fedoraway.blogspot.com

Аватар пользователя Artur

Re: Squid-авторизация в AD с контролем доступа к сайтам

Хорошая статья, вот тут я тоже написал статью http://www.artcom-ufa.ru/posts/2012/07/28/nastroika-squid по настройке squid на Debian lenny

RSS-материал