Как я bind`ом вирусы искал…

Ну сразу скажу, что не сами вирусы, а их активность, но тем ни менее открыл для себя много нового о том, куда «ходят» мои компьютеры, телефоны и планшет.imageА дело было вечером, делать было нечего… Шел дождь, интеренет подозрительно тормозил, хотя вроде 8 мегабит и все должно «летать». Парк домашней техники, которая связанна с всемирной паутиной у меня небольшой — стационарный компьютер, ноутбук, планшет, спутниковый тюнер с линуксом, 3 смартфона и дохленький сервачок-хеончик с debian и xen (на нем ещё с пятёрку постоянно работающих виртуальных OC). Не много не мало, но постоянно поддерживать, обновлять и проверять на вирусы все это хозяйство отнимает деньги (лицензионное ПО) и время, которого как всегда нет. И в какой-то момент было принято решение полностью отказаться от антивирусов, а то их покупай, обновляй… Да и субъективно тормозит с ними все…С момента как я отказался от антивирусов прошло больше года. Все работает, все прекрасно, Но… Ты ведешь хомячка? — А он есть! Я web программист, посему на сервере для себя настроил dns (bind9), в котором создал зону .dev для разработки (оооочень удобно, см [тыц]), а за одно и логирование включил, пускай будет на всякий случай. Адрес моего локального DNS-сервера раздаёт DHCP ADSL-модема как основной DNS-сервер сети.

И вот однажды я таки решил просмотреть, что ж там пишется в логах DNS сервера. Оказалось, что один из домашних компьютеров постоянно стучится не пойми куда:

01-Nov-2013 23:11:03.128 queries: info: client 192.168.1.11#63500: query: yfp2lvdyye86s78.pp.ua IN A + (192.168.1.1) 01-Nov-2013 23:11:04.138 queries: info: client 192.168.1.11#63500: query: yfp2lvdyye86s78.pp.ua IN A + (192.168.1.1) 01-Nov-2013 23:11:09.867 queries: info: client 192.168.1.11#58461: query: yfp2lvdyye86s78.free IN A + (192.168.1.1) 01-Nov-2013 23:11:15.390 queries: info: client 192.168.1.11#52119: query: yfp2lvdyye86s78.ce.ms IN A + (192.168.1.1) 01-Nov-2013 23:11:21.006 queries: info: client 192.168.1.11#50737: query: yfp2lvdyye86s78.net IN A + (192.168.1.1) 01-Nov-2013 23:11:26.512 queries: info: client 192.168.1.11#54267: query: 35pa1j6h47e1l7v.tk IN A + (192.168.1.1) Я точно туда не ходил, выходит это кто-то другой. Была проведена профилактика вирусов, и действительно был найдет зловред и «вылечен». Тут бы и сказочки конец, но на этом я не остановился. Захотелось более глубоко и в удобной форме проанализировать накопленные логии DNS сервера, возможно происходило что-то еще помимо моей воли и желаний.И бинго — меня сосчитали (как в том мультике). Я смотрю рекламу и меня упорно считают всякие счетчики. Конечно, не для кого не секрет, что на большинстве сайтов установленные разнообразнейшие счетчики посещаемости, метрики и размещена реклама, с разных рекламных площадок, есть даже LIKE соц. сетей, которых я даже не знаю. А зачем, что бы меня считали, показывали надоедливую рекламу, зачем то, что мне не надо? С этим надо что-то делать.

Итак возникло две проблемы — провести анализ логов в удобном виде, и заблокировать не нужные сайты (счетчики, рекламу и etc.), т.к. ставить на все компьютеры рекламорезалку как-то не выход, и интернет через прокси тоже не хотелось делать. Так что конечно заблокировать можно разными способами, но для себя я выбрал подмену реального IP адреса DNS, моим локальным. То есть конфигурациями локального DNS.

С первым пунктом думалось, проблем не будет. Все хорошее написано до нас. Был найден чудный bash скрипт — который умел показывать наиболее посещаемые сайты разбирая логи и проект на руби Bind log analyzer который преобразовывает логи в mysql базу да еще и было заявлено, что в нем есть веб интерфейс для просмотров результатов. Так же по горячим следам был найден ресурс http://pgl.yoyo.org/adservers/ на котором вроде бы все есть, и списки доменов которые можно безболезненно запретить, и описание как это сделать, но … Не знаю как в bind8, но bind9 сильно ругался на предложенную на том сайте пустую зону, а браузеры судорожно не завершали процесс загрузки страницы, пытаясь до грузить на страницу счетчики, рекламу, не понимая, где ж собака то покопалась.

Первый скрипт не подошел сразу т.к. логии были за пол года, ротации логов не было, и ко всему прочему не был включен параметр для сохранения время обращения к DNS серверу. Второй Bind log analyzer, в котором разбор логов настроить таки получилось, но веб интерфейс запустить так инее удалось. Пришлось велосипедить.

И так про велосипед. Называется statdnslog, лежит на гитхабе и состоит из двух частей: утилит и WEB интерфейса.Утилиты умеют: — разбирать лог фалы запросов к DNS Bind9; — сохранять полученные данные в базу (mysql); — создавать списки запрещений на основе списков с сайта pgl.yoyo.org (например); — добавление новых DNS в список запрещений из своего списка (текстовый файл с перечислениями DNS); — генерировать шаблоны настроек DNS для BIND9.

WEB интерфейс: — отображает статистику с сортировкой по дате (по умолчанию верху крайние посещенные) и другим полям; — показывает самые посещаемые DNS и сколько раз посещали; — выделять цветом (красным) в общем списке посещенных DNS, DNS из списка запрещенных.

К слову скажу, что переопределение DNS ни от чего не спасет и это не средство защиты. Защитой могут быть антивирусы, фаерволы, прокси с анализатором трафика и прочие специализированные средства защиты, однако в случае с анализом DNS трафика — предупрежден, значит вооружен, да и кто, куда и когда из семейных ходит видно.

Еще раз ссылка на github: https://github.com/mcdir/statdnslogСайт: http://statdns.nedze.com/Демонстрационная версия WEB интерфейса: http://demo.statdns.nedze.com/

Доп материалВключение логов DNS BIND9 logging Clause — http://www.zytrax.com/books/dns/ch7/logging.htmlHow to enable named/bind/DNS full logging — http://stackoverflow.com/questions/11153958/how-to-enabled-named-bind-dns-full-loggingBind Logs — Top DNS Queries http://www.pablumfication.co.uk/2010/09/03/bind-logs-top-dns-queries/

© Habrahabr.ru