DansGuardian - фильтрация web-запросов под Linux
Вы, наверное, уже не раз
читали на нашем сайте статьи, посвященные так называемой контентной
безопасности (content security). Речь шла и о фильтрации
web-запросов, и об анализе содержимого web-страниц, и о фильтрации
потоков e-mail. Однако почти всегда мы останавливались на продуктах
и технологиях, реализованных в основном под Windows. В данной статье
мы решили обратиться к теме контентной безопасности, но уже под
Linux. В качестве обсуждаемого продукта был выбран DansGuardian. Это
очень известное решение с открытым исходным кодом и бесплатное для
домашних пользователей, школ, библиотек, университетов и т.д. О
DansGuardian нам расскажет его создатель - Дэниэль Бэррон (Daniel
Barron).
Алексей Доля: Расскажите немного о себе,
пожалуйста. Дэниэль Бэррон: Мне 28 лет, я вырос в
Кингстоне-на-Халле (Kingston Upon Hull), в Великобритании. Окончил
университет в Манчестере. Увлекаюсь садоводством, электроникой,
люблю готовить и пешие прогулки, обожаю японскую анимацию и,
конечно, компьютеры. Я очень горжусь своим садом, который уже почти
превратил в японский. Подумываю над тем, чтобы выучить японский
язык.
Фотография,
которую вы видите выше, была снята рядом с Хамберским Мостом (Humber
Bridge). Этот мост и до наших дней остается самым длинным монолитным
мостом в мире. За время, прошедшее с момента снятия фотографии, я
отрастил длинные волосы и стал толще! Сейчас я работаю
техническим директором в SmoothWall Ltd.
Программированием занимаюсь уже более 19 лет, в IT-отрасли работаю
более 9 лет. После окончания университета я получил диплом по
вычислительной химии (Computer Aided Chemistry) и пошел работать
администратором Novell в многонациональную инженерную компанию. Там
мне в основном пришлось обслуживать MoD-сервера. Через некоторое
время я возглавил отдел, занимающийся сетями, исследованиями и
разработкой. Фактически я прокладывал курс, по которому двигалась
компания. Я могу смело утверждать, что в разработке каждого продукта
и каждого решения, которые выпускала компания, я участвовал
лично. Используя свой компьютер на базе British RISC
OS, я управлял разработкой нескольких проектов (включая всю мою
работу в SmoothWall). Одним из самых заметных проектов является
DansGuardian. Алексей Доля: Что натолкнуло вас на идею создания
такого продукта? Дэниэль Бэррон: Когда я работал в Beebug Computers в
Великобритании, меня попросили найти какой-нибудь web-фильтр, с
открытым исходным кодом и бесплатный. На тот момент был единственный
качественный коммерческий web-фильтр - IGear. Но он был просто
сверхдорогим. Остальные фильтры типа squidGuard и NetNanny
осуществляли только URL-фильтрацию, чего явно недостаточно. Мне
удалось отыскать лишь одно приложение с открытым исходным кодом,
которое вроде бы делало то, что мне надо. Это был Active Guardian.
Довольно быстро выяснилось, что Active Guardian имеет очень много
багов, работает очень медленно, а на современных браузерах
отказывается работать вообще. Так что я решил научиться
программировать под UNIX (в моем случае - Linux), а также выучить
С++ и писать программы самому. В октябре 2000 года я начал читать
книги по разработке Linux-приложений на С++, а к январю 2001 года
почувствовал себя достаточно сильным, чтобы написать первую версию
своей программы. С тех пор я внес очень много улучшений в свою
программу, расширил её возможности и повысил эффективность. Алексей
Доля: Вы назвали продукт в свою честь? :) Дэниэль Бэррон:
Что-то типа того. В тот момент у меня был замечательный скрипт под
названием DansLinux.sh - он превращал мой обычный Red Hat 5.2 в
брандмауэр, proxy, почтовый сервер с кэшированием DNS и т.д. Это
была моя версия Linux. Рабочее название для web-фильтра было просто
шуткой - это была моя версия Active Guardian - DansGuardian. Но имя
прижилось, остальное - история. Алексей Доля:
Расскажите подробнее о DansGuardian в плане его
возможностей? Дэниэль Бэррон: DansGuardian - это "движок" для
фильтрации web-контента. Я написал и отладил его сам. Продукт
используется во многих компаниях по всему миру и имеет довольно
широкую базу пользователей. Его основная задача - фильтрация
web-страниц на основании анализа их содержимого (картинок, URL,
типов файлов и т.д.). Программа справляется со своей задачей очень
хорошо, возможно, даже лучше всех. Алексей Доля: Какие
технологии и алгоритмы применяются в DansGuardian? Дэниэль Бэррон:
Обычные web-фильтры типа Cyber Patrol, squidGuard, Net Nanny и т.д.
используют очень длинный список плохих web-сайтов. Если вы
попытаетесь открыть один из этих сайтов, то фильтр его заблокирует.
Таким образом, доступ к ресурсам сети фильтруется по
web-адресам. Интернет - очень быстро меняющаяся среда. Даже такие
гиганты web-поиска как Google, Altavista или Yahoo часто не знают
даже половины всех существующих ресурсов. Все это приводит к крайне
низкой эффективности фильтрации по web-адресам: сайты часто меняют
свое содержание или местоположение, да и новые страницы растут, как
грибы после дождя. То есть, URL-фильтрация недостаточна. Необходимо
проверять каждую запрашиваемую страницу на предмет наличия в ней
опасного содержимого, например, богохульства, информации о
неприкрытой агрессии, порнографии и т.д. Доступ к подобным ресурсам
должен быть заблокирован. Это и называется контентной
фильтрацией. В то время как другие фильтры, использующие базу данных
URL, быстро выходят из строя, DansGuardian применяет механизмы
динамической фильтрации, быстро адаптируясь к новым
web-страницам. DansGuardian использует следующие алгоритмы: DFA
(Детерминированный конечный автомат), бинарный поиск и быстрый
поиск. Все они реализованы мною на С++, то есть я отказался от
использования довольно медленных библиотек. В результате
DansGuardian получился действительно очень быстрым. Как говорят его
пользователи, DansGuardian в несколько раз быстрее IGear, а это,
между прочим, один из ближайших конкурентов.
Алексей Доля: Вы не могли бы подробнее остановиться
на алгоритмах? Хотелось бы понять, как именно продукт анализирует
страницы. Дэниэль Бэррон: Упс, я, кажется, упустил еще и
быструю сортировку. Что касается алгоритмов, то подробнее о работе
DansGuardian можно почитать здесь: http://dansguardian.org/?page=dgflow.
Я же дам лишь краткую справку.
Quick Search (подробнее).
Алгоритм представляет собой линейный проход по тексту и его
постоянное сравнивание с конкретной заданной строкой. Алгоритм
очень быстрый, он не возвращается каждый раз к точке предыдущего
сравнения, а строит специальную таблицу сравнений. Binary Search (подробнее).
Для работы алгоритма необходим список отсортированных объектов.
Алгоритм "заглядывает" в середину и проверяет, есть ли там
что-нибудь похожее на то, что он ищет. Если да, то алгоритм
проверяет одну из оставшихся половин таким же образом.
Предположим, вы осуществляете поиск по телефонной книге. В самом
худшем случае вам потребуется Ln(O)+1 итераций (O - число записей
в телефонной книге). То есть, если в книге будет 1 млн. записей,
то вам потребуется 15 итераций. Quick Sort (подробнее).
Это применение стратегии "разделяй и властвуй", как и в предыдущем
случае. Только этот алгоритм намного более сложен для понимания,
чем обычный бинарный поиск. DFA (Детерминированный
конечный автомат, подробнее).
Алгоритм работает следующим образом: строится матрица всех
интересующих фраз, а потом текст "пропускается" через эту матрицу.
Вы можете осуществлять одновременный поиск более чем 1500 фраз
одновременно. С помощью быстрого поиска (Quick Search) вам
пришлось бы проверять фразы по одной. Мне всегда казалось, что
таблицу сравнений из алгоритма быстрого поиска (Quick Search) можно
как-то применить к алгоритму DFA. Это сделало бы его еще более
эффективным. Недавно кто-то сказал мне, что эта идея уже
реализована. Алексей Доля: Есть ли какой-нибудь способ
протестировать эффективность и надежность вашего продукта? Дэниэль
Бэррон: Конечно - посмотрите на него в деле! Просто попробуйте
получить доступ к каким-нибудь "плохим" ресурсам и убедитесь, что
продукт их блокирует. Сравните мой продукт с URL-фильтрами,
например, squidGuard или N2H2. Если вы хотите использовать
коммерческую версию DansGuardian, то попробуйте Corporate
Guardian. Еще один способ убедиться в том, что продукт
действительно стоящий - это поговорить с его пользователями. Алексей
Доля: Кого бы назвали самым сильными конкурентом DansGuardian?
Может быть Squid? Дэниэль Бэррон: Squid - это proxy, который
DansGuardian использует чаще всего. Это ни в коем случае не
конкурент. Proxy необходим для того, чтобы DansGuardian мог
работать. Лучшими альтернативами DansGuardian являются SmoothGuardian
или Corporate Guardian. Это полностью коммерческие версии,
выпускаемые SmoothWall Ltd.
и использующие тот же "движок", что и DansGuardian. Они имеют
преимущества: компания-продавец гарантирует выход патчей, поддержку,
интерфейс пользователя для работы через сеть, программы для
просмотра журнала и создания отчетов, легкую инсталляцию и т.д. Все
это написал тоже я :). DansGuardian нужно
инсталлировать и компилировать самому, точно также надо руками
редактировать конфигурационные файлы. DansGuardian подойдет сетевым
администраторам Unix, а версии, выпускаемые SmootWall - тем
администраторам, у которых нет времени на конфигурирование решения и
которые хотят получить продукт работающий сразу после того, как его
вытащили из коробки. Именно поэтому скриншоты DansGuardian не могут
похвастаться красивым и стильным GUI.
Конфигурационный файл DansGuardian DansGuardian является
своего рода базой и платформой для тестирования. В то время как
Smooth/Corporate Guardian - это все же стабильные версии. Обе версии
стоят друг друга. Примерно так же как и SmoothWall Express
(свободный GPL-брандмауэр) и SmoothWall Corporate Server
(коммерческий брандмауэр). Единственный фильтр,
который, на мой взгляд, подошел достаточно близко к Guardian, это
IGear. Но он стоит очень много денег и работает значительно
медленнее. Все остальные фильтры довольно бесполезны, они способны
фильтровать лишь web-адреса страниц. Алексей Доля: Над
чем вы сейчас работаете? Какие новые возможности DansGuardian стоит
ждать в будущих версиях? Дэниэль Бэррон:
Сейчас я работаю над тем, чтобы DansGuardian поддерживал группы с
различными правилами фильтрации. Таким образом, различные группы
пользователей смогут иметь различные права доступа к ресурсам
Интернета. Также я работаю над тем, чтобы ускорить перезагрузку
решения (если она понадобится), а также над другими, более мелкими
улучшениями. Если вы всегда хотите быть в курсе событий - посещайте
наш web-сайт! Алексей Доля: DansGuardian можно бесплатно скачать с
вашего сайта. Как вы тогда зарабатываете деньги? Дэниэль Бэррон:
Немного не так. Огромное количество людей ошибочно полагают, что
GPL-программы являются бесплатными. Это не тот случай. Я позволяю
каждому отдельному пользователю скачать продукт и попробовать его.
Но коммерческие пользователи должны платить за продукт. Я также
позволяю скачивать продукт организациям, не предназначенным для
извлечения прибыли, то есть школам, библиотекам и т.д. Собственно и
домашним пользователям тоже. Я также прошу пользователей о денежных
пожертвованиях. В целом, я не зарабатываю больших денег от платы за
использование DansGuardian и так ни разу и не получил пожертвование.
Удивительно, как много людей просто переписывают чью-то работу и
получают бесплатную поддержку, без какой бы то ни было отдачи. Тем
не менее, тех денег, что я зарабатываю, хватает, чтобы не бросить
эту работу! Вы правы в том, что я не останавливаю никого и не мешаю
скачивать DansGuardian, но я надеюсь на человеческую
честность. Так как каждый должен платить налоги со своих доходов, я и
Джейд (Jade) учредили компанию "DrGuardian". Джейд занимается ей в
свободное время. Единственная задача компании - просто существовать.
Таким образом, мы платим налоги правительству и ведем абсолютно
легальную деятельность. Я бы мог просто задекларировать
дополнительный доход, но, имея компанию, я могу покупать аппаратное
обеспечение и не платить подоходный налог. Что касается всего
остального, то Джейд также получает зарплату в компании (так как
тратит на нее времени больше, чем я). Это также позволяет сэкономить
немного на налогах. Все абсолютно легально! :) Это хороший опыт для
Джейд, которая хочет получить работу бухгалтера. Зарабатываю на жизнь я
работой в SmoothWall Ltd, которая выпускает все коммерческие версии
DansGuardian. Я также являюсь директором компании. У меня остается
достаточно свободного времени, чтобы бесплатно помогать
пользователям и писать новое ПО. Мне нравится быть ближе к
обществу.
Типовая
картинка, запрещающая доступ к сайту Алексей Доля: Я
слышал, вы женитесь в этом году, не так ли? Удачи вам! Дэниэль
Бэррон: Да, большое спасибо. Я встречаюсь с Джейд уже много лет,
она ведет все мое бухгалтерское дело. Я хотел, чтобы все было
официально, так что теплым летним вечером за ужином (который я
приготовил) при свечах в саду я сделал ей предложение. Она
согласилась. Свадьба назначена на май, мы уже забронировали места и
разослали приглашения. Алексей Доля:
Спасибо за интервью! Успехов вашей семье и DansGuardian!
|