Республика Squid, №2
09.09.08Мой Компьютер, №16, 14.04.2008
К первой части
Блокируем баннеры с adzapper
При помощи самого Squid или дополнений можно реализовать несколько вариантов блокировки ресурсов — по IP-адресу, URL или по ключевому слову. Первые два метода, при помощи парочки acl и http_access, достаточно просто реализовать и в самом Squid. Но администратору постоянно придется обновлять вручную список сайтов и адресов. Эту проблему решили взять на себя целый ряд проектов, использующих для этого свой арсенал средств — от белых и черных списков с возможностью их автоматического обновления до фильтрации по ключевым словам. Поиск по freshmeat.net даст ссылки на несколько проектов.
Например, BannerFilter (phroggy.com/bannerfilter) предлагает использование известных URL баннерных сетей и шаблонов, но, к сожалению, последняя версия датирована 2004 годом, поэтому об автоматизации процедуры обновления blacklist, скорее всего, придется забыть. Впрочем, имеющиеся внутри шаблоны вполне реально использовать для блокировки баннеров и всплывающих окон. Аналогично работает ufdbGuard (www.urlfilterdb.com), предлагающий бесплатное обновление баз в течение 60 дней. Есть и другие решения — к сожалению, большинство проектов давно не обновлялось.
Редиректор adzapper (adzapper.sf.net) также использует списки URL, есть возможность их автоматического обновления. И главное, нужный пакет есть в репозитарии Ubuntu. Поэтому его достаточно просто установить и настроить. Приступаем:
$ apt-get install adzapper
Вот, собственно, и все. Пакеты с подобными редиректорами обычно не превышают 100 Кб, поэтому установка проходит быстро. Чтобы подключить его к Squid, достаточно добавить в squid.conf всего одну строку. Правда, в зависимости от версии Squid эта строка будет отличаться. Например, в Squid 2.5, который лежит в репозитарии Ubuntu 6.06, а также в новой 3.0 следует использовать параметр redirect_program:
redirect_program /usr/bin/adzapper.wrapper
В версии Squid 2.6 используется url_rewrite_program:
url_rewrite_program /usr/bin/adzapper.wrapper
Вот и все настройки — впрочем, их вполне достаточно, чтобы после перезапуска Squid (sudo /etc/init.d/squid restart) часть баннеров была заменена надписью This is ad zapped.
Блокируются в том числе всплывающие окна и флэш-анимация. Для ежедневного обновления blacklist (а фактически самого скрипта adzapper) достаточно добавить новое задание crontab:
$ sudo crontab -e
0 0 * * * root /usr/share/doc/adzapper/examples/update-zapper
Работа скрипта обновления проста, c адреса adzapper.sf.net/scrips/squid_redirect скачивается скрипт, который затем копируется на место /usr/bin/adzapper. В самом конце adzapper в области DATA находится список шаблонов URL, которые будут блокированы. Опыт показывает, что обновления его происходят не очень часто.
Конфигурационный файл Adzapper
Конфигурационный файл Adzapper /etc/adzapper.conf имеет небольшое количество настроек. Например, если раскомментировать строку ZAP_MODE=»CLEAR», будет произведена «тихая» блокировка, без вывода указанной выше надписи. При желании можно ее подменить своим вариантом. Адрес, откуда загружаются картинки, указывается в двух переменных:
ZAP_BASE=http://adzapper.sourceforge.net/zaps
ZAP_BASE_SSL=https://adzapper.sourceforge.net/zaps
Ничто не мешает здесь указать адрес своего сервера, разработчики даже рекомендуют такой вариант. Для этого, естественно, необходим рабочий web-сервер, например, Apache. Настройку Apache я показывать не буду, в журнале недавно писали об этом. После установки adzapper в каталоге /usr/share/doc/adzapper/examples/zaps находятся все нужные шаблоны. Теперь достаточно в конфигурационном файле Apache /etc/apache2/apache2.conf указать псевдоним на этот каталог:
Alias /zaps /usr/share/doc/adzapper/examples/zaps/
<Directory /usr/share/doc/adzapper/examples/zaps/>
Options FollowSymLinks Indexes
AllowOverride Limit
Order Allow,Deny
Allow from all
</Directory>
И заменить, соответственно, значение ZAP_BASE:
ZAP_BASE=http://localhost/zaps
Не забываем перезапустить Apache и Squid. При желании для придания эстетичности можно изменить файлы, находящиеся внутри каталога zaps. Кстати, на сайте Adzapper написано о том, как вместо Squid использовать Apache. Часть рекламы все же прорывается сквозь такой заслон. Чтобы не возиться с acl, можно добавить в эту схему еще и Bfilter (bfilter.sf.net), в котором используется эвристический алгоритм, позволяющий обнаруживать большую часть баннеров и блокировать всплывающие окна. Или squidGuard (www.squidguard.org).
Борьба с вирусами
Вообще, баннеры — не самая неприятная вещь, которую можно встретить на интернет-сайтах. Именно здесь подхватывает вирусы большинство пользователей, и задача любого админа — не допустить этого. Одним из вариантов решения проблемы является блокировка файлов, имеющих определенное расширение или тип. Но такой подход применим далеко не всегда. Поэтому будем добавлять в нашу схему проверку трафика антивирусом.
Для этой цели подходят как минимум два проекта. Решение SquidClamAv (sf.net/projects/squidclamav) является редиректором, который, работая в паре с демоном clamd антивируса ClamAV, проверяет выборочно файлы, основываясь на содержимом или контексте.
В репозитарии Ubuntu есть несколько более продвинутый и поэтому несколько более сложный в настройке вариант — HAVP (HTTP Anti Virus Proxy, www.server-side.de). Он уже умеет проверять трафик на лету при помощи нескольких антивирусов (ClamAV, F-Prot, Kaspersky, NOD32, Sophos, AVG, Dr.Web и некоторыми другими). Его можно использовать как в связке со Squid, так и в одиночку, обеспечивая прозрачный прокси с проверкой на вирусы. Более того, поскольку HAVP — именно прокси, а не редиректор, есть возможность при подключении связки Squid+HAVP пользоваться разнообразными схемами: squid+havp, havp+squid, squid+havp+squid. Сюда же можно добавить решения для борьбы с баннерами.
Пакета с SquidClamAv в репозитарии нет, поэтому будем компилировать сами (давно я этого не делал J). Если еще не устанавливали компилятор, самое время это сделать:
$ sudo apt-get install build-essential
Естественно, нам понадобится и демон calmd:
$ sudo apt-get install clamav-daemon
Последний пакет потянет за собой еще несколько, в том числе и clamav-freshclam, который необходим для автоматического обновления антивирусных баз.
Теперь скачиваем с сайта проекта последнюю версию SquidClamAv. Распаковываем и компилируем:
$ tar xzvf squidclamav-3.5.tar.gz
$ cd squidclamav-3.5
$ ./configure –prefix=/usr —sysconfdir=/etc
$ make
$ sudo make install
В архиве содержится шаблон конфигурационного файла, копируем его на место:
$ sudo cp squidclamav.conf.dist /etc/squidclamav.conf
Создаем файл для журнала и делаем его владельцем пользователя proxy (в некоторых дистрибутивах squid работает от имени пользователя squid).
$ sudo touch /var/log/squidclamav.log
$ sudo chown proxy /var/log/squidclamav.log
Дополнительно пользователя proxy в файле /etc/groups нужно добавить в группу clamav, просто дописав:
clamav:x:proxy
Настройка SquidClamAv
SquidClamAv подключается аналогично другим редиректорам. Добавляем в конфигурационный файл squid.conf строку с указанием полного пути к исполняемому файлу. Узнать, куда он установлен можно, введя whereis squidclamav.
Для версий 2.5 и 3.0:
redirect_program /usr/bin/squidclamav
redirect_children 15
Для версии 2.6:
url_rewrite_program /usr/bin/squidclamav
url_rewrite_children 15
И приступаем к редактированию /etc/squidclamav.conf. Сначала общие параметры:
# указываем адрес и порт, на котором работает Squid
proxy http://127.0.0.1:3128/
# файл журнала
logfile /var/log/squidclamav.log
# страница, куда перенаправляется пользователь при обнаружении вируса
redirect http://localhost/cgi-bin/clwarn.cgi
# исполняемый файл squidGuard (если он установлен) и отладочная информация
# squidguard /usr/bin/squidguard
debug 0
force 1
Теперь нужно связать SquidClamAv с демоном clamd. Это можно сделать двумя способами: через локальный сокет или указав IP-адрес и порт, на котором clamd принимает соединения. Узнать эти параметры легко, достаточно посмотреть в файл /etc/clamav/clamd.conf. На сокет указывает переменная LocalSocket. В Ubuntu по умолчанию она выглядит так:
LocalSocket /var/run/clamav/clamd.ctl
Поэтому в squidclamav.conf записываем:
clamd_local /var/run/clamav/clamd.ctl
Теперь нужно указать SquidClamAv, какие, собственно, файлы будем проверять, а какие пропускать без проверки. Для этого используется еще ряд параметров: regex|regexi, abort|aborti, content|contenti или whitelist. Параметры, имеющие букву i в имени, игнорируют регистр. Самый простой whitelist — все, что будет приходить с указанного адреса, проверятся не будет:
whitelist www.mycomputer.ua
Параметр content предписывает проверку файлов, основанную на типе (тип можно узнать из логов Squid). Например, для проверки всех приложений пишем такое правило:
content ^.*application/.*$
Параметр abort позволяет исключить из проверки антвирусом файлы, подпадающие под шаблон:
abort ^.*.pdf$
aborti ^.*.png$
aborti ^.*.mp3$
И наконец, что проверять, указываем при помощи regex:
regexi ^.*.exe$
regexi ^.*.com$
regexi ^.*.zip$
И так далее. Запускаем демон clamd:
$ sudo /etc/init.d/clamav-demon start
И перезапускаем Squid:
$ sudo /etc/init.d/squid restart
Для проверки работоспособности настраиваем web-браузер на работу через Squid, заходим на страницу www.eicar.org/anti_virus_test_file.htm и пробуем скачать тестовый вирус (он не опасен). Если файл заблокируется, можно идти дальше.
Добавляем в crontab строчку для автоматического обновления антивирусных баз:
0 * * * * /usr/bin/freshclam –quiet
Чтобы пользователь перенаправлялся на страницу с пояснением, нужно иметь под рукой рабочий web-сервер. Если есть настроенный web-сервер, достаточно скопировать файл clwarn.cgi в каталог cgi-bin (в Ubuntu /usr/lib/cgi-bin). Этот шаблон также можно изменить по своему вкусу, хотя бы просто локализовать.
Это далеко не все дополнения, расширяющие возможности Squid. Особое внимание хочу обратить на squidGuard и DansGuardian (http://dansguardian.org). Окончательный выбор предстоит сделать вам.
Linux forever!
Сергей «grinder» ЯРЕМЧУК
Web-droid редактор
Не пропустите интересное!
Підписывайтесь на наши каналы и читайте анонсы хай-тек новостей, тестов и обзоров в удобном формате!
Видеонаблюдение от Ajax: обзор IP-камер DomeCam Mini, TurretCam, BulletCam и видеорегистратора NVR
Компания Ajax Systems продолжила расширение своей экосистемы устройств, представив камеры видеонаблюдения и видеорегистратор для управления видеопотоками. Достаточно консервативный и устоявшийся тип устройств, традиционно для компании подкрепили глубокой проработкой софта и комплектующих.
Новый Volkswagen Transporter будет выпускаться в электро и плагин-гибридной версии
Volkswagen автомобиль электротранспортМикроавтобус Volkswagen Transporter следующего поколения будет представлен в начале 2025 года.
Intel хочет заработать на производстве чипов для Министерства обороны США
Intel война процессор СШАХотя детали соглашения не разглашаются, существуют предположения, что Intel займется созданием чипов с искусственным интеллектом для военных дронов и вычислительных систем, использующих генеративный ИИ в разведке