Squid 3.1 на Ubuntu Server 12.04 + Webmin, базовая настройка

squidproxy

Squid — мощный прокси сервер, имеющий просто огромнейшие возможности. Перечислять их все можно бесконечно долго. В сети имеется множество мануалов по его конфигам. Человеку не подготовленному, будет крайне тяжело разобраться в нем. Но мы попытаемся…

А попытаемся мы все сделать с помощью веб-интерфейса Webmin. Webmin для Squid не назовешь ягодкой. Он очень суров)) Поверьте. Вызывает только неприязнь.. но свое дело четко делает. Поэтому мы будем учится работать с ним, при этом объясняя, что изменяемые в веб-интерфейсе функции меняют в конфиге. Мы возьмемся за 3-й сквид, в составе Ubuntu Server 12.04 идет squid 3.1 — с ним и подружимся.

Итак приступим… сначала сквид нужно установить.

Через Webmin:

squid1Через терминал:

sudo apt-get install squid

Обновляем параметры Webmin и идем в настройки Squid:

squid2

Сначала в настройки модуля:

squid3Здесь мы видим исчерпывающую информацию о настройках нашего прокси-сервера. Можете выставить все как у меня:

squid4

Чтобы увидеть сам конфиг squid воочию, введите команду:

nano /etc/squid3/squid.conf

Теперь понимаете, почему мы используем веб-интерфейс? :)  Так проще осязать и управлять всеми возможностями squid.

Идем в меню — настройки кеша:

squid5Устанавливаем максимальный размер кэша на винте, остальные параметры рекомендую оставить так как у меня, т.е. 16/256:

squid6Далее идем в меню — использование памяти:

squid7Выставляем следующие значения:

squid8Ограничение использования памяти (объем ОП, используемой для хранения обрабатываемых объектов, cache_mem): 1024 мб (выделяйте свободной памяти не менее 50% и не более 75% от общего объема).

Размер кэша FQDN (размер кеша fqdn — полных доменных имен, fqdncache_size): 1024

Верхняя граница использования диска (в %, при достижении данного уровня заполнения кеша — начинается ускоренный процесс удаления старых объектов, cache_swap_high): 95%

Нижняя граница использования диска (процесс удаления старых объектов заканчивается, если достигнут данный уровень, cache_swap_low): 90%

Максимальный размер кэшируемого объекта (максимальный размер кешируемого объекта; увеличение параметра — экономит трафик, уменьшение — странички быстрее грузиться будут, maximum_object_size): 4096 кб

Верхняя граница использования кэша IP (верхний и нижний уровень заполнения IP кеша для алгоритма удаления старых объектов по LRU, ipcache_high): 95%

Нижняя граница использования кэша IP (верхний и нижний уровень заполнения IP кеша для алгоритма удаления старых объектов по LRU, ipcache_low): 90%

Размер кэширования адреса IP (размер кеша для IP адресов, ipcache_size): 1024

Далее, идем в настройки авторизации:

squid9
Тут мы можем установить, кому мы разрешаем пользоваться нашим прокси-сервером. Мы рассмотрим 2 простейших варианта авторизации: по IP, и по логину/паролю (basic).

squid10Для авторизации по логину и паролю (создаем там учетку):

squid11Потом заходим в «управление доступом» и добавляем правило:

squid12squid13Разрешаем правило:

squid14

squid15

Обратите внимание, расположение — имеет значение (менять его можно нажимая стрелочки вверх-вниз). Все, теперь доступна авторизация по пользователям.

Для авторизации по IP стоит вместо предыдущих двух пунктов, создать такой ACL:

squid16

Я думаю тут все понятно, разрешаем с такого-то по такой-то IP.

squid17squid18squid19Все, теперь к проксе можно подключится только с определенного диапазона IP нашей сети.

Для блокировки сайтов/контента в интернете, создайте новый ACL:

squid20

В «ограничениях прокси» нужно создать правило (точно так же, как указано выше) и разместить его выше правила DFN (в нашем случае). Тогда, все указанные сайты в правиле banned будут заблокированы (блокировка будет проводится как по полному имени сайта, так и по ключевым словам. Например, в нашем случае, будут заблокированы все домены в состав которых входит слово «porno» и «sex»).

squid21https

Поскольку протокол SSL какраз создан для того, чтобы соединение было прямое и без посредников — это мешает его блокировать сквидом напрямую. Решается это очень просто, для определенных пользователей, просто нужно заблокировать этот протокол. Создайте правило SSL >>> порт URL >>> запретить. Потом переместите его над DFN и под banned. Для таких пользователей будут недоступны все узлы по протоколу https. Есть, конечно, и множество других хитростей… но об этом вы лучше погуглите отдельно :)

squid22Таким образом можно накручивать эти правила, сколько фантазии хватит. Фильтровать доступ к сайтам по пользователям и группам и прочее.

Краткие итоги

Не забывайте, что прокся у нас — не прозрачная (не transparent). Необходимо указать ее как шлюз для всех пользователей (можно вручную или с помощью DHCP), а потом еще настроить все отдельные программы дополнительно (браузеры, skype и icq). Немного муторно, зато это дает нам полнейший контроль над нашей IT инфраструктурой, давая практически безграничные возможности для администрирования.

Указанного в данной статье — достаточно, для нормальной работы прокси сервера. Если же вы хотите настроить его более тонко — милости прошу вас в Гугл) Там довольно много материала на эту тему, про конфиг сквида — в частности.

Удачной настройки! :)

Squid 3.1 на Ubuntu Server 12.04 + Webmin, базовая настройка: 7 комментариев

  1. Приветствую! Твой блог это збс, но серые буквы на черном фоне это вырвиглазная идея. Сделай плиз их хотя бы белыми, так текст читать легче.

    • День добрый. Ну, вообще то выходит, что серые буквы на сером фоне, и для глаз это очень щадящий режим. Белые буквы на темном фоне — вот это действительно зло, от них даже «рябить» начнет))

      А вообще, все выполнено в «ВС стайл».

    • Наоборот, очень мягко читается. имхо.

  2. Mr.s. прав, читать невозможно
    авторизация по ip, это у тебя ведь не она, так? это просто разрешение ходить с таких то ip. а какже статистика посещений и тд.?

  3. Отличная статейка, только вот блокировка https не работает. Вроде всё делаю правильно, по инструкции (всё остальное вроде ок), squid 3
    В чём может быть проблема?

    • Правило создали, как написано? Разместили его в списке «выше» остальных?

    • Да, по всякому пробовал, и выше и ниже = \
      Может получится через iptables закрыть 443й одной командой?

Добавить комментарий