The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Запрет доступа на саты по времени., !*! Jss, 28-Янв-08, 12:51  [смотреть все]
Гуру, помогите пожалуйста разобраться:
допустим на mail.ru есть вещи типа знакомства, круг итд так вот, необходимо закрыть доступ к этому делу в диапазоны времени и разрешить при этом использовать доступ к почте на мейле через веб интерфейс.
У меня получилось закрыть доступ ко всему на mail.ru и оставить доступ к почте но если при заходе в браузер при авторизации нажимаешь отмену то получаеться ползать неавторизированному пользователю по white листу.

auth_param basic program /usr/local/squid/libexec/ncsa_auth /etc/squid/internet_users
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
# ----- user
acl test proxy_auth test
# ----- raznoe
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 25        #
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
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 timezp time 08:00-13:00
acl timezp1 time 14:00-18:00
acl ftpproto proto ftp
acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.zip$ \.rar$ \.avi$ \.arj$ \.mpeg$ \.mpg$ \.exe$ \.com$ \.ex$ \.7g$ \.tar$
#
# ----- spiski
acl socnet url_regex -i "/proxy/list/socnet"
acl good url_regex -i "/proxy/list/good"
acl bad url_regex -i "/proxy/list/bad"
#
# ----- access
http_access allow SSL_ports
icp_access allow all
http_access deny bad
http_access deny media
http_access allow ftpproto
http_access allow good
http_access deny socnet timezp
http_access deny socnet timezp1
http_access allow test
http_access deny CONNECT !SSL_ports
http_access deny manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny all
#
# ----- delay
delay_pools 1

delay_class 1 1
delay_access 1 allow test
delay_access 1 deny all
delay_parameters 1 -1/-1

в листе "good"
http://mail.ru
win.mail.ru

в листе "socnet"
\mail.ru

  • Запрет доступа на саты по времени., !*! Andrey Mitrofanov, 14:01 , 28-Янв-08 (1)
    Сколько раз твердили миру... rtfm... что 1)http_access выполняются сверху вниз до первого "совпавшего", следующие уже не проверяются и _его_ действие (allow|deny) используется для; 2) образцы в одном acl (=по имени) "складываются" по ИЛИ, а в одной строке *_access по И. Вооружившись этим Знанием и надо читать, что ж ты сам себе написал. Ж*)

    >acl timezp time 08:00-13:00
    >acl timezp1 time 14:00-18:00

    Если они ^^ не используются по отдельности, "собираем" в один acl:
    acl timezp time 08:00-13:00 14:00-18:00
    то же, что
    acl timezp time 08:00-13:00
    acl timezp time 14:00-18:00
    , но короче. Сравни с определением Safe_ports.

    ># ----- access
    >http_access allow SSL_ports

    Тут всем можно. = Независимо от пароля и времени.
    >http_access deny bad
    >http_access deny media
    >http_access allow ftpproto
    >http_access allow good

    Эти ^^^ тоже -- независимо от пароля и времени.

    >http_access deny socnet timezp
    >http_access deny socnet timezp1
    >http_access allow test

    = пользователя test не проверять дальше и просто пустить.
    Заметь, что тех, кого пустили в правилах allow выше^^^ может даже и пароль не спрашивать.

    >http_access deny CONNECT !SSL_ports
    >http_access deny manager localhost

    ? allow? ^^^ :)
    >http_access deny manager
    >http_access deny !Safe_ports
    >http_access deny all
    >#

    Я бы организовывал так: сначала все правила deny, которые "общие", потом правила чётко выбирающие что именно можно, потом финальное deny all.

    что-нибудь вроде ---
    http_access deny CONNECT !SSL_ports
    http_access deny !Safe_ports
    http_access deny bad
    http_access deny media

    #"Локальная" ветка allow-listed+1*deny-all~ , для одного протокола
    http_access allow manager localhost
    http_access deny manager

    #про авторизацию надо отдельно смотреть...
    #http_access allow test
    #например, пускать [дальше] только тех, кто сказал правильный пароль~~
    #?acl passed proxy_auth REQUIRED
    #?http_access deny !passed
    #если я не напутал чего

    http_access allow SSL_ports
    http_access allow ftpproto
    http_access allow good
    http_access allow socnet !timezp

    http_access deny all
    #

    • Запрет доступа на саты по времени., !*! Jss, 15:00 , 28-Янв-08 (2)
      (squid/2.6.STABLE18)

      Получилось так
      # Говорим чем будем авторизовать и где лежит
      auth_param basic program /usr/local/squid/libexec/ncsa_auth /etc/squid/internet_users
      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

      # Создал в списках (ncsa_auth) пользователя test, в alc делаю раздельно для каждого
      # пользователя для дальнейшего использования в delay_pools
      acl test proxy_auth test

      # С этим все понятно
      acl manager proto cache_object
      acl localhost src 127.0.0.1/255.255.255.255
      acl all src 0.0.0.0/0.0.0.0
      acl icq_ports port 443 #HTTPS
      acl Safe_ports port 80
      acl CONNECT method CONNECT
      acl timezp time 08:00-13:00 14:00-18:00
      acl ftpproto proto ftp
      acl media urlpath_regex -i \.mp3$

      # Создал списки
      acl socnet url_regex -i "/proxy/list/socnet"
      acl good url_regex -i "/proxy/list/good"
      acl bad url_regex -i "/proxy/list/bad"

      # Разрешаем 443
      http_access allow icq_ports
      # не совсем понимаю
      http_access deny CONNECT icq_ports
      # запрещаем конекты на порты
      http_access deny !Safe_ports
      # все понятно
      http_access deny bad
      http_access deny media
      http_access allow manager localhost
      http_access deny manager
      # Если пользователь test прошел авторизацию то разрешить
      http_access allow test
      # Разрешаем ftp
      http_access allow ftpproto
      # разрешаем белый список
      http_access allow good
      # Запрещаем socnet в диапазон времени timezp
      http_access deny socnet timezp
      http_access deny all

      # делаем для пользователя test ограничения по скорости
      delay_pools 1
      delay_class 1 1
      delay_access 1 allow test
      delay_access 1 deny all
      delay_parameters 1 3000/3000

      При таком конфиге получается что пользователю test после авторизации можно ходить не смотря на списки socnet и good а если не авторизовался то ничего нельзя кроме 443, а нужно чтоб в timezp было закрыт доступ на socnet но разрешен good и все это только авторизованным.
      P.S. Понимаю что косячу но не понимаю где.

      • Запрет доступа на саты по времени., !*! Andrey Mitrofanov, 15:17 , 28-Янв-08 (3)
        >Получилось так

        (2)

        ># Разрешаем 443
        >http_access allow icq_ports

        Это вообще-то не icq :) в общем случае...
        ># не совсем понимаю

        Сам написал и не понял, то есть? :))
        >http_access deny CONNECT icq_ports
        ># Если пользователь test прошел авторизацию то разрешить
        >http_access allow test

        (1)
        ># Разрешаем ftp
        >http_access allow ftpproto
        ># разрешаем белый список
        >http_access allow good
        ># Запрещаем socnet в диапазон времени timezp
        >http_access deny socnet timezp

        Обрати внимание, что это ^^^ **не** одно и тоже, что
        http_access allow socnet !timezp
        как и (1) не одно и то же, что
        http_access deny !test

        >http_access deny all
        >При таком конфиге получается что пользователю test после авторизации можно ходить не
        >смотря на списки socnet и good а если не авторизовался то
        >ничего нельзя кроме 443

        Именно это :) и написано в конфигурации....

        >, а нужно чтоб в timezp было закрыт
        >доступ на socnet но разрешен good и все это только авторизованным.

        #Вот:
        acl passed proxy_auth REQUIRED
        http_access deny !passed
        http_access allow good
        http_access allow socnet !timezp
        http_access deny all
        #-именно то, что ты написал.

        Но, боюсь, не то, что _хотел_. :-D

        >P.S. Понимаю что косячу но не понимаю где.

        #Вот так по-проще будет... может быть:
        acl passed proxy_auth REQUIRED
        http_access allow passed good
        http_access allow passed socnet !timezp
        http_access deny all
        #а может и нет. %)

        • Запрет доступа на саты по времени., !*! Jss, 15:43 , 28-Янв-08 (4)
          Спасибо Андрей.

          >># Разрешаем 443
          >>http_access allow icq_ports
          >Это вообще-то не icq :) в общем случае...

          Это понятно. HTTPS

          >># не совсем понимаю
          >Сам написал и не понял, то есть? :))
          >>http_access deny CONNECT icq_ports

          Ага, растолкуйте пожалуйста (если несложно)

          >># Если пользователь test прошел авторизацию то разрешить
          >>http_access deny socnet timezp
          >Обрати внимание, что это ^^^ **не** одно и тоже, что
          >http_access allow socnet !timezp
          >как и (1) не одно и то же, что
          >http_access deny !test

          Не совсем понял, но имхо выражение "!timezp" говорит о том что - все timezp
          а я в acl указал acl timezp time 08:00-13:00 14:00-18:00

          >#-именно то, что ты написал.
          >Но, боюсь, не то, что _хотел_. :-D

          :-D именно так

          >#Вот так по-проще будет... может быть:
          >acl passed proxy_auth REQUIRED
          >http_access allow passed good
          >http_access allow passed socnet !timezp
          >http_access deny all
          >#а может и нет. %)

          Точно, наверное так и должно быть, ааа только не понял почему socnet allow мне же надо deny в это время, и как прикрутить сюда пользователя тест а не всех авторизовавшихся, или я совсем ничего не понимаю ?

          • Запрет доступа на саты по времени., !*! Jss, 16:26 , 28-Янв-08 (5)
            acl test proxy_auth test # авторизация на пользователя test
            http_access allow test good # разрешаем пользователю тест лезть на url из списка good
            http_access allow test socnet !timezp # разрешаем пользователю тест лезть на url из списка socnet  в диапазон времени указанный в timezp
            http_access deny all # запрещяем все всем.

            Но тогда получается что пользователь никуда не может ходит кроме списков разрешения, а мне надо чтоб он ходил везде кроме списка socnet во время timezp но при этом запрете мог всегда пройти на URL списка good

          • Запрет доступа на саты по времени., !*! Andrey Mitrofanov, 17:39 , 28-Янв-08 (6)
            >>># Если пользователь test прошел авторизацию то разрешить
            >>>http_access deny socnet timezp
            >>Обрати внимание, что это ^^^ **не** одно и тоже, что

            ещё раз! :) Hint^^^, hint^^^ !
            >>http_access allow socnet !timezp
            >Не совсем понял, но имхо выражение "!timezp" говорит о том что -
            >все timezp
            >а я в acl указал acl timezp time 08:00-13:00 14:00-18:00

            !timezp = "условие timezp не совпало"

            ##http_access allow socnet !timezp
            [[если предыдущие правила не дали результата, "не сопоставились",]]
            ~разрешить доступ, если( URL сопоставился с "socnet" И время НЕ в "timezp" )
            [[, иначе продолжить сопоставлять далее по списку правил.]]

            >>#Вот так по-проще будет... может быть:
            >>acl passed proxy_auth REQUIRED

            ((-->>))
            Перечитай "Сокровенное Знание" из поста#1. Первый абзац!
            Дополнение: ! означает "не".

            Читаем (представим, для простоты, что есть только эти 3 строки):
            >>http_access allow passed good
            >>http_access allow passed socnet !timezp
            >>http_access deny all

            if( user.passed() && url.good()) return ALLOW;
            else if (user.passed() && url.socnet() && !time.timezp() ) return ALLOW;
            else  return DENY;

            >>#а может и нет. %)

            Повторять с ((-->>)) до просветления, пока хотябы в "три строчки" не въедешь! :))

            >Точно, наверное так и должно быть, ааа только не понял почему socnet
            >allow мне же надо deny в это время

            "В это время" и получится deny: по _третьему_ правилу --> когда timezp _сопоставится_, !timezp _не_ сопоставится, и второе правило _не_ сработает.

            >, и как прикрутить сюда пользователя тест а не всех авторизовавшихся
            >, или я совсем ничего не понимаю ?

            Ну, про REQUIERED -- это я твоего "хотения" не "разумел"... Вообще, конфигурация, которую я написал скорее пример в попытке "научить читать". Понимание вырабатывай :) , потом можно будет продолжить? ;-)

            • Запрет доступа на саты по времени., !*! Jss, 09:17 , 29-Янв-08 (7)
              Спасибо, очень помог, ночное чтение манов рулит :)
              проблема отсутствия времени сказывается на понимании, сорри за тупость.
              • Запрет доступа на саты по времени., !*! Andrey Mitrofanov, 10:58 , 29-Янв-08 (8)
                >Спасибо, очень помог, ночное чтение манов рулит :)

                Рад помочь, приятно видеть рождение понимания. :-D
                >проблема отсутствия времени сказывается на понимании, сорри за тупость.

                Этт не тупость, просто "более сложные" проблемы не пешаются с наскока и редактирования конфигов "на глазок". Squid, exim, .....

                Успехов!

                • Запрет доступа на саты по времени., !*! Jss, 16:51 , 29-Янв-08 (9)
                  >>acl passed proxy_auth REQUIRED
                  >>http_access allow passed good
                  >>http_access allow passed socnet !timezp
                  >>http_access deny all

                  Получилось что если passed авторизовался то говорим ему что ходить можно только на список good, но как только время НЕ timezp разрешаем ему еще в догонку ползать на url'ки из списка socnet, это осилил :/
                  Но при этом passed не может ходить по url которых нет в списке.
                  но как сделать чтоб можно было ходить куда угодно в любое время но в timezp было запрещенно только \mail.ru но при этом разрешено www.mail.ru и win.mail.ru

                  • Запрет доступа на саты по времени., !*! Jss, 17:24 , 29-Янв-08 (10)
                    Все допер, спасибо.

                    >>>acl passed proxy_auth REQUIRED
                    >>>http_access allow passed good timezp
                    >>>http_access deny passed socnet timezp
                    >>>http_access allow passed
                    >>>http_access deny all

                  • читаем по-тихоньку? начинай писать!, !*! Andrey Mitrofanov, 17:29 , 29-Янв-08 (11)
                    >Но при этом passed не может ходить по url которых нет в
                    >списке.
                    >но как сделать чтоб можно было ходить куда угодно в любое время
                    >но в timezp было запрещенно только \mail.ru но при этом разрешено
                    >www.mail.ru и win.mail.ru

                    acl goodmailru ....
                    acl badmailru ....
                    acl timezpmailru
                    #acl passed ...
                    http_access deny timezpmailru badmailru !goodmailru
                    http_access allow all

                    Похоже?

                    PS: а про passed в этом %) ТЗ ничего не было

                    • читаем по-тихоньку? начинай писать!, !*! Jss, 17:59 , 29-Янв-08 (12)
                      Да нет фишка именно в то что получилось, в смысле вот как хотел.
                            |
                            |
                           \|/
                            \
                      acl test proxy_auth test
                      http_access allow test good timezp     # www.mail.ru win.mail.ru
                      http_access deny test socnet timezp    # \mail.ru
                      http_access allow test
                      http_access deny all

                      Просто в данной конфигурации добился что вне рабочее время (к примеру mail.ru) доступ к услугам типа знакомств и тд на mail.ru забанен но при этом доступ к почте на mail.ru разрешен всегда и еще плюс к этому в обед можно и доп услугами майла воспользоваться, просто посчитал что закрывать все сервисы сайта перечисляя их не стоит, они могут добавляться, проще закрыть все и разрешить только то что нужно.

                      Отец всегда говорит.... читай МАНЫ, не надо беспокоить людей.




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

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