Ограничение доступа к Squid (по адресу, по паролю, по времени)

Материал из Bas Wiki
Перейти к навигации Перейти к поиску

На рабочем сервере есть Squid. Раньше он использовался всеми и вся, но сейчас только для внутренней локальной сети и пары внешних клиентов. В связи с тем, что дома у меня динамический IP-адрес, то открывать его на всю провайдерскую сеть мне очень не хотелось. Потребовалось на всякий случай ограничить доступ к Squid. В тоже время, постоянно лазить на сервер и прописывать свой адрес мне было жутко лень.  Эту проблему в итоге я решил немного другим способом, который будет описан в другой статье, сейчас же о кошках.

Для того, чтобы ограничить доступ к Squid, не используя жёсткую привязку по IP-адресу я решил использовать встроенную авторизацию. Таким образом решается проблема того, что кто-то сможет напрямую зайти на proxy. В связи с тем, что дома я нахожусь до 8 утра и после 17 вечера, то я ещё и ограничение по времени решил опробовать.

Для включения встроенного механизма авторизации Squid'у надо указать, с помощью какой программы будут проходить проверки логина и пароля, а так же указать путь к файлу пользователей, где хранятся пары логин+пароль.

auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/users

Далее мы создаём acl, в которых описываем наши ограничения.

1. Ограничение по IP-адресу. У моего провайдера есть большой диапазон адресов, который я здесь и укажу. Это всё же лучше, чем "весь интернет" :)

acl bas_home src 54.38.124.0/255.255.255.0

2. Далее мы создаём acl, который отвечает за доступ к Squid'у по паролю.

acl bas_auth proxy_auth bas

3. Теперь мы создадим acl, который ограничит время использования proxy.

acl bas_time time H 08:00-17:00

4. После того, как мы описали все acl пишем итоговую строку для ограничения доступа. Важно заметить, что порядок следования acl означает приоритет проверки, т.е. сначала я отрезаю все адреса, которые не входят в сеть провайдера, затем я отрезаю доступ в рабочее для меня время и только после этого проверяю, я ли это :)

http_access allow bas_home bas_time bas_auth

Теперь вернёмся к файлу с логином и паролем. Данный файл создаётся с помощью утилиты htpasswd.  По умолчанию пароль шифруется методом CRYPT.

htpasswd -bc users bas password

После этого перечитываем конфиги Squid'а

/usr/local/etc/rc.d/squid reload

..., и всё, всё должно работать. Настраиваем браузер на работу с Proxy и радуемся :)