URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 36681
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Авторизация пользователей по доменным группам AD в squid"

Отправлено auto_tips , 11-Фев-07 11:41 
В 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 minutes

auth_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 = yes

srv1 и 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 squid

root@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 = 0

URL: http://www.opennet.me/openforum/vsluhforumID12/3857.html#4
Обсуждается: http://www.opennet.me/tips/info/1378.shtml


Содержание

Сообщения в этом обсуждении
"Авторизация пользователей по доменным группам AD в squid"
Отправлено andrey , 11-Фев-07 11:41 
у меня почти тоже самое только группы posixGroup из LDAP
и external_acl я переписал на сишник в свое время.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Comatoz , 12-Фев-07 09:31 
C нулевым временем жизни winbind при большом количестве пользователей (>200) ложится контроллер домена.
Проверено временем...

"Авторизация пользователей по доменным группам AD в squid"
Отправлено dsl , 12-Фев-07 14:27 
нулевое тоже не ставлю,
15 сек обычно самое то для меня.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено arruah , 13-Фев-07 08:11 
народ а можно подробнее про ldap ? Давно уже ищу инфу.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Sergei , 19-Фев-07 10:00 
Самое гнусное во всем этом то, что external acl до сих пор нельзя прикрутить к http_reply_access. Т.е. нельзя разделить кому _в домене_ можно скачивать mp3 и слушать радио, а кому нет. Это делается только по url_regex, urlpath_regex или по ip, а это ненадежно. В инете полно ссылок "скачайте, потом переименуйте в ...". Так и приходится юзать ISA для статистики и фильтров, а сквид только в режиме кэша без acl.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено MVictorL , 28-Фев-07 11:09 
А можно узнать в чём ошибка "родного" wbinfo_group.pl?
(у меня как бы всё работает...)

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Мишин Дмитрий , 06-Мрт-07 09:43 
#Здесь описываем внешие 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
и проверку на принадлежность к группе проводить через нее


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Nichls , 26-Мрт-07 18:00 
Прописано трижды, т.к. проверка идет по трем группам в домене:
proxy-08-20ww - доступ с 8 до 20 work week
proxy-08-20aw - доступ с 8 до 20 all week
proxy-00-24all - доступ круглосуточно

В зависимости от членства в группе у пользователя работает интернет в разное время.


"Авторизация пользователей по доменным группам AD в squid"
Отправлено MVictorL , 28-Мрт-07 18:10 
>Прописано трижды, т.к. проверка идет по трем группам в домене:
>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


"Авторизация пользователей по доменным группам AD в squid"
Отправлено MVictorL , 28-Мрт-07 18:12 
Кстати, кто-нибудь ответит мне, в чём же всё-таки ошибка "родного" wbinfo_group.pl???

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Nichls , 31-Мрт-07 11:11 
>>Прописано трижды, т.к. проверка идет по трем группам в домене:
>>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

Что тут не понятного? Или есть другой способ? Готов выслушать.

С Уважением, Александр.


"Авторизация пользователей по доменным группам AD в squid"
Отправлено MVictorL , 02-Апр-07 15:45 
>Внимательно читаем:
>. . .
>Перевожу на доступный язык.
>. . .
>И опять внимательно читаем:
># Собираем все в кучу и проверяем на предмет получения дуступа к
>. . .
>С Уважением, Александр.

Ok! Ok!
Не надо так нервничать!

Меня больше волнует какие "грабли" обнаружены в wbinfo_group.pl


"Авторизация пользователей по доменным группам AD в squid"
Отправлено reType , 23-Апр-07 06:48 
Что стоит сравнить предложенный скрипт с оригинальным из поставки?
Или это уже не оригинально - делать что-то руками?

Там вроде не все в порядке с группами, у которых в имени пробелы...


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Snake , 14-Сен-07 10:57 
я так понимаю что данная схема не будет работать с транспарентым сквидом?

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Nadya , 10-Фев-09 17:37 
Доброго времени суток.
У меня вопрос про  такой. Изменив пользователю группу в 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.

п.с. Если такое обсуждалось - извиняйте, нашла ответ в этой статье, но не помогло.
Надежда.


"Авторизация пользователей по доменным группам AD в squid"
Отправлено MVictorL , 10-Фев-09 21:13 
>Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
>
>Необходимо прописать время, через которое будет обновляться игра по группам из AD.
>
>
>п.с. Если такое обсуждалось - извиняйте, нашла ответ в этой статье, но
>не помогло.
>Надежда.

Думаю, никто ничего не посоветует, т.к. это "проблема" чисто squid'а.
При релоаде перечитывается конфигурационный файл, а при стоп/старте выполняются заново все необходимые запросы, в том числе и к AD...


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Nichls , 10-Фев-09 22:59 
>Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
>

Привет.
Странно.
winbind cache time = 0 именно из-за этой проблемы и прописывал.

PS
Если меняю конфиг - то через релоад конфигурации.
Если выбрасываю из группы - через stop/start демона.


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Nadya , 11-Фев-09 09:37 
Спасибо большое MVictorL и  Nichls! Значит больше не буду тратить время на решение этой проблемы)) Ибо проблемы нет, как таковой.
значит буду ребутить демон сквида.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Дмитрий , 09-Июл-09 11:38 
Подскажите, не могу понять, как добиться вывода

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.pl

acl slowgroup external slowntgroup gia-inet-slow
acl fastgroup external fastntgroup gia-inet-fast

delay_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/8000

squid собран с поддержкой 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


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Дмитрий , 09-Июл-09 11:57 
Так и не понял, как добиться вывода в лог.
Но с основной проблемой разобрался - была такая ошибка, стояло

http_access allow allusers ppsrc

сделал

http_access allow slowgroup ppsrc
http_access allow fastgroup ppsrc

и разграничение заработало.


"Авторизация пользователей по доменным группам AD в squid"
Отправлено Кирилл , 10-Ноя-09 18:04 
Автор всего этого безобразия не отобразил external_acl_type в acl. После этого непонятно, чего он пляски с бубном тут устраивает.

"Авторизация пользователей по доменным группам AD в squid"
Отправлено Кирилл , 11-Ноя-09 10:06 
Ошибся. Отображение есть.