вторник, 10 сентября 2013 г.

Заметки о SQUID

1. Задание родительского прокси для Squid

в squid.conf, прописываем

acl all src 0.0.0.0/0.0.0.0
cache_peer 192.168.0.1 parent 3128 0 no-query default
never_direct allow all 

192.168.0.1  ip- родительского прокси, 3128 - порт родительского прокси.
never_direct - не разрешает работу прокси напрямую, если недоступен родительский прокси.

2. Просмотр конфига без комментариев и пустых строк
вариант 1.
grep -v '^#' /etc/squid/squid.conf  | grep -v '^$' 

вариант 2.
cat /etc/squid/squid.conf | grep -v '^#' | grep -v '^$' 

3. Запрещаем поиск на MAIL, RAMBLER, LIVE.COM
acl non_safe_search url_regex -i (go\.mail\.ru/search.{0,}[?&]q=|search.live.com|nova.rambler.ru)
http_access deny all non_safe_search

4. Принудительное задание DNS-сервера, полезно например при использовании фильтрующих DNS,
типа SKYDNS http://skydns.ru, или как в моем случае, при тупом DNS-сервере провайдера, где это видано,
чтоб пинг от гугла шел 10 секунд.

например
dns_nameservers 193.58.251.251 127.0.0.1

5. Ввод-вывод basic-хелпера авторизации на Squid.
Ничего нового не открыл, просто делаю заметку, мож кому пригодится.
Для тех, кто хочет свой basic-хелпер авторизации написать хоть на Bash, хоть на Perl, или чем-то другом.

Ввод хелпера, то что хелпер получает от Squid, представляет собой строку, содержащую два значения разделённых пробелом, первое значение логин, второе пароль.
Вывод хелпера, то что хелпер отдает Squid-у представляет собой строку, которая может содержит или ОК или ERR
Если SQUID, получает от хелпера ERR, то он блокирует доступ, а если OК, то пользователь считается прошедшим авторизацию, дальнейшее поведение Squid определяется ACL, при этом ответ хелпера кэшируется, для избежания излишней нагрузки, время кэширования устанавливается определёнными опциями.

Вкратце алгоритм хелпера примерно такой.
Читаем со стандартного ввода строку переданную Squid.
Разделяем её на два значения пароль и логин, используя в качестве разделителя пробел, записываем в соответствующие переменные.
Дальше обрабатываем полученные переменные на соблюдение определенных условий, типа совпадения логина и пароля, принадлежность логина к группе и др.
тут есть где фантазии разгуляться можно использовать и базы данных, и группы для логинов и многое другое.
И в результате всей этой обработки, на стандартный вывод выводим одно из значений OК или ERR.

Подключаем наш хелпер как стандартный Basic-хелпер :)

PS. Не забываем о безопасности при написании кода.

6. Изменение стандартного порта SQUID на свой
http_port 3128
или с указанием ip
http_port 127.0.0.1:3128

Комментариев нет:

Отправить комментарий