В squid.conf#Здесь описываем внешие ACL
external_acl_type InetGroup-proxy-08-20ww %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in work week from 08-00 to 20-00
external_acl_type InetGroup-proxy-08-20aw %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in all week from 08-00 to 20-00
external_acl_type InetGroup-proxy-00-24all %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in all week from 00-00 to 24-00# Проверь свои пути
auth_param ntlm children 20
auth_param ntlm program /usr/local/samba/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutesauth_param basic children 20
auth_param basic program /usr/local/samba/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours# Говорим, что нужна авторизация
acl you_domain proxy_auth REQUIRED# Разграничиваем доступ по времени
acl work-week time MTWHF 08:00-20:00 # Доступ с 08-00 до 20-00 с понедельника по пятницу
acl all-week time SMTWHFA 08:00-20:00 # Доступ с 08-00 до 20-00 всю неделю
acl all-time time SMTWHFA 00:00-24:00 # Доступ круглосуточно всю неделю# Осуществляем проверку на принадлежность к нужно группе
acl InetAccess-proxy-08-20ww external InetGroup-proxy-08-20ww proxy-08-20ww
acl InetAccess-proxy-08-20aw external InetGroup-proxy-08-20aw proxy-08-20aw
acl InetAccess-proxy-00-24all external InetGroup-proxy-00-24all proxy-00-24all# Собираем все в кучу и проверяем на предмет получения дуступа к ИНТЕРНЕТ
http_access allow you_domain work-week InetAccess-proxy-08-20ww
http_access allow you_domain all-week InetAccess-proxy-08-20aw
http_access allow you_domain all-time InetAccess-proxy-00-24all----------------------
proxy-08-20ww, proxy-08-20aw, proxy-00-24all - Группы в домене. В них заносишь тех юзеров, которым разрешен доступ.
wbinfo_group.pl - Используй именно этот скрипт. В том, что идет в комплекте со squid имеется ошибка.
Здесь она исправлена.#!/usr/bin/perl -w
#
# external_acl helper to Squid to verify NT Domain group
# membership using /usr/local/samba/bin/wbinfo
#
# This program is put in the public domain by Jerry Murdock
# <jmurdock@itraktech.com>. It is distributed in the hope that it will
# be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# Author:
# Jerry Murdock <jmurdock@itraktech.com>
#
# Version history:
# 2002-07-05 Jerry Murdock <jmurdock@itraktech.com>
# Initial release
## external_acl uses shell style lines in it's protocol
require 'shellwords.pl';# Disable output buffering
$|=1;sub debug {
# Uncomment this to enable debugging
print STDERR "@_\n";
}#
# Check if a user belongs to a group
#
sub check {
local($user, $group) = @_;
$groupSID = `/usr/local/samba/bin/wbinfo -n "$group"`;
# chop $groupSID;
# because wbinfo -n also returns the group number
$groupSID = substr($groupSID,0,index($groupSID," ",0));
$groupGID = `/usr/local/samba/bin/wbinfo -Y "$groupSID"`;
chop $groupGID;
# &debug( "User: -$user-\nGroup: -$group-\nSID: -$groupSID-\nGID: -$groupGID-");
return 'OK' if(`/usr/local/samba/bin/wbinfo -r \Q$user\E` =~ /^$groupGID$/m);
return 'ERR';
}
#
# Main loop
#
while (<STDIN>) {
chop;
&debug ("Got $_ from squid");
($user, $group) = &shellwords;
$ans = &check($user, $group);
&debug ("Sending $ans to squid");
print "$ans\n";
}----------------------------------------------------------------------------------------------------------
smb.conf[global]
workgroup = YOU-DOMAIN
realm = YOU-DOMAIN.RU
netbios name = demon
server string = Proxy Server
hosts allow = 10. 127.
winbind separator = \\ # Обрати на это внимание
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winnt/%D/%U
template shell = /usr/local/bin/bash
max log size = 50
security = domain
password server = srv1 srv3
encrypt passwords = yessrv1 и srv3 - PRIMARY and BACKUP контроллеры домена
----------------------------------------------------------------------------------------------------------
root@demon#tail -f /usr/local/squid/var/logs/cache.log
Got YOU-DOMAIN\\user1 proxy-08-20ww from squid
Sending ERR to squid
Got YOU-DOMAIN\\user1 proxy-08-20aw from squid
Sending ERR to squid
Got YOU-DOMAIN\\user1 proxy-00-24all from squid
Sending OK to squid
# Тут явно видно, что пользователя user1 нашли в группе proxy-00-24all и squid'у передано OK
Got YOU-DOMAIN\\user2 proxy-08-20ww from squid
Sending OK to squid
Got YOU-DOMAIN\\user3 proxy-08-20ww from squid
Sending OK to squidroot@demon#tail -f /usr/local/squid/var/logs/access.log
1147851551.270 20 10.66.107.56 TCP_IMS_HIT/304 251 GET http://img.mail.ru/mail/ru/css/mail-main1.css YOU-DOMAIN\user1 NONE/- text/css
Небольшое дополнение:Информация о членстве в группе хранится в кеше squida (по умолчанию) 1 час, а в кеше Winbinda - 300 сек.
Чтобы не ждать столько времени при перемещении пользователя из одной группы в другую
советую добавить в squid.conf при описании внешиx ACL опцию ttl,примерно так:external_acl_type InetGroup-proxy-08-20ww ttl=0 %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
а в smb.conf:
[global]
winbind cache time = 0URL: http://www.opennet.me/openforum/vsluhforumID12/3857.html#4
Обсуждается: http://www.opennet.me/tips/info/1378.shtml
у меня почти тоже самое только группы posixGroup из LDAP
и external_acl я переписал на сишник в свое время.
C нулевым временем жизни winbind при большом количестве пользователей (>200) ложится контроллер домена.
Проверено временем...
нулевое тоже не ставлю,
15 сек обычно самое то для меня.
народ а можно подробнее про ldap ? Давно уже ищу инфу.
Самое гнусное во всем этом то, что external acl до сих пор нельзя прикрутить к http_reply_access. Т.е. нельзя разделить кому _в домене_ можно скачивать mp3 и слушать радио, а кому нет. Это делается только по url_regex, urlpath_regex или по ip, а это ненадежно. В инете полно ссылок "скачайте, потом переименуйте в ...". Так и приходится юзать ISA для статистики и фильтров, а сквид только в режиме кэша без acl.
А можно узнать в чём ошибка "родного" wbinfo_group.pl?
(у меня как бы всё работает...)
#Здесь описываем внешие ACL
external_acl_type InetGroup-proxy-08-20ww %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in work week from 08-00 to 20-00
external_acl_type InetGroup-proxy-08-20aw %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in all week from 08-00 to 20-00
external_acl_type InetGroup-proxy-00-24all %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
# accesse in internet in all week from 00-00 to 24-00А, по-моему, нет необходимости три раза прописывать. Достаточно написать
external_acl_type InetGroup-proxy %LOGIN /usr/local/squid/libexec/wbinfo_group.pl
и проверку на принадлежность к группе проводить через нее
Прописано трижды, т.к. проверка идет по трем группам в домене:
proxy-08-20ww - доступ с 8 до 20 work week
proxy-08-20aw - доступ с 8 до 20 all week
proxy-00-24all - доступ круглосуточноВ зависимости от членства в группе у пользователя работает интернет в разное время.
>Прописано трижды, т.к. проверка идет по трем группам в домене:
>proxy-08-20ww - доступ с 8 до 20 work week
>proxy-08-20aw - доступ с 8 до 20 all week
>proxy-00-24all - доступ круглосуточно
>
>В зависимости от членства в группе у пользователя работает интернет в разное
>время.А средствами Squid нельзя время доступа определять?
acl aclname time [day-abbrevs] [h1:m1-h2:m2]
# day-abbrevs:
# S - Sunday
# M - Monday
# T - Tuesday
# W - Wednesday
# H - Thursday
# F - Friday
# A - Saturday
# h1:m1 must be less than h2:m2
Кстати, кто-нибудь ответит мне, в чём же всё-таки ошибка "родного" wbinfo_group.pl???
>>Прописано трижды, т.к. проверка идет по трем группам в домене:
>>proxy-08-20ww - доступ с 8 до 20 work week
>>proxy-08-20aw - доступ с 8 до 20 all week
>>proxy-00-24all - доступ круглосуточно
>>
>>В зависимости от членства в группе у пользователя работает интернет в разное
>>время.
>
>А средствами Squid нельзя время доступа определять?
>
>acl aclname time [day-abbrevs] [h1:m1-h2:m2]
># day-abbrevs:
>
>#
> S - Sunday
>#
> M - Monday
>#
> T - Tuesday
>#
> W - Wednesday
>#
> H - Thursday
>#
> F - Friday
>#
> A - Saturday
># h1:m1
>must be less than h2:m2
Внимательно читаем:
# Разграничиваем доступ по времени
acl work-week time MTWHF 08:00-20:00 # Доступ с 08-00 до 20-00 с понедельника по пятницу
acl all-week time SMTWHFA 08:00-20:00 # Доступ с 08-00 до 20-00 всю неделю
acl all-time time SMTWHFA 00:00-24:00 # Доступ круглосуточно всю неделюИ снова читаем внимательно:
Прописано трижды, т.к. проверка идет по трем группам в домене:
proxy-08-20ww - доступ с 8 до 20 work week
proxy-08-20aw - доступ с 8 до 20 all week
proxy-00-24all - доступ круглосуточноПеревожу на доступный язык.
Есть Вася, Ваня, Маня + туева хуча сотрудников, которым разрешено ходить в Инет с 08-00 до 20-00. И то только с понедельника по пятницу.
Есть Петя + еще не большая кучка народу, которому можно тоже самое, но 7 дней в неделю.
И есть Дима + несколько человек, которым нужно по работе ходить в инет 7 дней в неделю 24 часа в сутки.Так вот, Вася и т.д состоят в группе АД proxy-08-20ww, Петя - в proxy-08-20aw, а Дима - в proxy-00-24all.
И опять внимательно читаем:
# Собираем все в кучу и проверяем на предмет получения дуступа к ИНТЕРНЕТ
http_access allow you_domain work-week InetAccess-proxy-08-20ww
http_access allow you_domain all-week InetAccess-proxy-08-20aw
http_access allow you_domain all-time InetAccess-proxy-00-24allЧто тут не понятного? Или есть другой способ? Готов выслушать.
С Уважением, Александр.
>Внимательно читаем:
>. . .
>Перевожу на доступный язык.
>. . .
>И опять внимательно читаем:
># Собираем все в кучу и проверяем на предмет получения дуступа к
>. . .
>С Уважением, Александр.Ok! Ok!
Не надо так нервничать!Меня больше волнует какие "грабли" обнаружены в wbinfo_group.pl
Что стоит сравнить предложенный скрипт с оригинальным из поставки?
Или это уже не оригинально - делать что-то руками?Там вроде не все в порядке с группами, у которых в имени пробелы...
я так понимаю что данная схема не будет работать с транспарентым сквидом?
Доброго времени суток.
У меня вопрос про такой. Изменив пользователю группу в AD или удалив из группы не применяются параметры сразу
т.е в AD удаляю (допустим) из группы, делаю на сквиде
/etc/init.d/squid reload && tail -f /var/log/squid/cache.logон выдает, что пользователь остался в той группе, из которой удалила его. По совету Nichls изменяла конфиг сквида
external_acl_type AD_Users ttl=5 %LOGIN /usr/lib/squid/wbinfo_group.pl
и самбы
winbind cache time = 0
Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.Необходимо прописать время, через которое будет обновляться игра по группам из AD.
п.с. Если такое обсуждалось - извиняйте, нашла ответ в этой статье, но не помогло.
Надежда.
>Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
>
>Необходимо прописать время, через которое будет обновляться игра по группам из AD.
>
>
>п.с. Если такое обсуждалось - извиняйте, нашла ответ в этой статье, но
>не помогло.
>Надежда.Думаю, никто ничего не посоветует, т.к. это "проблема" чисто squid'а.
При релоаде перечитывается конфигурационный файл, а при стоп/старте выполняются заново все необходимые запросы, в том числе и к AD...
>Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
>Привет.
Странно.
winbind cache time = 0 именно из-за этой проблемы и прописывал.PS
Если меняю конфиг - то через релоад конфигурации.
Если выбрасываю из группы - через stop/start демона.
Спасибо большое MVictorL и Nichls! Значит больше не буду тратить время на решение этой проблемы)) Ибо проблемы нет, как таковой.
значит буду ребутить демон сквида.
Подскажите, не могу понять, как добиться выводаroot@demon#tail -f /usr/local/squid/var/logs/cache.log
Got YOU-DOMAIN\\user1 proxy-08-20ww from squid
Sending ERR to squid
Got YOU-DOMAIN\\user1 proxy-08-20aw from squid
Sending ERR to squid
Got YOU-DOMAIN\\user1 proxy-00-24all from squid
Sending OK to squid
# Тут явно видно, что пользователя user1 нашли в группе proxy-00-24all и squid'у передано OK
Got YOU-DOMAIN\\user2 proxy-08-20ww from squid
Sending OK to squid
Got YOU-DOMAIN\\user3 proxy-08-20ww from squid
Sending OK to squidвот этих строчек в лог? у меня там либо ничего, либо если включаешь debug_options ALL,1 то в лог сыплется много всего, но таких строк нет. есть например:
2009/07/09 13:18:36| The request GET http://www.google.ru/search?hl=ru&newwindow=1&q=aclmatchexte... is ALLOWED, because it matched 'ppsrc'
2009/07/09 13:18:36| aclMatchExternal: fastntgroup("dmarkov gia-inet-fast") = lookup needed
2009/07/09 13:18:36| aclMatchExternal: slowntgroup("dmarkov gia-inet-slow") = lookup neededстрочки такого вида, но из них непонятно, в какую же группу попадает и попадает ли вообще пользователь...
Я пытаюсь настроить разграничение по delay_pools на основе групп windows, и чего-то у меня у всех получается "быстро"
делал так:external_acl_type slowntgroup children=5 %LOGIN /usr/local/libexec/squid/wbinfo_group.pl
external_acl_type fastntgroup children=5 %LOGIN /usr/local/libexec/squid/wbinfo_group.placl slowgroup external slowntgroup gia-inet-slow
acl fastgroup external fastntgroup gia-inet-fastdelay_pools 2 # 2 delay pools
delay_class 1 2 # pool 1 is a class 2 pool
delay_class 2 2 # pool 2 is a class 2 pool
delay_access 1 allow fastgroup
delay_access 1 deny all
delay_access 2 allow slowgroup
delay_access 2 deny all
delay_parameters 1 -1/-1 -1/-1
delay_parameters 2 -1/-1 2000/8000squid собран с поддержкой delay_pools, аутентификация через домен проходит - используется
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="PP+gia-inet"и все понимает...
отдельный запуск wbinfo_group.pl правильно реагирует на членство в группах - выдает соответственно err и ok
Так и не понял, как добиться вывода в лог.
Но с основной проблемой разобрался - была такая ошибка, стоялоhttp_access allow allusers ppsrc
сделал
http_access allow slowgroup ppsrc
http_access allow fastgroup ppsrcи разграничение заработало.
Автор всего этого безобразия не отобразил external_acl_type в acl. После этого непонятно, чего он пляски с бубном тут устраивает.
Ошибся. Отображение есть.