The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Авторизация пользователей по доменным группам AD в squid
В 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
 
09.02.2007 , Автор: Nichls , Источник: http://www.opennet.dev/openforum/vsl...
Ключи: squid, samba, auth, domain
Раздел:    Корень / Администратору / Сетевые сервисы / Прокси сервер Squid / ACL, ограничения трафика и пользователей

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, andrey (??), 11:41, 11/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    у меня почти тоже самое только группы posixGroup из LDAP
    и external_acl я переписал на сишник в свое время.
     
  • 1.2, Comatoz (?), 09:31, 12/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    C нулевым временем жизни winbind при большом количестве пользователей (>200) ложится контроллер домена.
    Проверено временем...
     
  • 1.3, dsl (?), 14:27, 12/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    нулевое тоже не ставлю,
    15 сек обычно самое то для меня.
     
  • 1.4, arruah (??), 08:11, 13/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    народ а можно подробнее про ldap ? Давно уже ищу инфу.
     
  • 1.6, Sergei (??), 10:00, 19/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Самое гнусное во всем этом то, что external acl до сих пор нельзя прикрутить к http_reply_access. Т.е. нельзя разделить кому _в домене_ можно скачивать mp3 и слушать радио, а кому нет. Это делается только по url_regex, urlpath_regex или по ip, а это ненадежно. В инете полно ссылок "скачайте, потом переименуйте в ...". Так и приходится юзать ISA для статистики и фильтров, а сквид только в режиме кэша без acl.
     
  • 1.7, MVictorL (ok), 11:09, 28/02/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А можно узнать в чём ошибка "родного" wbinfo_group.pl?
    (у меня как бы всё работает...)
     
  • 1.8, Мишин Дмитрий (?), 09:43, 06/03/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    #Здесь описываем внешие 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
    и проверку на принадлежность к группе проводить через нее

     
     
  • 2.9, Nichls (??), 18:00, 26/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Прописано трижды, т.к. проверка идет по трем группам в домене:
    proxy-08-20ww - доступ с 8 до 20 work week
    proxy-08-20aw - доступ с 8 до 20 all week
    proxy-00-24all - доступ круглосуточно

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

     
     
  • 3.10, MVictorL (??), 18:10, 28/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Прописано трижды, т.к. проверка идет по трем группам в домене:
    >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

     
     
  • 4.11, MVictorL (??), 18:12, 28/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, кто-нибудь ответит мне, в чём же всё-таки ошибка "родного" wbinfo_group.pl???
     
  • 4.12, Nichls (??), 11:11, 31/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Внимательно читаем Разграничиваем доступ по времени acl work-week time MTWHF ... большой текст свёрнут, показать
     
     
  • 5.13, MVictorL (??), 15:45, 02/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Внимательно читаем:
    >. . .
    >Перевожу на доступный язык.
    >. . .
    >И опять внимательно читаем:
    ># Собираем все в кучу и проверяем на предмет получения дуступа к
    >. . .
    >С Уважением, Александр.

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

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

     
     
  • 6.14, reType (?), 06:48, 23/04/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Что стоит сравнить предложенный скрипт с оригинальным из поставки?
    Или это уже не оригинально - делать что-то руками?

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

     

  • 1.15, Snake (??), 10:57, 14/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я так понимаю что данная схема не будет работать с транспарентым сквидом?
     
  • 1.18, Nadya (ok), 17:37, 10/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Доброго времени суток.
    У меня вопрос про  такой. Изменив пользователю группу в 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.

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

     
     
  • 2.19, MVictorL (??), 21:13, 10/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
    >
    >Необходимо прописать время, через которое будет обновляться игра по группам из AD.
    >
    >
    >п.с. Если такое обсуждалось - извиняйте, нашла ответ в этой статье, но
    >не помогло.
    >Надежда.

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

     
  • 2.20, Nichls (??), 22:59, 10/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Не помогает, релоад конфигурации тоже. Помогает только stop start демона свкида.
    >

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

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

     

  • 1.21, Nadya (ok), 09:37, 11/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо большое MVictorL и  Nichls! Значит больше не буду тратить время на решение этой проблемы)) Ибо проблемы нет, как таковой.
    значит буду ребутить демон сквида.
     
  • 1.22, Дмитрий (??), 11:38, 09/07/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите, не могу понять, как добиться вывода root demon tail -f usr local sq... большой текст свёрнут, показать
     
     
  • 2.23, Дмитрий (??), 11:57, 09/07/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Так и не понял, как добиться вывода в лог.
    Но с основной проблемой разобрался - была такая ошибка, стояло

    http_access allow allusers ppsrc

    сделал

    http_access allow slowgroup ppsrc
    http_access allow fastgroup ppsrc

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

     

  • 1.24, Кирилл (??), 18:04, 10/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор всего этого безобразия не отобразил external_acl_type в acl. После этого непонятно, чего он пляски с бубном тут устраивает.
     
     
  • 2.25, Кирилл (??), 10:06, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Ошибся. Отображение есть.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру