Ограничение доступа к Squid (по адресу, по паролю, по времени)
На рабочем сервере есть 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 и радуемся :)