Yellow Leaf

Yellow Leaf


Поиск по сайту


Вход
Правила портала
Регистрация
Забыли пароль?
О команде проекта
Справка по оформлению постов


Последние комментарии к новостям и статьям
Re: С днём системного администратора!
Re: Вышел новый номер v10.07(2) компьютерного журнала UserAndLINUX.
Re: Отчет о первом "Runtu InstallFest" в Екатеринбурге
Re: OpenVPN сервер для офисного шлюза на FreeBSD
Re: Релиз Runtu LXDE 10.04!
Ещё комментарии >>>


Новые файлы
Debian: cue2tracks_0.2.11_all (Дополнение для CUE 2 Tracks v0.2.11)
Gentoo: cue2tracks-0.2.11 (Дополнение для CUE 2 Tracks v0.2.11)
CUE 2 Tracks v0.2.11
Jabber-Shell 20090303
EasySoft AutoRun 0.4.1


Новое на форуме
Движок сайта. версия 2.0
Нужен логопед, срочно
Словить процесс
проблемы с разделом жесткого диска
планировщик, веб интерфейс


Проекты
Jabber-Shell
Qmmp
QStarDict
PHPSAAdmin


 
   


Друзья сайта
 Open Kazan - Казанское сообщество пользователей OpenSource 


Посетителей с 08.09.2006

4671844


Внешний вид портала


RSS-Ленты
Новости
Файлы


 

   
  Яндекс цитирования  

«Жёлтый Лист» - cайт о мире юникс
Новости Форум Статьи Файлы Пользователи
   

Прокси для офиса с эвристическим фильтром рекламы

MooSE 2007-11-04 17:24:50

Да-да. Именно так. Программы, позволяющие отсеивать рекламу используя интеллектуальные алгоритмы вместо чёрных списков существуют достаточно давно. Есть они и для Linux.

В этой заметке будет рассмотрена установка прозрачного прокси сервера, позволяющего отсеивать рекламу используя интеллектуальное распознавание рекламу вместо чёрных список адресов. Решение будет описано на базе системы Gentoo Linux и в его основе будет прокси-сервер bfilter.

Сначала несколько слов о преимуществах интеллектуального распознавания рекламу по сравнению с чёрными списками:

  • При использовании чёрных списков вы всегда отстаёте на один шаг, добавляя в списки адреса уже показанной рекламы. Таким образом эффективность чёрных списков просто не может быть высокой. Заметно уступая эвристическим методам, которые позволяют ограничивать рекламу с любых адресов, в том числе и неизвестных, определяя её по ряду признаков.
  • При достаточно большом трафике и разнообразии посещаемых сайтов чёрные списки имеют свойство занимать достаточно большие объёмы, соответственно проверка каждого адреса на принадлежность чёрному списку начинает занимать значительное время и нагрузка на прокси-сервер растёт.

Хорошими характеристиками и функционалом обладает прокси-сервер bfilter, который может работать и как системный демон, и как пользовательское приложение. В последнем случае он показывает свою иконку в системном лотке и имеет полноценный графический интерфейс для конфигурирования. Но такой способ подходит скорее для персонального использования и рассматриваться здесь не будет.

У bfilter есть два недостатка:

  1. Не поддерживются нормальные acl. Т.е. фактически он работает как анонимный прокси.
  2. Не поддерживается кэширование, которое было бы весьма полезным.

Для решения обеих этих проблем можно собрать каскад из двух прокси-серверов: bfilter и squid. Первый будет убирать рекламу, а второй управлять доступом пользователей и кэшировать запросы. Поскольку squid так же может работать в "прозрачном" режиме, то прокси можно установить не меняя настроек на клиентских машинах.

Итак. Приступим. Допустим что Gentoo Linux уже установлен на уровне базовой системы и в ядре включена поддержка iptables. Теперь установим bfilter, squid и iptables:

emerge bfilter squid iptables

Далее приступаем к настройке. Сначала настраиваем bfilter. По умолчанию он запускается в chroot-окружении, но не работает:) Для решения этой проблемы "достаём" его из chroot. Для этого в файле /etc/conf.d/bfilter заменяем строчку:

BFILTER_OPTS="-u bfilter -g bfilter -r /etc/bfilter"

На строку:

BFILTER_OPTS="-u bfilter -g bfilter"

Затем открываем в редакторе файл /etc/bfilter/config и правим следующим образом: меняем значение параметра "ad_border" на "none", т.е. отключаем отображение границ вырезаной рекламы (уж больно не эстетично они выглядят:)). Так же меняем значение параметра "page_cleanup" на "safe", чтобы не просто блокировать рекламу, но и по возможности вырезать её код, из кода загружаемых страниц. Здесь так же ещё возможно значение "maximum", но в этом случае возможны поломки кода, что нежелательно.

На этом настройка bfilter заканчивается и можно его запускать:

rc-update add bfilter default
/etc/init.d/bfilter start

Переходим к настройке squid. Тут тоже нет ничего сложного. Открываем файл /etc/squid/squid.conf в редакторе и приступаем:) Во-первых указываем порт, на котором слушать:

http_port 3128 transparent

Параметр "transparent" пригодится при настройке прозрачного проксирования. Далее указываем что все запросы необходимо пересылать на bfilter:

cache_peer 127.0.0.1 parent 8080 0 no-query no-digest

Ну и на последок разрешим использование нашего прокси-сервера нашей же локальной сетью:

acl localnet src 192.168.100.0/255.255.255.0
http_access allow all localnet

Запускаем squid:

rc-update add squid default
/etc/init.d/squid start

Практически всё готово. Осталось настроить правила iptables. Для этого создадим скрипт ~/firewall.sh следующего содержания:

#!/bin/sh

# Сбрасываем цепочки правил
iptables -F
iptables -F -t nat

# Устанавливаем политики по умолчанию: запрет входящих запросов и разрешение исходящих
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

# Разрешаем принимать ответы на запросы
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Полностью разрешаем весь трафик на loopback
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем трафик со стороны локальной сети (она подключена интерфейсу eth1)
iptables -A INPUT -s 192.168.100.0/255.255.255.0 -i eth1 -j ACCEPT

# Все запросы на 80-й порт перенапрвляем на squid
iptables -t nat -A PREROUTING -s 192.168.100.0/255.255.255.0 -p tcp -m tcp --dport 80   -j REDIRECT --to-ports 3128

# NAT для всех остальных запросов
iptables -t nat -A POSTROUTING -s 192.168.100.0/255.255.255.0 -j MASQUERADE

Остаётся только применить эти правила:

rc-update add iptables boot
/etc/init.d/iptables start
~/firewall.sh
/etc/init.d/iptables save

Всё. Офис может спокойно вздохнуть, избавившись от потока рекламы и начав экономить на трафике:)

Автор не претендует на истинность всё написанного. Однако всё это было реализовано автором в реальных условиях и проблем замечено не было.

Ключевые слова: squid bfilter iptables

Версия для печати

Возможно вас заинтересуют следующие товары:


Комментарии:

quadrik 2007-11-26 21:15:33 (*)

Как насчет отзывов, насколько правильно работает? Флеш режет?

[Ответить]


MooSE 2007-11-27 10:50:29 (*)

Я использую. Режет. Замечательно всё:)

[Ответить]


PycmaM 2008-06-27 10:43:59 (*)

Отличная статья, спасибо. Прозрачный сквид с большущим кэшем уже стоял, прикрутил bfilter за 3 минуты, все отлично работает(:

[Ответить]


Тамбовчанин 2008-10-30 14:26:23 (*)

Вопрос с другой стороны провода. :-)

Поставил на домашнем сервере. Выяснилось, что на первой странице фирменного сайта (причем только на первой) режет картинки и кнопки счетчиков.

Где почитать о том, как правильно верстать страницу, чтобы не резал то, что рекламой не является?

[Ответить]


MooSE 2008-11-01 07:08:33 (*)

А разве счётчики нужны простому пользователю?:)

А верстать... Ну попробуй размеры сделать отчличными от стандартных. Например не 88x31 а 87x32 и всё будет нормально:)

[Ответить]


Анонимный посетитель 2009-12-03 13:41:55 (*)

bfilter не работает с ftp
этот большой минус как бы все забыли
весь инет перерыл, а ответ так и не найден

[Ответить]


MooSE 2009-12-03 18:47:29 (*)

bfilter умеет пересылать запросы на родительский прокси. если родитель поддерживает ftp - bfilter спокойно их пропускает

[Ответить]


Анонимный посетитель 2010-04-14 16:03:22 (*)

>bfilter умеет пересылать запросы на родительский прокси.
>если родитель поддерживает ftp - bfilter спокойно их
>пропускает

Можно пример файлов конфигураций?

[Ответить]


Содержание*:
=

При копировании материалов с этого сайта ссылка на источник обязательна! Уважайте труд авторов!


Если материалы с этого сайта оказались вам полезны - Вы можете поддержать этот проект переведя на его счёт любую сумму, какую сочтёте нужным.

рублей


Обратная связь


© 2006-2010 Вадим Калинников aka MooSE


Контроля доступа и автоматическими воротами, охраны периметр. Цена автоматических ворот.