Вопрос по правилам для разных групп

Обсуждение программы редиректора
micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Вопрос по правилам для разных групп

Сообщение micheal »

Добрый день!
Пришёл к Вам за советом. Есть у меня несколько файлов со списками пользователей, которым разрешён разный доступ в Интернет.

К примеру:

Код: Выделить всё

Proxy-access-enable-full
Proxy-access-enable-job-search
Proxy-access-enable-users
В redirector.conf настроим следующее:

Код: Выделить всё

#Глобальная секция
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-full

# Секция JOB
<JOB>
ban_dir  /usr/local/rejik3/banlists/job
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search
Теперь вопросы:
  • 1) Возможно ли в Режик настроить такое правило, чтобы людям из списка Proxy-access-enable-users нельзя было ходить на JOB, а на всё остальное можно?
    2) Возможно ли заблокировать тех пользователей, которые не содержатся в приведённых выше списках?
p.s.
Наверное, тут надо как-то использовать параметр "action", но вот как это всё вместе правильно связать, не понимаю. :)

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

Есть пользователи, которые присутствую в обоих списках Proxy-access-enable-job-search и
Proxy-access-enable-users?

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Да, такое возможно, пользователь может находится одновременно в разных группах.
Так изначально групп было две:

Код: Выделить всё

Proxy-access-enable-full
Proxy-access-enable-users
Затем по мере необходимости стали появляться дополнительные ограничения и соответствующие им разрешающие группы:

Код: Выделить всё

Proxy-access-enable-job-search
Proxy-access-enable-mail
Proxy-access-enable-remote
Proxy-access-enable-support
И сейчас в основной массе у пользователей находится группа "Proxy-access-enable-users" и может быть одна или несколько дополнительных групп.

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

и для каждой группы Proxy-access-enablу-* Вы делаете секцию типа: ?
<JOB>
ban_dir /usr/local/rejik3/banlists/job
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search

Тогда остается только заблокировать доступ для всех пользователей, которых нет в группах.
Логично было бы поместить всех известных пользователей в Proxy-access-enable-users и сделать секцию типа:
<NO_INET>
work_id Proxy-access-enable-users
ban_dir /usr/local/rejik3/banlists/no_inet
url http://127.0.0.1/ban/nelza.html
reverse
в /usr/local/rejik3/banlists/no_inet в урлс файл положить список локальных урлов, как вебсервер с запрещающей страницей, которую можно будет смотреть пользователям вне списка.

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Slava писал(а):и для каждой группы Proxy-access-enablу-* Вы делаете секцию типа: ?
<JOB>
ban_dir /usr/local/rejik3/banlists/job
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search
Да-да, всё верно.

Код: Выделить всё

<NO_INET>
work_id f:/usr/local/rejik3/banlists/Proxy-access-enable-users
ban_dir /usr/local/rejik3/banlists/no_inet
url http://proxy.my-domain/html/squidblacklist/users.html
reverse
Попробовал использовать Вашу конструкцию, но она не корректно срабатывает. :(

Так в логе squid без этой конструкции идёт следующая строчка:

Код: Выделить всё

498620267.978   2028 192.168.177.210 TCP_TUNNEL/200 13934 CONNECT ya.ru:443 user1@MY-DOMAIN HIER_DIRECT/87.250.250.242 -
а с этой конструкцией перестаёт отрабатывать авторизация:

Код: Выделить всё

1498620516.559      0 192.168.177.210 TCP_DENIED/407 4298 GET http://ya.ru/ - HIER_NONE/- text/html
При этом пользователь user1 находится в списке Proxy-access-enable-users:

Код: Выделить всё

grep user1 /usr/local/rejik3/banlists/Proxy-access-enable-users
user1@my-domain
user1

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

При включенной NO_INET в redirector.log что-то пишет при запросах?

Скорее всего пользователь отсутствует, а NO_INET блокирует неизвестного пользователя.

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Извиняюсь, надо действительно сначала логи было посмотреть. Не были права выданы. Для этого выполнил:
/usr/local/rejik3/tools/set-permissions

Редирект сработал, но сейчас он блокирует пользователей из списка Proxy-access-enable-users

Код: Выделить всё

347 2017-06-28 13:59:29 NO_INET: 192.168.177.210  user1@my-domain ya.ru:443
348 2017-06-28 13:59:47 NO_INET: 192.168.177.210  user1@my-domain http://ya.ru/
349 2017-06-28 13:59:47 NO_INET: 192.168.177.210  user1@my-domain http://ya.ru/favicon.ico

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

Формат записи логина пользователя может быть разный, так как в нем есть собака.
Вопрос: в других секциях логины правильно отрабатывают?

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Да, другие секции отлично отрабатывают. Смотрите лог:

Код: Выделить всё

2017-06-28 15:13:58 JOB: 192.168.177.203  user1@my-domain http://hh.ru/ (urls rule: hh.ru)
2017-06-28 15:13:58 JOB: 192.168.177.203  user1@my-domain http://hh.ru/favicon.ico (urls rule: hh.ru)
2017-06-28 15:30:47 MAIL: 192.168.177.203  user1@office.ipe.corp http://mail.ru/ (urls rule: mail.ru)
2017-06-28 15:30:47 MAIL: 192.168.177.203  user1@office.ipe.corp http://mail.ru/favicon.ico (urls rule: mail.ru)
2017-06-28 15:33:40 MAIL: 192.168.177.210  user2@office.ipe.corp http://mail.ru/ (urls rule: mail.ru)
2017-06-28 15:33:41 MAIL: 192.168.177.210 user2@office.ipe.corp http://mail.ru/favicon.ico (urls rule: mail.ru)
Пользователь user1 не может попасть на hh.ru, а пользователь user2 может. И соответственно оба пользователя не могут попасть на mail.ru.

Группа доступа: Proxy-access-enable-job-search

Код: Выделить всё

# grep user /usr/local/rejik3/banlists/Proxy-access-enable-job-search
user2@my-domain
user2
Секции из redirector.conf:

Код: Выделить всё

<JOB>
ban_dir  /usr/local/rejik3/banlists/job
url http://proxy.my-domain/html/squidblacklist/job.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search

<MAIL>
ban_dir  /usr/local/rejik3/banlists/mail
url http://proxy.my-domain/html/squidblacklist/mail.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-mail

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

В no_inet нужно прописать allow_id

Проверил у себя:

Код: Выделить всё

error_log /usr/local/rejik3/redirector.err
change_log /usr/local/rejik3/redirector.log
make-cache /usr/local/rejik3/make-cache


allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-full

<JOB>
ban_dir  /usr/local/rejik3/banlists/job
url http://proxy.my-domain/html/squidblacklist/job.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search

<MAIL>
ban_dir  /usr/local/rejik3/banlists/mail
url http://proxy.my-domain/html/squidblacklist/mail.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-mail

<NO_INET>
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-users
ban_dir /usr/local/rejik3/banlists/no_inet
url http://proxy.my-domain/html/squidblacklist/users.html
reverse
tail Proxy-access-enable-*

Код: Выделить всё

==> Proxy-access-enable-full <==
director

==> Proxy-access-enable-job-search <==
hrmanager

==> Proxy-access-enable-mail <==
postman

==> Proxy-access-enable-users <==
vasia
director
hrmanager
postman
tail mail/urls job/urls no_inet/urls

Код: Выделить всё

==> mail/urls <==
mail.ru

==> job/urls <==
job.ru

==> no_inet/urls <==
proxy.my-domain
su -s /bin/sh squid -c "/usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf"
каждая первая строка - ввод,
вторая ответ редиректора.

Известный пользователь, без привилегий:

Код: Выделить всё

http://yandex.ru 127.0.0.1/- vasia GET
http://yandex.ru 127.0.0.1/- vasia GET

http://mail.ru 127.0.0.1/- vasia GET
http://proxy.my-domain/html/squidblacklist/mail.html 127.0.0.1/- vasia GET

http://job.ru 127.0.0.1/- vasia GET
http://proxy.my-domain/html/squidblacklist/job.html 127.0.0.1/- vasia GET

http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- vasia GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- vasia GET
Неизвестный пользователь:

Код: Выделить всё

http://yandex.ru 127.0.0.1/- petia GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- petia GET

http://mail.ru 127.0.0.1/- petia GET
http://proxy.my-domain/html/squidblacklist/mail.html 127.0.0.1/- petia GET

http://job.ru 127.0.0.1/- petia GET
http://proxy.my-domain/html/squidblacklist/job.html 127.0.0.1/- petia GET

http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- petia GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- petia GET
С доступом к почте:

Код: Выделить всё

http://yandex.ru 127.0.0.1/- postman GET
http://yandex.ru 127.0.0.1/- postman GET

http://mail.ru 127.0.0.1/- postman GET
http://mail.ru 127.0.0.1/- postman GET

http://job.ru 127.0.0.1/- postman GET
http://proxy.my-domain/html/squidblacklist/job.html 127.0.0.1/- postman GET

http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- petia GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- petia GET
С доступом к работным сайтам:

Код: Выделить всё

http://yandex.ru 127.0.0.1/- hrmanager GET
http://yandex.ru 127.0.0.1/- hrmanager GET

http://mail.ru 127.0.0.1/- hrmanager GET
http://proxy.my-domain/html/squidblacklist/mail.html 127.0.0.1/- hrmanager GET

http://job.ru 127.0.0.1/- hrmanager GET
http://job.ru 127.0.0.1/- hrmanager GET

http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- hrmanager GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- hrmanager GET
Полный доступ:

Код: Выделить всё

http://yandex.ru 127.0.0.1/- director GET
http://yandex.ru 127.0.0.1/- director GET

http://mail.ru 127.0.0.1/- director GET
http://mail.ru 127.0.0.1/- director GET

http://job.ru 127.0.0.1/- director GET
http://job.ru 127.0.0.1/- director GET

http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- director GET
http://proxy.my-domain/html/squidblacklist/users.html 127.0.0.1/- director GET

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Да, так сработало! Огромное спасибо за помощь!!!

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Добрый день!
Появилось ещё несколько вопросов. Продолжу начатую тему.
  • 1) На каком этапе срабатывает редиктор "url_rewrite_program" в squid? Правильно ли я понимаю, что он срабатывает до применения правил самого squid?
    2) Возможно ли поменять порядок, чтобы сначала отрабатывались правила в squid, а затем уже отрабатывал редиректор?

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

Не подскажу, не сталкивался с такой необходимостью.
Погуглите на тему: url_rewrite_program after acl

micheal
Сообщения: 17
Зарегистрирован: Сб окт 29, 2016 11:36

Re: Вопрос по правилам для разных групп

Сообщение micheal »

Жаль, что не сталкивались...
Подскажите, как тогда правильно разграничить доступ по группам пользователей и по IP-адресам? Я думаю, что мне придётся дублировать авторизацию по IP-адресам в конфигурации режика и сквида.

Сейчас у меня конфигурация режика выглядит примерно так:

Код: Выделить всё

error_log /usr/local/rejik3/redirector.err
change_log /usr/local/rejik3/redirector.log
make-cache /usr/local/rejik3/make-cache

allow_urls /usr/local/rejik3/banlists/site_free
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-full
allow_ip f:/usr/local/rejik3/banlists/unauthorized-elite.list

# Серверная подсетка (IP адреса терминалов и серверов, сети АТС)
<NO_INET_TERMINALS>
ban_dir /usr/local/rejik3/banlists/no_inet
url http://127.0.0.1/html/squidblacklist/no_inet_terminals.html
work_ip 192.168.10.0/24
work_ip 192.168.20.0/24
reverse

<JOB>
ban_dir  /usr/local/rejik3/banlists/job
url http://127.0.0.1/html/squidblacklist/job.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-job-search

<MAIL>
ban_dir  /usr/local/rejik3/banlists/mail
url http://127.0.0.1/html/squidblacklist/mail.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-mail

<NO_INET>
ban_dir /usr/local/rejik3/banlists/no_inet
url http://127.0.0.1/html/squidblacklist/no_inet.html
allow_id f:/usr/local/rejik3/banlists/Proxy-access-enable-users
allow_ip f:/usr/local/rejik3/banlists/unauthorized.list
reverse
Далее строчки из конфигурации squid:

Код: Выделить всё

# -----------------------------------------------------------------------------
###################### ACL - определение списков доступа ######################
# -----------------------------------------------------------------------------
# Авторизация пользователей
acl auth proxy_auth REQUIRED

# Списки неавторизованных пользователей
acl unauthorized-elite src "/etc/squid/unauthorized-elite.list"
acl unauthorized src "/etc/squid/unauthorized.list"

# -----------------------------------------------------------------------------
################################ права доступа ################################
# -----------------------------------------------------------------------------
# Разрешаем подключение неавторизованным из списка elite (в основном это сервера)
http_access allow unauthorized-elite

# --- Все проверки на доступы осуществляем в Rejik ---
# Доступ неавторизированным пользователям
http_access allow unauthorized
# Все пользователи должны быть авторизированы.
http_access allow auth

# And finally deny all other access to this proxy
http_access deny all

Данная конструкция успешно работает, но хотелось бы сделать так, чтобы не нужно было не дублировать файлы "unauthorized-elite" и "unauthorized".
Последний раз редактировалось micheal Пн июл 03, 2017 14:45, всего редактировалось 1 раз.

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Вопрос по правилам для разных групп

Сообщение Slava »

нельзя писать две секции <NO_INET>, так как первая не пропустит тех, кто не совпадет по ip.
Попробуйте action pass, что-то вроде:

<NO_INET_TERMINALS>
ban_dir /usr/local/rejik3/banlists/no_inet
url http://127.0.0.1/html/squidblacklist/no ... inals.html
work_ip 192.168.10.0/24
work_ip 192.168.20.0/24
action pass

Ответить