Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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
Так же и с портами. _________________ Съешь еще мягких французских булок,да выпей чаю! |
|
Вернуться к началу |
|
|
|