Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #35, ОКТЯБРЬ 2003 г.

DrWeb - как за каменной стеной!

Докучаев Дмитрий aka Forb

Спецвыпуск Xakep, номер #035, стр. 035-088-1


(forb@real.xakep.ru)

Интегрируем демонов с антивирусом

В последнее время волей-неволей мы все чаще сталкиваемся с вирусами. Рассылка заразных сообщений на e-mail не вызывает никакого удивления. Конечно, ты уже умный и никогда не станешь запускать вложенные файлы, отправленные неизвестным вирусописателем. Поэтому можно даже не защищать себя от этой напасти антивирусником. Но в случае, если ты админ локалки или держишь хостинг с e-mail сервисом, твои клиенты будут тебе искренне благодарны, если их письма будут автоматически сканироваться на вирусы. Тем самым ты обеспечишь сохранность драгоценного трафика (в наше время вирусы и трояны весят довольно много), а также убережешь своих подопечных от заражения.

Я неспроста сказал, что этот материал будет актуален лишь для начинающих админов, не имеющих опыта в интеграции антивируса с системными приложениями (как ты, наверное, понял, этим мы сегодня и займемся). Опытный админ, на лбу которого полсотни шишек, набитых в жестокой борьбе с проблемами настройки конфов, за несколько минут решит поставленную задачу (после прочтения краткого мануала, прилагающегося к модулю). Для человека без опыта все намного сложнее: тонкие нюансы, без учета которых ничего не будет работать, как правило, не освещаются в коротком хелпе, зато все они будут описаны здесь.

Как это работает?

Прежде чем что-либо скачивать и настраивать, важно четко понимать принцип интеграции. Что мы имеем? Допустим, у нас установлен sendmail (не ниже версии 8.11), и стоит полностью отлаженная система, состоящая из сервера drwebd и клиента drweb-smf. Благодаря тому, что в свежих версиях почтовика появилась новая многопоточная библиотека MilterAPI, позволяющая принимать команды для sendmail от других приложений, становится реальным обеспечить проверку на вирусы всех входящих сообщений.

Как видно на рисунке, конечное приложение не может взаимодействовать с сервером drwebd. Но посредством MilterAPI, почтовик может "общаться" с drweb-smf, а он, в свою очередь, ждет от сервера положительного либо отрицательного ответа.

После изучения работы sendmail становится ясно, что MilterAPI передает фильтру каждую часть сообщения (начиная от helo и заканчивая data секциями). Все эти части drweb-smf хранит в отдельных файлах. Следовательно, в этой связке sendmail - клиент, а drweb-smf - сервер, поэтому в sendmail.cf и в командной строке drweb-smf указывается адрес фильтра, а почтовик для этого соединения выбирает подходящий клиентский адрес. Не буду вдаваться в подробную настройку конфа, так как остановлюсь на этом несколько позже.

Во второй связке взаимодействуют уже клиент и сервер drweb. Это происходит следующим образом: drweb-smf коннектится к drwebd на 3000 порт (либо другим способом, указанным в конфе). После этого клиент делает запрос на проверку файла (как раз того, который передал sendmail). Если зараза в файле не обнаружена, сервер возвращает ответ - "все чисто". В этом случае drweb-smf затирает временный документ и ничего не возвращает почтовому серверу. В противном случае все зависит от конфа: в режиме quarantine файл автоматически переносится в каталог инфицированных сообщений, метод reject просто блокирует доставку (с оповещением), discard молча удалит сообщение, а redirect вернет сообщение отправителю. Подробнее о методах мы поговорим немного позже.

Содержание  Вперед на стр. 035-088-2