Debian файрвол и прокси – 4 из 4. Рюшечки
Ну что же, после выполненных в статьях 1, 2 и 3 операциях, у нас должен был получиться функционирующий сервер, выполняющий роль кеширующего прокси и файрвола одновременно.
В двух словах, что мы тут будум делать:
- Запретим юзерам ходить на [список сайтов] в рабочее время;
- Реализуем статистику посещений пользователями ресурсов;
Начнем с запретов. Для начала нам нужно будет создать файл, в котором будут перечислены в столбик слова, которые у нас запрещены в http-запросах. Возможно использование регулярных выражений, однако ваш покорный слуга пока только пытается в них разобраться. Гуглим, это интересно (=
У меня файл называется deny_hosts_access и лежит в /etc/squid. Вот его содержимое:
odnoklassniki
vkontakte
Собственно, здесь может быть что угодно – вы хозяин!
Далее, в squid.conf после строчек, декларирующих безопасные порты (Safe_ports), добавляем строки
acl deny_hosts_access url_regex "/etc/squid/deny_hosts_access"
acl morning time MTWHF 08:00-12:30
acl evening time MTWHF 13:30-17:00
В первой строке мы указали путь к файлу, содержащему запрещенные строки. В следующих двух определили отрезки времени «morning» и «evening», которые являются «рабочим временем».
Теперь же нужно это самое рабочее время сделать наиболее продуктивным. (= Добавляем перед строчками
http_access allow full_access
http_access allow lim_access
строки
http_access deny deny_hosts_access morning
http_access deny deny_hosts_access evening
Итак, мы запретили лазить по одноклассникам и вконтакту утром (до обеда) и вечером (после обеда и до конца рабочего дня). Какие же мы злые ]:->
Однако, на этом мы не остановимся. Возможно следующее будет реализовано через Ж, однако оно работает. Итак, мы будем показывать нашим бедным пользователям определенную страницу/картинку если они лезут на запрещенные нами сайты. Сделаем эдакое перенаправление.
Что же нам для этого потребуется? А потребуется нам своя страничка ошибки!
Для начала, укажем какую папку с ошибками мы используем (разница в языках и кодировках). В squid.conf добавим строку
error_directory /usr/share/squid/errors/Ukrainian-utf8
(в самой папке errors можно посмотреть доступные Вам варианты)
Ну и в конце концов, отредактируем файл ошибки. Для начала бекапните его, потому что потому. В случае невыполнения правил http_access, вызывается ошибка ERR_ACCESS_DENIED. Заменим ее содержимое на перенаправление (или просто заменим стандартный текст; мне по душе первое)
$ sudo nano /usr/share/squid/errors/Ukrainian-utf8/ERR_ACCESS_DENIED
Перенаправление выглядит так:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://mysite.com.ua/image.gif">
(Ссылку укажите свою, желаемую)
Всё! Перезапускаем сквид!
$ sudo /etc/init.d/squid restart
Ждем немножко и наслаждаемся примененными правилами. Теперь НИКТО не лазит на одноклассников в рабочее время (=
Ну, и второй пункт нашей статьи – статистика посещений ресурсов. Для этого я использую программу sarg. Установим её:
$ sudo apt-get install sarg
Она потянет за собой целую братию пакетов, и немудрено, ибо для показа результатов ему необходим веб-сервер.
Подгоняем конфигурацию (/etc/squid/sarg.conf) под себя. Вот главные строчки, на которые следует обратить внимание:
access_log /var/log/squid/access.log
...
output_dir /var/www/squid-reports
Создаем последний каталог, ежели его нет.
Запускаем сарж (неплохо б было его запуск пихануть в крон, здесь я не буду это описывать… пока что)
$ sudo sarg
Ура! Заходим изнутри сети на наш сервер, любуемся отчетами по адресу http://server/squid-reports/
P.S. Всё вышеизложенное писалось почти по памяти, ибо проделывалось месяц назад. Если Вы найдете ошибки, или недописки – укажите, я исправлю и буду благодарен! Удачи Вам в администрировании!

IT-совместимый сайт
Март 6th, 2009 at 09:15
Настроил всё как тут советовалось, не идет трафик через файрвол. Если указать в браузере прохи прямо на порт 3128, то http идет, а остальное – почта, ася не идут. Где искать?
Март 6th, 2009 at 09:34
Пытался запегиться, раз двадцать получил:
Image Validation does not match.
Может с валидатором чета не так?
Март 10th, 2009 at 08:06
Посмотрите по каким портам ходит почта (думаю, вы разберетесь) и добавьте в файрволе переадресацию и этих портов.
Март 10th, 2009 at 08:07
Да, валидаторы и прочая фигня тут у меня как-то пока не очень работают )) Смиренно прошу простить и обещаю разобраться)
Март 11th, 2009 at 09:24
По каким портам почта ходит я знаю, но по идее почтовый трафик squid не считает и просто должен пропускать. И прозрачность не работает, приходится явно указывать proxy:3128 хотя и redirect в iptables настроил и squid transparent прописал. Всё настроил точно как в Ваших статьях и не работает, моск сломал уже.
Март 11th, 2009 at 11:21
У меня были такие проблемы с третим сквидом, но и они решались (правда не помню как). Как правило всё оборачивалось на файрвол и приходилось копаться в нем.
К сожалению, я пока слабо считываю информацию с астрала и так вот помочь не смогу )
Предлагаю создать тему на форуме http://ibash.org.ru/forum/
Апрель 23rd, 2009 at 11:04
спасибо. Отличные статьи. Все сходу получилось. Теперь можно в спокойном режиме конфигурить дальше
Апрель 30th, 2009 at 13:35
по сути сквид не умеет ничего другого кроме http(s) траффика.
обычные почтовые клиенты, толком не умеют использовать прокси (не будем считать всякие костыльные тулзы, заворачивающие все и вся на прокси).
собственно ИМХО в том, что описанная настройка была заточена под корпоративную сетку, со своим почтовым сервером.
PS: сквид собственно и позиционируется как only-http(s) прокси
PPS: всяким банк клиентам можно и проброс на иптаблесе сделать
Май 2nd, 2009 at 10:36
deny_info можно использовать, чтобы странички сквида не править.
lightsquid вместо sarg можно поюзать.
squid -k reconfigure, после изменений в squid.conf
Май 13th, 2009 at 14:22
Спасибо, сарж я выбрал в силу некоторого знакомства, гляну как-нибудь и на альтернативы. За squid -k reconfigure – отдельный сенкс.
Август 12th, 2009 at 22:58
Очень подробно изложили. Прочитал все, закинул rss-ку. Спасибо. Проделывал нечто подобное на убунте серверной, на днях собираюсь мигрировать с нее на дебиан. Надеюсь, Ваши статьи помогут =)