www.eserv.ru // Docs/Eserv/HowTo/AntiVirus

oldwiki /2004-12-23 05:28/ (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
News
15.05.2012
Eserv504
15.05.2012
ActiveSync
01.04.2012
Eproxy508
25.03.2012
Eserv503
26.02.2012
Eserv502
08.02.2012
UMI.CMS
22.12.2011
Eserv431
20.12.2011
Eproxy507
15.11.2011
Eproxy506
19.09.2011
Eproxy505
08.09.2011
Eserv430
06.09.2011
Lightning
18.07.2011
PoweredBy
16.07.2011
IPv6
08.07.2011
Eproxy5beta1
17.06.2011
IPv6DNS
13.06.2011
IPv6Mail
21.03.2011
Eserv428
22.10.2010
Eserv426
21.10.2010
SSL
22.04.2010
Eserv423
20.04.2010
Eserv4WhatsNew
19.04.2010
EservLDAP
19.04.2010
EservDHCP
19.04.2010
EservRubricator
08.04.2010
EservDNS
08.04.2010
NSСI
08.04.2010
WPAD
27.03.2010
Eserv422
27.03.2010
Eserv4Docs
26.03.2010
Eserv4FAQ
21.03.2010
EservIrc
05.03.2010
Eserv421
05.03.2010
HttpProxy
02.03.2010
EservVideo
02.12.2009
Eserv4Wiki
02.12.2009
Eserv4acWEB
02.12.2009
PopPull
22.11.2009
PigMailPigProxy2/WhatsNew
22.11.2009
PigMail/WhatsNew
22.09.2009
FossilEservHowTo
22.09.2009
SourceCodeManagement
22.09.2009
FossilScm
16.09.2009
SendEmail
08.09.2009
RoundCube
07.05.2009
GitScm
07.05.2009
GitEservHowTo
06.05.2009
SunBird

Антивирусная проверка почты с помощью файла tossspool.bat

Предупреждаю сразу: это решение "для бедных" или на случай каких-либо экзотических ситуаций — например, сугубой необходимости применения антивируса, не поддерживаемого Eserv. Во-первых, его использование приводит к повышенному расходу ресурсов компьютера, что отрицательно сказывается на обработке больших потоков почты. Во-вторых, некоторые версии некоторых антивирусов по этой схеме не заработают вообще просто в силу особенностей своего устройства. Наконец, этот вариант, мягко говоря, не приветствуется антивирусными компаниями. Формально они правы — при оплаченной клиентской лицензии программа нашла серверное применение, каковое ("согласно закону и обычаю", как любят выражаться в гражданских обществах Дикого Запада) оценивается существенно дороже — как минимум, раз в десять. Поэтому, во избежание всех перечисленных неприятностей, рекомендуется загодя приобрести лицензию на использование интегрированного антивируса (который, впрочем, вполне можно использовать и в демонстрационном режиме при условии грамотного учёта возникающих при этом ограничений). Командный файл tossspool.bat рекомендуется использовать совместно с подкаталогом mail\spool\to_check. Поскольку файлы сообщений создаются без всякой синхронизации с работой Тоссера, то, появись они в каталоге mail\spool, существует вероятность появления файла именно к моменту окончания работы tossspool.bat — это привело бы к пропуску важного этапа обработки. Создание файлов сообщений в отдельном каталоге гарантирует, что ни одно письмо не пройдёт через Тоссер без предварительной обработки. Естественно, применять необходимо полнофункциональные версии антивирусных сканеров, поскольку в демонстрационном режиме большинство антивирусов имеют жёсткие ограничения в работе — так, например, Dr.Web производства Санкт-Петербургской антивирусной лаборатории Данилова не проверяет почтовые форматы (так что применять его по описываемой схеме при отсутствии лицензии вообще не имеет смысла), архивы и упакованные файлы. Эти решения предназначены для Eserv версии 2.97 и выше.

Стандартное решение с использованием AVP (KAV)

Это решение разработано пользователями Eserv и доступно для загрузки с сервера ftp.eserv.ru в виде архива antivirus_avp.zip. Структура каталогов:
mail\---mail\spool\---mail\spool\to_check\---check\---check\vir\ Используемые файлы:
agents\tossspool.bat---check\testvir.bat Содержимое файла agents\tossspool.bat:
for %^^^^%f in (mail\spool\to_check\*.*) do call check\testvir.bat %^^^^%f Вся его функция сводится к вызову файла check\testvir.bat с передачей ему в качестве аргумента имени очередного обнаруженного в проверяемом каталоге файла. Сделано так потому, что большинство антивирусов никаких действий с заражёнными письмами не производят — они только проверяют файл и устанавливают код завершения, на основании которого командный файл может предпринимать различные действия. Содержимое файла check\testvir.bat:
echo "c:\eserv2\%1" >> testvir.log---"C:\Program Files\Kaspersky Lab\AVP Pro\~Avp32.exe" "c:\eserv2\%1" /S /N /Q---if ERRORLEVEL 2 goto virus---if ERRORLEVEL 3 goto virus---if ERRORLEVEL 4 goto virus---goto endtest---:virus---move %1 CHECK\VIR\---:endtest---move %1 mail\spool\ Здесь предполагается, что Eserv установлен в каталог C:\eserv2, а антивирусный сканер — в каталог C:\Program Files\Kaspersky Lab\AVP Pro (в исходном файле путь несколько другой, очень уж длинный) под именем ~Avp32.exe. Если пути отличаются, их необходимо поправить. Первой строкой в файл протокола testvir.log, который создаётся прямо в каталоге установки Eserv, записывается имя проверяемого файла. Далее файл предъявляется для проверки антивирусному сканеру. По результатам этой проверки файл письма перемещается либо в каталог карантина check\vir, где и будет храниться, пока у администратора не дойдут до него руки, либо для дальнейшей обработки в mail\spool. Возможные подводные камни: в зависимости от сочетания используемой версии AVP (KAV) сканера и версии операционной системы командный файл может не дожидаться завершения работы сканера. В этом случае код завершения равен нулю независимо от результата сканирования. Решения этой проблемы пока нет.

Решение с использованием Dr.Web ранних версий (ниже 4.28)

Это решение было испытано лично и в течение примерно года (до перехода на интегрированный антивирус) надёжно защищало нашу сеть. В нём используется более удобная для автоматизации консольная версия сканера (drwebwcl.exe). Если Вы по каким-то причинам не установили её, можете использовать и оконную версию (drweb32w.exe), но в этом случае в командную строку вызова приложения необходимо добавить ключ /QU, чтобы программа по окончании проверки завершила работу и закрыла своё окно. Структура каталогов:
mail\---mail\spool\---mail\spool\to_check\---mail\check\---mail\infected\ Используемые файлы:
agents\tossspool.bat---agents\tosscheck.bat---agents\tossspool.ini---agents\sendmail.exe---agents\virusalert.txt Содержимое файла agents\tossspool.bat:
set FILES=0---for %^^^^%f in (mail\spool\to_check\*.*) do set FILES=1---if %FILES%==0 goto end---move mail\spool\to_check\*.* mail\check\---for %^^^^%f in (mail\check\*.*) do call agents\tosscheck.bat "%^^^^%f"---move mail\check\*.* mail\spool\---if %FILES%==2 agents\sendmail.exe Здесь используется вспомогательная переменная окружения FILES. Во второй строке ей присваивается специальное значение 1, если в каталоге mail\spool\to_check имеются файлы, которые следует проверить. Все эти файлы перемещаются в рабочий каталог mail\check. Далее для проверки каждого файла из рабочего каталога вызывается файл agents\tosscheck.bat с передачей ему в качестве аргумента имени очередного обнаруженного в проверяемом каталоге файла. Сделано так потому, что Dr.Web ранних версий не предпринимает никаких действий в отношении заражённых писем — он только устанавливает код завершения, который должен быть проверен командным файлом для принятия окончательного решения. По завершении проверки все оставшиеся в рабочем каталоге файлы (перемещение заражённых файлов выполняется командным файлом agents\tosscheck.bat) перемещаются в mail\spool для дальнейшей обработки. Если были обнаружены вирусы, то переменная окружения FILES имеет значение 2 — в этом случае генерируется письмо-извещение для администратора. Содержимое файла agents\tosscheck.bat:
c:\avir\drwebwcl.exe %1 /go /ini:agents\tossspool.ini---if not errorlevel 1 goto end---set FILES=2---move %1 mail\infected\---:end Здесь предполагается, что Dr.Web установлен в каталог C:\avir (если Вы использовали другой каталог, укажите его в командном файле). По результатам проверки файла либо не предпринимается никаких действий (если файл письма не содержит вирусов), либо (если обнаружен вирус или хотя бы подозрение) письмо перемещается в каталог mail\infected и устанавливается "тревожное" значение переменной окружения FILES. Содержимое файла agents\tossspool.ini:
[Windows]---~LngFileName = "Russian.DWL"---~ScanFiles = All---~HeuristicAnalysis = Yes---~CheckPackedFiles = Yes---~CheckArchives = Yes---~CheckEMailFiles = Yes---~InfectedFiles = ~ReportOnly---~SuspiciousFiles = ~ReportOnly---~IncurableFiles = ~ReportOnly---~ExcludePaths =---~VirusBase = "*.vdb"---~LogToFile = Yes---~OverwriteLog = No---~LogScanned = Yes---~LogPacked = Yes---~LogArchived = Yes---~LogFileName = "C:\eserv2\log\~TossSpool.log"---~LogFormat = ANSI---~ShowProgressBar = No---~ScanPriority = 25---~TestMemory = No---~AutoSaveSettings = No---~ScanSubDirectories = Yes---~TestBootSectors = No---~PromptOnAction = No---~PromptFloppy = No---~PlaySounds = No---~UseDiskForSwap = Yes---~LogStatistics = Yes---~AutoUpdate = No---~ScanFDD = No---~ScanHDD = Yes---~ScanCD = No---~ScanNet = No---~LimitLog = No---~RestoreAccessDate = No Здесь предполагается, что Eserv установлен в каталог C:\eserv2 — отчёт сканера о проверке файлов записывается в тот же каталог log, что и собственные журналы Eserv. Файл отчёта TossSpool.log в таком варианте бесконтрольно пухнет, его надо укорачивать вручную. Однако, если Eserv работает под Windows NT/2000/XP, можно воспользоваться расширенными возможностями системы. Для этого в начало командного файла agents\tossspool.bat добавляется следующая строка:
for /f "tokens=2,3 delims=. " %^^^^%d in ('date /t') do set DD_=%^^^^%d&set MM_=%^^^^%e а строка запуска сканера в командном файле agents\tosscheck.bat записывается следующим образом:
c:\avir\drwebwcl.exe %1 /go /ini:agents\tossspool.ini /rp+C:\eserv2\log\%MM_%^^^^%DD_%tossspool.log Этот вариант решения позаимствован у Андрея Лаврова. Надо заметить, что работает он не при всяких региональных настройках — ему необходимо, чтобы системная команда date использовала российский формат вывода ДД.ММ.ГГГГ. При других форматах потребуется указать другие разделители либо другие поля. Содержимое файла agents\virusalert.txt:
From: "Mailer-Daemon" ---To: "Administrator" ---Subject: Внимание, вирусы!---Mime-Version: 1.0---Content-Type: text/plain; charset=windows-1251---Content-Transfer-Encoding: 8bit

При анализе почты обнаружены вирусы! Файл agents\sendmail.exe не входит в стандартную поставку Eserv, но может быть загружен отдельно с адреса http://www.lankgroup.ru/files/eserv/sendmail.zip. Эта программа написана Дмитрием Зориным по моей просьбе и имитирует (частично) работу почтовых программ sendmail/qmail в UNIX-системах. В нашей сети она используется для местной отладки активных сайтов и в описанной связке. Вместо неё можно использовать smtpsend.exe с соответствующими ключами. Несколько ниже описано формирование письма-извещения с помощью универсального агента erobot.exe.

Решение с использованием Dr.Web версии 4.28 и выше

Начиная с версии 4.28 программы семейства Dr.Web научились перемещать, переименовывать и удалять файлы-контейнеры, к которым относятся и почтовые файлы. В результате появилась возможность использовать ресурсы системы более эффективно — теперь сканер можно запускать единожды на каждый проход независимо от числа проверяемых писем. Предлагаемое решение проверено в тестовой конфигурации. Структура каталогов:
mail\---mail\spool\---mail\spool\to_check\---mail\check\---mail\infected\ Используемые файлы:
agents\tossspool.bat---agents\tossspool.ini---agents\sendmail.exe---agents\virusalert.txt Содержимое файла agents\tossspool.bat:
set FILES=0---for %^^^^%f in (mail\spool\to_check\*.*) do set FILES=1---if %FILES%==0 goto end---move mail\spool\to_check\*.* mail\check\---c:\avir\drwebwcl.exe mail\check\*.* /go /ini:agents\tossspool.ini---if errorlevel 1 agents\sendmail.exe Здесь в отличие от предыдущего решения антивирусный сканер вызывается один раз для проверки всех файлов, находящихся в каталоге mail\check. Заражённые файлы, как и ранее, перемещаются в процессе проверки в каталог mail\infected (при этом сканер устанавливает код завершения, отличный от нуля), оставшиеся незаражённые файлы перемещаются в каталог mail\spool для дальнейшей обработки. Содержимое файла agents\tossspool.ini:
[Windows]---~LngFileName = "Russian.DWL"---~ScanFiles = All---~HeuristicAnalysis = Yes---~CheckPackedFiles = Yes---~CheckArchives = Yes---~CheckEMailFiles = Yes---~InfectedFiles = Move---~SuspiciousFiles = Move---~IncurableFiles = Move---~MoveFilesTo = "C:\eserv2\mail\infected"---~ExcludePaths =---~VirusBase = "*.vdb"---~LogToFile = Yes---~OverwriteLog = No---~LogScanned = Yes---~LogPacked = Yes---~LogArchived = Yes---~LogFileName = "C:\eserv2\log\~TossSpool.log"---~LogFormat = ANSI---~ShowProgressBar = No---~ScanPriority = 25---~TestMemory = No---~AutoSaveSettings = No---~ScanSubDirectories = Yes---~TestBootSectors = No---~PromptOnAction = No---~PromptFloppy = No---~PlaySounds = No---~UseDiskForSwap = Yes---~LogStatistics = Yes---~AutoUpdate = No---~ScanFDD = No---~ScanHDD = Yes---~ScanCD = No---~ScanNet = No---~LimitLog = No---~RestoreAccessDate = No---~WaitAfterScan = No---~ActionInfectedArchive = Move---~ActionInfectedMail = Move---~ActionInfectedContainer = Move---~TestStartup = No---~PromptOnInfectedAction = No---~PromptOnIncurableAction = No---~PromptOnSuspiciousAction = No---~PromptOnInfectedArchiveAction = No---~PromptOnInfectedMailAction = No---~PromptOnInfectedContainerAction = No---~EnableDeleteArchiveAction = No Как и в предыдущем примере, предполагается, что Eserv установлен в каталог C:\eserv2. Исходя из этого предположения, задаётся не только каталог для размещения отчёта (log), но и каталог для перемещения заражённых файлов (mail\infected). Для борьбы с распуханием отчёта можно использовать тот же приём, что и в предыдущем решении. Содержимое файла agents\virusalert.txt осталось прежним:
From: "Mailer-Daemon" ---To: "Administrator" ---Subject: Внимание, вирусы!---Mime-Version: 1.0---Content-Type: text/plain; charset=windows-1251---Content-Transfer-Encoding: 8bit

При анализе почты обнаружены вирусы!

Решение с использованием резидентного сторожа SpIDer Guard версии 4.28 и выше

Это весьма интересное решение предложено сотрудником фирмы ДиалогНаука Борисом Жмуровым и опубликовано на неофициальном справочном сайте, посвящённом пакету Dr.Web — http://support.dials.ru/. Решение достаточно экономное и быстрое, поскольку не требует запуска приложения и загрузки вирусных баз при каждом цикле Тоссера. Однако необходимо установить достаточно специфический режим работы резидентного сторожа, поэтому обустроенную таким образом систему может быть затруднительно использовать для других целей. Итак, настройки сторожа SpIDer Guard должны быть следующие:
#||
||Режим проверки "на лету"|Оптимальный либо Создание и запись||
||Типы файлов|Все файлы||
||Форматы|Упакованные файлы и Почтовые файлы — обязательно, Файлы в архивах — рекомендуется||
||# Для каждого типа вирусов обязательно нужно задать определённое действие, отличное от действия Информировать. Действие Информировать задавать нельзя — оно вызывает диалог с пользователем и недопустимо на постоянно работающем сервере. Самый разумный вариант — выбрать для всех типов объектов (излечимые, неизлечимые и подозрительные) и всех типов архивов (архивы, почтовые файлы и контейнеры) действие Переместить. Для почтовых файлов, которые и являются объектом нашего изучения, действие Переместить является обязательным. Куда будут перемещаться заражённые файлы — решать Вам. Теперь перейдём к настройке Eserv. Структура каталогов:
mail\---mail\spool\---mail\spool\to_check\ Используемые файлы:
agents\tossspool.bat Содержимое файла agents\tossspool.bat:
move mail\spool\to_check\*.* mail\spool\ Простота и эффективность решения заключаются в том, что антивирусный сторож перехватит (и отправит в карантин) заражённые либо подозрительные письма либо непосредственно при первичной записи в подкаталог mail\spool\to_check, либо при перемещении их на дальнейшую обработку в каталог mail\spool. Существенный минус — отсутствие автоматического извещения кого-либо. Впрочем, если связка Eserv и SpIDer Guard работает под управлением Windows NT/2000/XP, можно организовать рассылку извещений средствами самого сторожа. Чтобы антивирусный сторож не вступил в конфликт с Eserv (который никак не ожидает, что используемые им файлы будут вдруг заблокированы, удалены или перемещены) и просто не тратил зря драгоценные ресурсы системы, в список непроверяемых сторожем путей следует занести достаточно большое число рабочих каталогов Eserv: каталог журналов log, каталог временных рабочих файлов temp, каталог кэша HTTP-прокси http__, каталог пользовательских почтовых ящиков mail\in.

Формирование автоматического извещения с помощью агента erobot.exe

Начиная с версии 2.98 в поставку Eserv также входят шаблоны и конфигурационные файлы для агента erobot.exe, предназначенные для работы с интегрированным антивирусом. Их достаточно легко можно приспособить для формирования автоизвещения об обнаружении вируса и в случае проверки внешним антивирусом. Проще всего это реализовать при проверке каждого письма в отдельности (см. первые два решения). В этом случае в командный файл check\testvir.bat или agents\tosscheck.bat перед соответствующей командой move добавляется такая строка:
agents\erobot.exe -c agents\av.cfg -p1 "Name not available" -p2 domain.ru -i "%1" В качестве параметра ключа -p2 указывается Ваш почтовый домен, ключ -p1 предназначен для передачи имени обнаруженного вируса, которое в данной ситуации действительно недоступно. Стандартный вариант конфигурационного файла agents\av.cfg и набор шаблонов обеспечивают отсылку извещений отправителю и получателю, извещение же администратора придётся подключать самостоятельно, путём ручного редактирования конфигурационного файла. Например, так (здесь приводятся только изменённые фрагменты):
: ~RecvVirus S" agents\recv_virus.pat" PAT ;---: ~SentVirus S" agents\sent_virus.pat" PAT ;---!!: ~AdminVirus S" agents\admin_virus.pat" PAT ;!!
(пропущено)
~RecvVirus CR---~SentVirus CR---!!~AdminVirus CR!! Цветом выделены добавленные строки. Шаблон сообщения agents\admin_virus.pat можно сконструировать на основе существующих agents\recv_virus.pat и agents\sent_virus.pat. Я могу предложить такой вариант:
For: postmaster@local---From: "Mailer-Daemon" ---To: "Administrator" ---Date: %DATE-%---Subject: Внимание, вирусы!---Mime-Version: 1.0---Content-Type: text/plain; charset=windows-1251---Content-Transfer-Encoding: 8bit

В поступившем письме (см. mail\infected\%VIRUS-FILE%), отправленном с адреса %FROM% на адрес %TO-%, обнаружен вирус

. Чтобы правильно подставить в извещения имя сохранённого в карантине файла и адрес отправителя, в конфигурационный файл agents\av.cfg потребуется внести ещё пару изменений. Найдите в нём следующие строки (они находятся вовсе не рядом, но обрабатывают один и тот же параметр — имя файла письма):
INfile @ COUNT 11 - 0 MAX SWAP 11 + SWAP---IF COUNT 11 - 0 MAX SWAP 11 + SWAP Упомянутое в них "волшебное" число 11 соответствует использованию интегрированного антивируса и равняется длине неизбежной "приставки" к имени файла mail\spool\ (можете пересчитать буквы). Если проверяемые файлы размещаются в каталоге mail\spool\to_check\, то "приставка" получится подлиннее — 20 символов, каковое число и надлежит проставить по два раза в обеих строчках. А вот если предварительно переместить файлы на проверку в каталог mail\check\, то исправлений не потребуется.

Посмотреть другие категории решений
Вернуться к содержанию
Работает на Eserv/7.0.beta1/Linux/x64 (Feb 6 2022)