Маленькое окно в большую сеть Сергей «grinder» Яремчук Хакер, номер #099, стр. 112 (grinder@ua.fm) Privoxy: прокси-сервер с расширенными возможностями по фильтрации интернет-контента Каждый из нас, бороздя необъятные просторы Сети, сталкивается с большим количеством ненужного трафика. Помочь справиться с этой напастью могут прокси-серверы, благодаря которым можно запросто отсеять рекламу и нежелательный контент, а также скрыть информацию об используемом программном обеспечении. Прокси-сервер Privoxy Если спросить на одном из тематических форумов, какой из прокси-серверов лучше для использования в Linux, в 99 из 100 случаев мы получим ответ – Squid. Действительно, это отличный кэширующий прокси-сервер, обладающий многими полезными возможностями. Но, к сожалению, на домашнем компьютере все его преимущества практически не заметны. А что необходимо обычному пользователю? Отсутствие баннеров, защита от всплывающих окон и скрытого html-кода, фильтрация cookies и, естественно, анонимность, ведь браузер на любом веб-ресурсе оставляет след, сравнимый с отпечатком пальца. Все это реализуется и с помощью Squid, но с установкой и настройкой вереницы редиректоров и фильтров в этом случае придется серьезно повозиться. Зачем? Ведь есть специально обученный прокси-сервер Privoxy (www.privoxy.org), который отлично справляется с большинством поставленных задач, даже в режиме работы по умолчанию. А если его еще подстроить… Установка Privoxy Прокси-сервер Privoxy можно найти в репозитариях пакетов многих дистрибутивов Linux, поэтому, прежде чем обратиться к шаманству компиляции, советую воспользоваться стандартным способом. В Ubuntu и других дистрибутивах, использующих apt, вводим: $ sudo apt-get install privoxy Вот, собственно, и все премудрости. Кроме основного пакета, в Сети можно найти патчи к Privoxy, несколько расширяющие его возможности. Privoxy стартует сразу же после установки в настройках по умолчанию, ожидая соединения на 8118 порту. Его конфигурационные файлы находятся в каталоге /etc/privoxy. Основной файл называется config, отдельные настройки (фильтры, действия) содержатся в нескольких файлах, имеющих расширение action и filter, которые подключаются к config. Кроме того, основные настройки можно произвести через веб-интерфейс, набрав в строке браузера «config.privoxy.org» (в короткой форме «p.p»). Но перед этим необходимо настроить веб-браузер так, чтобы он выходил в интернет не напрямую, а через Privoxy. Запускаем Firefox, выбираем в меню «Правка -> Настройки» и затем во вкладке «Основные» нажимаем кнопку «Параметры соединения». В появившемся окне устанавливаем флажок «Настройка прокси вручную», в полях HTTP-прокси и SSL-прокси вводим адрес localhost и порт 8118. Нажимаем «ОК» и выходим из настроек. Теперь можно попробовать войти в интернет или обратиться к настройкам Privoxy. Команды ручной остановки или запуска Privoxy стандартные: $ sudo /etc/init.d/privoxy stop $ sudo /etc/init.d/privoxy start Конфигурационный файл config Главный конфигурационный файл config управляет работой самого Privoxy. Большинство параметров, кроме confdir и logdir, являются необязательными, но заглянуть внутрь стоит. Файлы имеют стандартную для *nix структуру. Строка начинается с параметра, за которым следует значение. Строка, начинающаяся со знака «#», является комментарием, все идущее за ней игнорируется. Каталог, в котором Privoxy будет искать конфигурационные файлы, если не использован полный путь, указывается в переменной confdir, аналогично журналы работы прокси-сервера будут размещены в logdir. Реакция Privoxy при совпадении правила описывается в файлах действий, определяемых переменной actionsfile. При этом можно использовать несколько таких файлов, перечисляя их по одному в строке. По умолчанию в списке присутствует три таких файла: # Для внутреннего использования, изменять не рекомендуется actionsfile standard # Основной файл настроек, обеспечивает базовую функциональность actionsfile default # А сюда можно заносить свои правила actionsfile user Обрати внимание, что суффикс .action при описании файлов не используется. Подробнее об этих файлах поговорим чуть позже. Аналогично параметр filterfile описывает файлы с расширением .filter. В этих файлах на основе регулярных выражений описываются модификации информации в обрабатываемых веб-страницах. Фактически любые знак, слово, выражение могут быть распознаны и при необходимости заменены другими значениями. По умолчанию подключен только один файл default.filter. Параметры комментированы, и, если надо, лишнее можно отключить, как, впрочем, и добавить свои настройки. Например, таким образом отбираются cookies, которые устанавливаются с помощью HTML-кода. s|<meta\s+http-equiv=['"]?set-cookie.*>|<!-- ZappedCookie -->|igU В первой части описано регулярное выражение; если Privoxy найдет его в html-странице, оно будет заменено словом «ZappedCookie». При желании можно создать такой файл самому и экспериментировать с настройками. Кстати, можно ничего и не выдумывать, а взять готовые установки с русского ресурса поддержки Privoxy (privoxy.org.ru). В архиве есть файл user.filter, помещаем его в /etc/privoxy и подключаем параметры: filterfile user.filter Регулярные выражения, находящиеся внутри, позволяют блокировать графику, удалять изображения, скрипты и скрытые frame-тэги. Фильтры используются в файлах action для дополнительного описания контента, к которому необходимо применить действие. Кстати, перехваченные сookies не удаляются, а сохраняются в файле, на который указывает переменная jarfile (со временем этот файл может вырасти до огромных размеров). Следующим по списку идет закомментированный параметр trustfile. С его помощью можно подключить файл с описаниями «белого» списка ресурсов, разрешенных для посещения. В таком файле сайты могут быть записаны в двух формах. Если перед именем стоит знак тильды «~», это означает, что все сайты, принадлежащие этому домену, являются доверенными и все внешние ссылки блокируются: ~ www.example.com Если же нужно разрешить переход по внешним ссылкам с доверенного ресурса, ставим перед именем знак «+», в этом случае такие сайты будут автоматически заноситься в trustfile. В случае блокировки ресурса пользователю будет выводиться страница, указанная в переменной trust-info-url. Параметр debug отвечает за выводимую в журнал отладочную информацию, после него стоит код, значение которого можно узнать в этом же в файле. Например, по умолчанию прописаны следующие инструкции: # Вывод каждого GET/POST/CONNECT-запроса debug 1 # Предупреждения и запуск процесса debug 4096 # Ошибки debug 8192 Есть и другие варианты, после окончательной настройки можно оставить только вывод сообщений с кодом 8192. По умолчанию Privoxy разрешает подключение только с локальной машины, поэтому заменяем IP-адрес в инструкции «listen-address 127.0.0.1:8118» адресом сетевого интерфейса компьютера. Например, если адрес - 192.168.1.58, то строка будет выглядеть так: listen-address 192.168.1.58:8118 При необходимости можно использовать и другой порт. Но теперь, используя параметры permit-access и deny-access, указываем, кому можно, а кому нельзя соединяться с Privoxy: permit-access 192.168.1.0/24 deny-access 192.168.1.2 192.168.1.3 www.vasja.com Чтобы быть в курсе всех событий, желательно активировать параметр admin-address, указав свой адрес электронной почты, на который будут приходить сообщения Privoxy. И, наконец, еще одна полезность Privoxy – возможность перенаправлять пользователей на другой прокси-сервер. Это может быть как обычный (анонимный), так и SOCKS-прокси. Для этого идем в самый конец файла и вписываем адрес любимого прокси-сервера. Можно, кстати, указать сразу несколько прокси-серверов через пробел, тогда будет произведена попытка соединения с каждым. При необходимости ресурсы, при посещении которых используется или, наоборот, не используется внешний прокси, конкретизируются. Символ «.» означает отсутствие перенаправления, а «/» - все URL. Например, разрешим использование прокси при посещении обычных сайтов и отключим для сайта provider.com, а также для ресурсов, работающих через SSL: forward / normandintransit.com:80 pandora.teimes.gr:8080 forward . provider.com . forward :443 . Это не все параметры, которые можно изменить в файле config, но пора идти дальше. Сокрытие информации с помощью Privoxy Настроек, как и возможностей, у Privoxy очень много, поэтому разберем лишь некоторые вопросы и начнем с сокрытия информации о системе и веб-браузере пользователя. При редактировании удобнее пользоваться веб-интерфейсом, в этом случае все параметры видны на одной странице, а справа даны краткие комментарии на английском. Действия, производимые Privoxy при совпадении правила, описаны в файле default.action; для пользовательских настроек предназначен user.action. Загружаем веб-интерфейс, нажимаем ссылку «View & change the current configuration», в появившейся странице в поле Actions Files выбираем нужный файл и нажимаем кнопку «Edit». Хочу добавить, что Privoxy имеет три предустановленных профиля агрессивности: Cautious, Medium и Adventuresome. Первый более лояльный, а последний блокирует практически все, что не хочется видеть на загруженной странице. Их можно выбрать на появившейся странице, нажав кнопку «Set to Adventuresome». Иначе нажимаем еще раз «Edit» и переходим в окно Edit Actions. Для включения параметра ставим флажок в Enable, для отключения - в Disable и, если значение следует оставить без изменений, - в No Change. Для блокировки исходящих и входящих cookies активируем crunch-incoming-cookies и crunch-outgoing-cookies. Самые продвинутые, вероятно, захотят редактировать параметры вручную. В настройках разобраться легко; если параметр требуется активировать, снимаем знак комментария и добавляем вначале «+»: +crunch-incoming-cookies +crunch-outgoing-cookies # Можно использовать псевдонимы: +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies Кроме того, за параметром в скобках может быть указано уточняющее значение. Некоторые сайты требуют обязательного использования сookies, тогда вместо этих параметров следует использовать session-cookies-only. В этом случае cookies будут приниматься и помечаться как временные, поэтому отслеживать серфинг с их помощью будет невозможно. Дополнительно можно активировать send-vanilla-wafer, в этом случае на все запросы будет передаваться некий стандартный cookies. Параметр hide-forwarded-for-headers блокирует передачу заголовка X-Forwarded-for, который выдает использование прокси. Аналогично активация hide-referrer позволит скрыть адрес ранее посещенного ресурса, передаваемого посредством referrer. Включение hide-from-header блокирует передачу адреса электронной почты, это типично для некоторых старых версий веб-браузеров. И, наконец, еще одна полезная возможность – сокрытие используемого веб-браузера. Для этого включаем hide-user-agent. В появившейся строке User Agent string to send можно заменить значение Privoxy/3.0 (Anonymous), которым будет подменяться название и версия нашего веб-браузера, любым понравившимся значением (Internet Sexplorer 8.0 будет в самый раз). По окончании настроек нажимаем «Submit» и сохраняем результат. Теперь можно зайти на сайт вроде ipid.shat.net и посмотреть, что получилось. Но выходить из окна настроек пока еще рано. Блокируем контент Как уже говорилось, с помощью Privoxy можно блокировать загрузку изображений, всплывающих окон и прочих украшений, нагружающих канал. Займемся обрезанием. Чтобы остановить GIF-анимацию на первом или последнем фрейме, включаем deanimate-gifs. Активация handle-as-image позволит заменять картинки с сайтов файлом, указанным в set-image-blocker. Можно конкретизировать, чем, собственно, заменять: использовать 1х1 GIF-файл или заранее подготовленный рисунок. Для блокировки всплывающих окон включаем kill-popups. Также включаем filter {banners-by-size}, filter {shockwave-flash}, filter {quicktime-kioskmode} и, возможно, другие filter. Это общие настройки, которые удобно производить с помощью веб-интерфейса. В файле default.action они описываются следующей конструкцией: # Умолчальные параметры { \ -add-header \ -block \ -crunch-outgoing-cookies \ -crunch-incoming-cookies \ +deanimate-gifs{last} \ ... +session-cookies-only \ +set-image-blocker{pattern} \ } / # все URL Для более тонкой работы Privoxy лучше использовать прямое редактирование action-файлов. Тогда мы получим возможность указать конкретное поведение прокси, вплоть до каждого ресурса. Формат записи следующий: вначале идут параметры в фигурных скобках, за ними следует список ресурсов, к которым они будут применены. Например, разрешим Google использовать только временные cookie, тогда любой севший за компьютер не сможет, воспользовавшись историей, получить доступ к почте или параметрам поиска. Пишем так: { -crunch-outgoing-cookies \ -crunch-incoming-cookies \ +session-cookies-only \ } .google.com В фигурных скобках можно задействовать весь арсенал filter-файлов, в которых названия фильтров следуют за ключевым словом «FILTER»: FILTER: banners-by-size Вот, по сути, и все. Хотелось бы отметить, что Privoxy, несмотря на всю свою «домашность», востребован и профессиональными администраторами, которые часто его используют в качестве прокси-сервера «второго эшелона», позволяющего, благодаря своим широким возможностям, существенно снизить затраты организаций на оплату трафика. Плагин к Firefox SwitchProxy Тому, кому часто приходится менять режим работы с прокси-серверами, вероятно, по вкусу придется плагин ко всем Mozilla - SwitchProxy (mozmonkey.com/packages/switchproxy). Правда, с его установкой может возникнуть маленькая проблема. Дело в том, что этот плагин давно не обновлялся, последняя версия совместима с Firefox до версии 1.5. Между тем на рынке уже доступна вторая версия этого браузера, для которой плагин устанавливаться откажется. Но это легко подправить. В любом архиваторе открываем файл switchproxy.xpi, в файле install.rdf меняем параметр maxVersion 1.5 на 2.х и сохраняем результат. Некоторые плагины после этого все равно не работают, но SwitchProxy это не касается. После установки заходим в Tools-SwitchProxy-Manage Proxies. В появившемся окне нажимаем «Add» для создания нового соединения. SwitchProxy позволяет настроить соединения к двум типам прокси: Standart (обычному) и Anonymous. После ввода настроек и сохранения результата для смены прокси выбираем в выпадающем списке Proxy, имя прокси и нажимаем «Apply». Конкуренты Privoxy Естественно, Privoxy не единственный доступный вариант. Например, MiddleMan (middle-man.sf.net) позволяет не только обрабатывать запросы, фильтруя контент, но и производить эффективное кэширование, причем не только http, но и ftp. Для настройки параметров работы пользователю также предложен веб-интерфейс. Хотя стоит отметить, что он менее удобный, чем у Privoxy, и, вероятно, потребуется некоторое время на его освоение. Но зато в функциональности Privoxy явно проигрывает. Другим конкурентом по части фильтрации трафика является DansGuardian (www.DansGuardian.org), который может обставить всех по количеству методов фильтрации: по ссылке, IP-адресу, домену и пользователю, содержимому, расширению файлов, метке PICS (Platform for Internet Content Selection - www.w3.org/PICS) и типу MIME. А POST-контроль позволяет ограничивать или вообще блокировать загрузку. DansGuardian работает в режиме «белого» списка, когда блокируются все сайты, кроме занесенных в этот список. Его функциональность легко может быть расширена с помощью многочисленных плагинов, среди которых есть антивирус, анализаторы журналов, шаблоны страниц и рисунков, blacklist и скрипты для их автоматического обновления. |