Материал просмотрен 978 раз(а)

Переживаю сейчас жуткий завал на работе, поэтому нет времени на написание статей. Но есть кое-что, о чём хотелось бы рассказать. Прокси-сервер Squid, применение которому можно найти практически везде!

Будем ставить его на Debian, а потом потренируемся создавать списки доступа для гибкой фильтрации и кэширования трафика.

Установка

Итак, тестовая виртуальная машина с Debian 7 на борту. 2 сетевых интерфейса, 192.168.1.8 – смотрит в мою родную локалку. 192.168.0.1 – смотрит в виртуальную локалку, там будем создавать сеть демонстрацию из машины WinXP.

Ставим сквид весьма банально:

Ставим Squid

Ставим Squid

Процесс установки протекает без особых проблем. Вот уже и готово!

Установка

Установка

Чуть не забыл! Нам нужно заворачивать весь HTTP-трафик через сквид прозрачно от пользователя, поэтому создадим правило файрволла (которые я переписал в файл /etc/iptables.rules):

Цепочки правил

Цепочки правил

Затем файл сделан исполняемым и выполнен:

# chmod +x /etc/iptables.rules
# /etc/iptables.rules

Теперь все пакеты, приходящие с интерфейса eth1, с адресом источника из сети 192.168.0.0/24, протокол tcp, любой адрес назначения а порт назначения 80 (http) перенаправлять на порт 3128 сервера, где слушает squid.
Ну и врубаем маскарадинг, чтобы разные хосты могли работать с одним сервером.

Таким образом для пользователя всё будет прозрачно.

Настройка

Конфигурационный файл находится в /etc/squid/squid.conf, открываем его любым текстовым редактором на борту.

Ищем строку http_port и прописываем там наш адрес и ключ transparent. Таким образом мы сделаем доступ прозрачным таким образом, чтобы пользователям не нужно было прописывать этот прокси в настройках обозревателя.

Прокси прозрачный

Прокси прозрачный

Далее, завидим другую виртуальную машину в эту же сеть (с адресом 192.168.0.2), указывая ей адрес основного шлюза 192.168.0.1

Запускаем Windows XP

Запускаем Windows XP

Ой-ой. Какие-то проблемы. Ну да ничего! Сейчас мы создадим разрешающее правило!

Находим местечко с надписью INSERT YOUR OWN RULE……

и допишем следующее:

Правила

Правила

Мы создали ACL с источником 192.168.0.2 и назвали его PC1. Далее, создали разрешающее правило для PC1, и запрещающее для всех остальных. Правила применяются сверху вниз, важно не перепутать!

Перезагружаем сквид

# /etc/init.d/squid restart

(в дальнейшем для применения конфига можно выполнить squid -k reconfigure), это ускорит применение и не допустит откол клиентов.

Пробуем обновить WinXP:

WinXP

WinXP

Есть! Загружается! Всё получилось как надо. Теперь немного уточним правило:

Запретим некоторые типы картинок

Запретим некоторые типы картинок

Обратите внимание, я создал ACL с именем IMAGES и присвоил ему фрагменты URL-а, описываемые регулярными выражениями без чувствительности регистра. Будем фильтровать строки, оканчивающиеся на jpg, jpeg, gif, png. Следом описываем правило блокирования (deny) этого ACL-а.

Здесь главное не перепутать порядок. Если вписать deny IMAGES после allow PC1, то правило не сработает, поскольку сработает правило allow PC1 и клиент получит весь трафик.

Без картинок

Без картинок

Вообще, в Squid можно много чего интересного сделать. На наших тестовых машинках мы ещё попрактикуемся.