Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

SQUID, acl - howto

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
Pingvinenok



Зарегистрирован: 30.06.2005
Сообщения: 171

СообщениеДобавлено: Пн Июл 18 2005 07:31    Заголовок сообщения: SQUID, acl - howto Ответить с цитатой

Привет всем!
Не могу сообразить, как настроить доступ в сквиде.
Допустим, имеем простую конфигу acl и http_access:

acl limitedusers proxy_auth REQUIRED
acl allowusers proxy_auth admin
acl badfiles url_regex -i /*.mp3$

http_access deny badfiles !allowusers
http_access allow limitedusers
http_access allow allowusers

т.е. 2 группы юзеров - одним можно все, другим нельзя mp3
в принципе, все работает, но! Допустим, зашли под логином группы limitedusers и кликнули *.mp3 . Сквид запрашивает пароль!
Как бы избежать этого? чтобы сразу сквид 401 ошибку выдавал?
Скажу сразу - по IP делить нельзя - адреса динамические!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Ср Июл 20 2005 18:44    Заголовок сообщения: Ответить с цитатой

Для обоих категорий паользователей используется авторизация.

Как отличить правильных пользователей от неправильных не зная аккаунт? Правильно! Никак.
Поэтому при первом обращении в Инет милости просим сказать как вас зовут, а уж потом мы посмотрим что вам можно, а что нельзя.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Pingvinenok



Зарегистрирован: 30.06.2005
Сообщения: 171

СообщениеДобавлено: Пт Июл 22 2005 12:58    Заголовок сообщения: Ответить с цитатой

And3008, полностью согласен.
Но вы, похоже, немного не поняли.
Речь идет о запросе на скачивание songs.mp3 уже после авторизации на сквиде. Т.е сначала LimitedUser запрашивает www.rambler.ru, успешно авторизуется на сквиде, получает страницу, а потом кликает www.rambler.ru/songs.mp3. И тут сквид снова запрашивает авторизацию! И только после 3 попыток выдает юзеру cache_access_denied или аналогично. Вот от этого как избавиться?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пт Июл 22 2005 20:24    Заголовок сообщения: Ответить с цитатой

Попробуй так:
Вместо http_access deny badfiles !allowusers
Напиши http_access deny badfiles limitedusers
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Pingvinenok



Зарегистрирован: 30.06.2005
Сообщения: 171

СообщениеДобавлено: Сб Июл 23 2005 08:14    Заголовок сообщения: Ответить с цитатой

Попробовал. Так вообще никого не пускает.
Все дело, видимо, в параметре REQUIRED и\или одной особенности функции ClientAccessCheckDone файла clientside.c исходников сквида, а именно:
Код:

/* access allowed*/
    } else {
   [b]int require_auth = (answer == ACCESS_REQ_PROXY_AUTH || aclIsProxyAuth(AclMatchedName));[/b]
/*
.....   
*/
   if (require_auth) {
       if (!http->flags.accel) {
      /* Proxy authorisation needed */
      status = HTTP_PROXY_AUTHENTICATION_REQUIRED;
                  }
            if (page_id == ERR_NONE)
          page_id = ERR_CACHE_ACCESS_DENIED;
   } else {
       status = HTTP_FORBIDDEN;
       if (page_id == ERR_NONE)
      page_id = ERR_ACCESS_DENIED;

   }


Если бы было так, как хочется, было бы примерно так:
Код:

/* access allowed*/
    } else {
   [b]int require_auth = (answer == ACCESS_REQ_PROXY_AUTH);
         int require_auth_regex = aclIsProxyAuth(AclMatchedName);[/b]
/*
.....   
*/
   if (require_auth) {
       if (!http->flags.accel) {
      /* Proxy authorisation needed */
      status = HTTP_PROXY_AUTHENTICATION_REQUIRED;
                  }
            if (page_id == ERR_NONE)
          page_id = ERR_CACHE_ACCESS_DENIED;
   [b]} else if (require_auth_regex) {[/b]
       status = HTTP_FORBIDDEN;
       if (page_id == ERR_NONE)
      page_id = ERR_ACCESS_DENIED;
   } else {
       status = HTTP_FORBIDDEN;
       if (page_id == ERR_NONE)
      page_id = ERR_ACCESS_DENIED;

   }


Хотел попробовать, что из этого выйдет (сама по себе компиляция после моих изменений прошла успешно) и потестировать, НО!
Выношу граблю в отдельную ветку http://forum.citforum.ru/viewtopic.php?t=36986
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Avalanche



Зарегистрирован: 10.03.2004
Сообщения: 95
Откуда: г.Норильск

СообщениеДобавлено: Пн Июл 25 2005 04:39    Заголовок сообщения: Ответить с цитатой

Помогите разграничить доступ


У меня сейчас вот так
auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/etc/passwd
acl users proxy_auth REQUIRED
http_access allow users

#acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

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 Safe_ports port 403 #
acl CONNECT method CONNECT

соответственно пользователи которые есть в файле passwd заходят
файл passwd
user1:******
user2:******
user3:******
user4:******

можно ли так чтоб user1,user2 имел весь доступ
а user3,user4 имел доступ только по 443 порту для ICQ
и только на один сайт www.news.ru
это реально сделать ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Pingvinenok



Зарегистрирован: 30.06.2005
Сообщения: 171

СообщениеДобавлено: Пн Июл 25 2005 05:43    Заголовок сообщения: Ответить с цитатой

Однозначно да.
Что-то вроде(не претендуя на точность до запятой):
acl AllHTTPUsers proxy_auth user1 user2
acl NewsOnly proxy_auth user3 user4
acl news url_regex -i /www.news.ru$
http_access allow news NewsOnly
http_access deny NewsOnly
http_access allow AllHTTPUsers

Так же и с портами.
_________________
Съешь еще мягких французских булок,да выпей чаю!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...