Попробую по подробнееМне нужно решение, не только авторизации по пользователям в домене, но и лимитировании.
Готовое решение я не нашел, а пост (хоть и старый) http://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi?quote=not_empty&az=post&forum=vsluhforumID3&om=1580&omm=19 привел меня к мысле, что решения пока нет.
>1. Авторизация в SQUID'е происходит внешними модулями (например как тут http://www.opennet.me/base/net/win_domain_squid.txt.html)
Я думал над тем, чтоб, проверку на лимиты засунуть в auth_helper, т.е.
Сначала проверить логин-пароль пользователя домена в AD, потом проверить его лимиты и, основываясь на этом, решать прошел он аутентификацию успешно или нет.
Мне не нравиться:
1. Для случая Win2k домена нужна обертка для ntlm_auth, либо его модификация (вобщем то, не очень страшно)
2. Если юзверь исчерпал лимит, то он получет ответ access dained. По моему, в случае срабатывания ACL можно, отправить его на страничку где явно сказано, что он исчерпал лимит
(вобщем то, тоже не очень страшно, но сделает жизнь юзверя понятней:-)
>
>2. Скрипт заносит /var/squid/access.log в БД (вариантов это сделать тоже много, например
>как это сделанно сдесь http://sourceforge.net/projects/squid-traffic)
Такой способ избавляет от pipe'оф и не приводит к падению сквида, когда тот не может записать лог в файл, вместе с тем, есть какой-то элемент реального времени.
Обычно, в БД таких программ есть отдельная таблица с пользователями, нового пользоватля можно занести сюда в момент обработки строки с логами (именно так у меня сейчас и происходит:). Ведь, если его пустили через логин-пароль - то он, как бы, имеет право пользоваться инетом, а так как в БД нет информации о нем, то он им еще и не пользовался... (ой страшно не пиннайте:-). Лимиты ему можно поставить для начала "по умолчанию".
>3. В БД происходит агрегация по нужным параметрам (дата, пользователь, ip пользователя),
>а также подсчет лимитов.
Сдесь, думаю поятно, хочешь триггерами, хочешь скриптом проводи аггрегацию.
Лично мне нужены дата и логин, и лимиты. Короче все что нужно для отчетов.
>4. А вот лимиты прикрутить к SQUID как external_acl_type. С помощью этого
>acl и банить пользователя (за исчерпания лимитов)
Тут мне интерестно, что можно написать как угодно много (скакими хочешь параметрами) acl (хотя в большинстве случаев можно обойтись и обычными сквидовскими ACL'ми), и извавляет от пункта 1.1
Плюс, лично мне не нравиться подход править конфиг squid'а программами как это сделанно в том же http://sourceforge.net/projects/squid-traffic