Цель:
Оперативно организовать доступ пользователей к сети Интернет через squid. При этом необходимо иметь возможность накладывать элементарные ограничения на различных пользователей.
Примечания:
Вопросы безопасности при применении базовой аутентификации в squid в данной инструкции не затрагиваются, однако следует учитывать, что при наличии серьезных требований по безопасности предпочтительнее использовать другой тип аутентификации (например digest).
Тестовый стенд:
ПК выполняющий роль сервера со установленным Ubuntu 9.04 Desktop, имя server1, IP 10.0.1.2/24
ПК выполняющий роль клиента со установленным Microsoft Windows XP Pro SP3 и Internet Explorer 8, имя client1, IP 10.0.2.2/24
CISCO ASA 5550 с необходимыми настройками в качестве межсетевого экрана.
Первым делом устанавливаем необходимые пакеты:
sudo apt-get install squid apache2-utils
Создаем файл /etc/squid/squid_user
Открываем /etc/squid/squid.conf и ищем строчку "#auth_param basic program".
Убираем комментарий и дописываем чтоб получилось следующее:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_user
Убираем комментарий со следующих 4-х строчек при необходимости поправляя параметры:
auth_param basic children 5 #Грубо говоря влияет на количество одновременно возможных запросов на аутентификацию.
auth_param basic realm Super Mega Proxy #Это название будет фигурировать в окне запроса пароля у пользователя.
auth_param basic credentialsttl 2 hours #Столько squid должен помнить пользователя.
auth_param basic casesensitive off #Очевидно.
Ищем "acl localnet src" и при необходимости вносим исправления. По умолчанию прописаны все адреса зарезервированные для частных сетей, однако в силу привычки я их закомментировал и прописал:
acl localnet src 10.0.2.0/24
Теперь ищем строчку "# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS" и добавляем правила:
acl inet proxy_auth REQUIRED
acl micupd dstdomain .update.microsoft.com .c.microsoft.com .download.windowsupdate.com
acl odmin proxy_auth_regex ^odmin
acl winuser proxy_auth_regex ^winuser
http_access allow inet odmin
http_access allow inet winuser micupd
Выше описанное означает что пользователь odmin может ходить в Интернет без ограничений, а пользователь winuser может только пользоваться Microsoft Update (это что-то отдаленно похожее на Менеджер Обновлений в Ubuntu, только работает через браузер IE). В squid предусмотрено множество разных ACL (что-то около 25 типов). Можно ограничивать время работы, определенные выражения в url-ках, используемые браузеры и много и много другого. Но поскольку обещал за 5 минут, то ограничимся вышеприведенным примером, он позволяет оценить гибкость, а также понять как это в целом работает (ибо для ciscoвода схема не особо привычная и может вызвать легкий ступор при первом знакомстве).
Теперь проверяем что ниже присутствует строчка "http_access deny all" и сохраняем конфиг.
Осталось только завести пользователей. Это делается так:
sudo htpasswd /etc/squid/squid_user odmin
sudo htpasswd /etc/squid/squid_user winuser
Теперь не забыть прописать в браузерах у клиентов прокси (ip 10.0.1.2 порт 3128) и можно работать!
Удачи!