Страница 1 из 1

Squid: acl и deny_info

Добавлено: 2008-03-19 21:38:52
Trider
Здравствуйте, постараюсь сформулировать вопрос и всё описать
Отличная статься кстати: http://www.lissyara.su/?id=1375
И вопрос по этой теме как раз.
Собственно у меня недавно встал вопрос разграничение доступа на веб по NTLM-аутентифицированным пользователям, было решено выделить несколько групп с доступом, а также несколько списков с запретами и собственно расписать на каждый список запрета свою ошибку. На первый взгялд весь этот зоопарк разрулить на Squidе мне показалось что как обычно не составит труда, но возникли сложности, от squiguarda решил отказаться да и в его базах с запрещёнными списками как-то ковыряться и не хочу.
Собственно вот мой squid.conf:

Код: Выделить всё

http_port 192.168.1.1:3128
icp_port 0
htcp_port 0
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi_bin \?
no_cache deny QUERY
cache_mem 400 MB
cache_dir ufs /cache 14600 16 256

cache_swap_high 98
cache_swap_low 80

ftp_user anonymous@mail

maximum_object_size 5024 KB
minimum_object_size 0 KB
ipcache_size 1024
ipcache_high 98
ipcache_low 85

quick_abort_min 5 MB
quick_abort_max 5 MB
negative_ttl 1 minutes
read_timeout 4 minutes

visible_hostname gate.mydomain.ru
cache_mgr postmaster@mydomain.ru
cache_access_log /usr/local/etc/squid/logs/access.log
cache_log /usr/local/etc/squid/logs/cache.log
cache_store_log /usr/local/etc/squid/logs/store.log
error_directory /usr/local/etc/squid/errors/Russian-1251

auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

external_acl_type ActiveDirectory %LOGIN /usr/local/libexec/squid/wbinfo_group.pl
acl InternetUsers external ActiveDirectory InternetUsers
acl InternetLimited external ActiveDirectory InternetLimited
acl InternetUnlimited external ActiveDirectory InternetUnlimited
acl PALMER1 proxy_auth REQUIRED

acl SSL_ports port 443 563
acl Safe_ports port 80         # http
acl Safe_ports port 21         # ftp
acl Safe_ports port 443 563    # https, snews
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

acl banners url_regex "/usr/local/etc/squid/banners"
acl audio-video url_regex "/usr/local/etc/squid/audio-video"
acl porno url_regex "/usr/local/etc/squid/porno"
acl deny url_regex "/usr/local/etc/squid/deny"

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow InternetUsers !audio-video !banners !porno !deny
http_access allow InternetLimited !audio-video !banners !porno
http_access allow InternetUnlimited
http_access deny all

reply_body_max_size 2 MB InternetUsers
reply_body_max_size 2 MB InternetLimited
В таком раскладе всё работает и кушает он дефолтные ошибки из "/usr/local/etc/squid/errors/Russian-1251"
Захотел я расписать на каждый запрет свою ошибку, но как видно у меня в домене есть группа InetrnetUnlimited, которой доступ на веб нужен безпрепятсвенный.
Немножко поломав голову обратился к статье: http://www.lissyara.su/?id=1375
И сделал следующее(весь конфиг уже приводить не буду):

Код: Выделить всё

......................
......................
acl banners url_regex "/usr/local/etc/squid/banners"
acl audio-video url_regex "/usr/local/etc/squid/audio-video"
acl porno url_regex "/usr/local/etc/squid/porno"
acl deny url_regex "/usr/local/etc/squid/deny"

deny_info ACCESS_BANNERS banners
deny_info ACCESS_DENIED audio_video
deny_info ACCESS_DENIED porno
deny_inffo ACCESS_DENIED deny

http_access deny banners
http_access deny audio-video
http_access deny porno
http_access deny deny
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow InternetUsers
http_access allow InternetLimited
http_access allow InternetUnlimited all
http_access deny all
...............
..............
Ну и судя из всего этого группе InternetUnlimited у меня должен быть доступ ко всему, а вот и не работает, ошибки свои, которые хочу вижу, а доступ ко всему добру InternetUnlimited как и всем запрещён, указал как в статье написано "http_access allow InternetUnlimited all"

Пробовал сделать:

Код: Выделить всё

......................
......................
acl banners url_regex "/usr/local/etc/squid/banners"
acl audio-video url_regex "/usr/local/etc/squid/audio-video"
acl porno url_regex "/usr/local/etc/squid/porno"
acl deny url_regex "/usr/local/etc/squid/deny"

deny_info ACCESS_BANNERS banners
deny_info ACCESS_DENIED audio_video
deny_info ACCESS_DENIED porno
deny_inffo ACCESS_DENIED deny

http_access deny banners !InternetUnlimited
http_access deny audio-video !InternetUnlimited
http_access deny porno !InternetUnlimited
http_access deny deny  !InternetUnlimited
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow InternetUsers
http_access allow InternetLimited
http_access allow InternetUnlimited
http_access deny all
...............
..............
Тогда InternetUnlimited доступ ко всем добру есть, а у тех кто в остальных группах вместо моих ошибок, которые я указал в deny_info выдаёт окно с просьбой ввести данные аутентификации.
Как разрулить можно такую проблему? :-(

Re: Squid: acl и deny_info

Добавлено: 2008-04-20 17:47:03
koffu
почитай о директивах в squid.conf acl, http_access. В манах всё подробно описано.
Чтобы вводить такие сложные системы в производство, нужно быть уверенным за каждую опцию в файле конфигов.