Інтеграція Антивірусу Касперського з поштовою системою, Браузери та поштові програми, Security & Hack, статті

Денис Колісниченко

У цій статті ми розглянемо два методи установки AVP, точніше KAV (Kaspersky AntiVirus), на вашому поштовому сервері. Перший – це класичний метод установки, який, швидше за все, описаний у вашому керівництві по антивірусу. Другий – це новий метод інтеграції, про його особливості ми поговоримо трохи пізніше. Я не буду розглядати установку, вважаючи, що AVP разом з програмою AVPKeeper вже встановлені на вашому комп’ютері. Тим більше що зазвичай при установці KAV проблем не виникає. Найголовніше – правильно налаштувати антивірус, інакше «програма буде робити те, що ви їй сказали, але не те, що ви хочете». Нагадаю, що налаштування програми KAV знаходяться у файлі / opt / AVP / AvpUnix.ini, а налаштування програми AVPKeeper – у файлі / opt / AVP / kavkeeper / kavkeeper.ini.

Класичний метод

Програма AVPKeeper (kavkeeper) призначена для виявлення і видалення вірусів в поштових повідомленнях. Існують версії цієї програми для поштових систем sendmail, qmail, postfix. Програма sendmail є класичним агентом доставки пошти (MTA – Mail Transfer Agent), тому в статті буде розглянута саме ця програма. Важливим фактором для розгляду sendmail є фактор переваги – Я чомусь волію використовувати sendmail.

Програма AVPKeeper може працювати в двох режимах: локальному та глобальному. У локальному режимі перевіряються тільки вхідні повідомлення, які повинні одержати користувачі нашого поштового сервера. У глобальному режимі перевіряються також і вихідні повідомлення, які наші користувачі відправляють в Internet або іншим користувачам. Для невеликих мереж рекомендується використовувати локальний режим – він працює швидше і стабільніше.

Отже, перейдемо до налаштування. Скопіюйте каталог / opt / AVP / kavkeeper / sendmail-cf каталог / usr / share. Тепер виконайте наступну команду:

m4 kav_loc.mc > /etc/sendmail.cf

Дана команда настроює програму AVPKeeper для роботи в локальному режимі. Якщо вам потрібен глобальний режим, введіть команду:

m4 kav_glb.mc > /etc/sendmail.cf

Обидві ці команди потрібно вводити, перебуваючи в каталозі / usr / share / sendmail-cf / cf. Перед виконанням даних команд скопіюйте куди-небудь старий файл / etc / sendmail.cf, щоб можна було його відновити у разі некоректної інтеграції.

Листинги файлів kav_loc.mc і kav_glb.mc наводити не буду – ви можете переглянути їх в будь-який момент на своїй машині. Якщо вас з яких-небудь причин не влаштовують стандартні файли kav_loc.mc і kav_glb.mc, а інтегрувати KAV з sendmail все-таки потрібно, вкажу, які рядки потрібні для спільної роботи KAV і sendmail (локальний режим):

dnl define(`KAVKEEPER_MAILER’,`/usr/local/bin/kavkeeper’)
dnl define(`KAVKEEPER_CONFIG’,`/etc/kavkeeper.ini’)
dnl define(`KAVKEEPER_LOCAL_MAILER’,`mail.local’)

FEATURE(local_kav)

Природно, що для нормальної роботи потрібно правильно вказати шлях до програми kavkeeper. Швидше за все, у вас програма kavkeeper буде встановлена ​​в каталог / opt / AVP / kavkeeper /. Для роботи глобального режиму використовуються рядки:

dnl define(`KAVKEEPER_CONFIG’,`/etc/kavkeeper.ini’)
define(`KAV_LOCAL_HACK’)
dnl define(`confDEF_USER_ID’,`kavuser:kavuser’)
dnl define(`confRUN_AS_USER’,`kavuser’)
dnl define(`KAVKEEPER_MAILER_FLAGS’, `APhnu9′)

MAILER(kavkeeper)

Функція KAV_LOCAL_HACK необхідна для перевірки локальної пошти. Після цього потрібно перезавантажити sendmail командою:

/etc/init.d/sendmail restart

Тепер залишилося перевірити коректність виконаних вами дій. Дану перевірку потрібно проводити тільки у випадку, якщо ви вибрали глобальний режим роботи програми AVPKeeper! В іншому випадку при перевірці ви отримаєте зовсім не те, чого очікували. Введіть команду:

sendmail -bt

Ви повинні побачити приблизно таке повідомлення:

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>

У відповідь на запрошення (>) введіть набір правил (3,0) і який-небудь адресу. Бажано, щоб адреса дійсно існував. Я використовував адресу evg@localhost.localdomain.

3,0 evg@localhost.localdomain

В результаті на екрані ви повинні побачити примніть це:

> canonify input: evg @ localhost . localdomain
Canonify2 input: evg < @ localhost . localdomain >
Canonify2 returns: evg < @ localhost . localdomain . >
canonify returns: evg < @ localhost . localdomain . >
parse input: evg < @ localhost . localdomain . >
Parse0 input: evg < @ localhost . localdomain . >
Parse0 returns: evg < @ localhost . localdomain . >
ParseLocal input: evg < @ localhost . localdomain . >
ParseLocal returns: $# kavkeeper $@ localhost . localdomain . KAV
$: evg @ localhost . localdomain . KAV
parse returns: $# kavkeeper $@ localhost . localdomain . KAV
$: evg @ localhost . localdomain . KAV

Розберемося, що ж тут відбувається. Програма sendmail перетворює ім’я evg@localhost.localdomain в ім’я evg@localhost.localdomain.KAV і використовує для доставки повідомлення локальний поштовий агент kavkeeper. Тепер подивимося, що ж зробить sendmail з адресою evg@localhost.localdomain.KAV. Не потрібно бути генієм, щоб здогадатися, що зараз відбудеться зворотне перетворення, тобто адресу evg@localhost.localdomain.KAV буде перетворений на адресу evg@localhost.localdomain (або просто egv), що наочно відображено в лістингу:

> canonify input: evg @ localhost . localdomain . KAV
Canonify2 input: evg < @ localhost . localdomain . KAV >
localhost.localdomain.KAV: Name server timeout
Canonify2 returns: evg < @ localhost . localdomain . KAV >
canonify returns: evg < @ localhost . localdomain . KAV >
== Ruleset 3,0 (3) status 75
parse input: evg < @ localhost . localdomain . KAV >
Parse0 input: evg < @ localhost . localdomain . KAV >
Parse0 returns: evg < @ localhost . localdomain . KAV >
ParseLocal input: evg < @ localhost . localdomain . KAV >
ParseLocal returns: evg < @ localhost . localdomain . >
Parse1 input: evg < @ localhost . localdomain . >
Parse1 returns: $# local $: evg
parse returns: $# local $: evg
>

Як бачите страшне ім’я evg@localhost.localdomain.KAV благополучно перетворилося в ім’я локального користувача. Якби ми відправляли пошту не локальному користувачеві, а користувачеві іншої системи (наприклад, користувачеві user@avp.ru), наше повідомлення було б передано агенту доставки. Зазвичай це esmtp.

Я думаю, що теорії цілком достатньо, подивимося, як KAV справляється з покладеним на нього завданням. Для цього проведемо невеличкий експеримент. У якості «піддослідного кролика» нам буде потрібен якийсь вірус, з цим проблем, сподіваюся, не буде. Введіть команду:

uuencode /root/virus.exe virus.exe | mail -s Virus user@localhost

За допомогою даної команди ми відправимо лист нашому локальному користувачеві, що містить вірус. Після відправлення листа програма AVPKeeper перевірить (точніше передасть лист для перевірки програмі kavdaemon, яка повинна завантажуватися автоматично при запуску системи) його і, виявивши вірус, повідомить про це. Перш за все, буде надіслано повідомлення відправнику (користувач root), що в його повідомленні виявлений вірус, потім про це буде повідомлено адміністратор системи (root), після цього буде надіслано третє повідомлення – адресату (користувач evg), про те, що відправник намагався відправити повідомлення з вірусом. Послідовність відправлення повідомлень та їх зміст залежить від настройок програми AVPKeeper. Налаштування програми можна змінити, відредагувавши файл kavkeeper.ini.

На цьому опис класичного методу «сполучення» антивіруса KAV (AVP) з поштовою системою можна вважати завершеним. Саме час перейти до опису зовсім нового методу інтеграції.

Новий метод інтеграції

Новий метод інтеграції полягає в налагодженні двох черг для поштових повідомлень. Одна чергу буде в / var / spool / mqueue, а друга / var/spool/mqueue1. Нагадаю, що зазвичай використовується одна поштова чергу.

Приступимо до налаштування. Зупиніть sendmail і створіть новий підкаталог для пошти в каталозі / var / spool:

mkdir mqueue1
chown root.mail mqueue1

У вже існуючий файл sendmail.mc додаємо рядки:

define(`QUEUE_DIR’,`/var/spool/mqueue1′)
MAILER(kavkeeper2)

Після чого потрібно створити файл sendmail.cf:

m4 sendmail.mc > /etc/sendmail.lis.cf

У файлі конфігурації kavkeeper додайте рядок:

sendmail=/usr/sbin/sendmail -oi -C/etc/sendmail.cf -i -f$f — $u

Запускати sendmail для роботи з двома чергами потрібно так:

/sbin/sendmail -bd -C /etc/sendmail.lis.cf
/sbin/sendmail -q10m -C /etc/sendmail.cf

Для більшої визначеності наведу лістинг mc-файлу:

divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
….
dnl work.
include(`../m4/cf.m4′)
define(`confDEF_USER_ID’,“8:12”)
OSTYPE(`linux’)
undefine(`UUCP_RELAY’)
undefine(`BITNET_RELAY’)
define(`confAUTO_REBUILD’)
define(`confTO_CONNECT’, `1m’)
define(`confTRY_NULL_MX_LIST’,true)
define(`confDONT_PROBE_INTERFACES’,true)
define(`QUEUE_DIR’,`/var/spool/mqueue1′)
define(`KAVKEEPER_MAILER’,`/opt/AVP/kavkeeper/kavkeeper’)
define(`KAVKEEPER_CONFIG’,`/etc/kavkeeper.ini’)

FEATURE(`smrsh’,`/usr/sbin/smrsh’)
FEATURE(mailertable)
FEATURE(`virtusertable’,`hash -o /etc/mail/virtusertable’)
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
MAILER(smtp)
MAILER(kavkeeper2)
FEATURE(`access_db’)
FEATURE(`blacklist_recipients’)


Вам також буде потрібно ще один файл – kavkeeper2.m4. Його лістинг нижче:
PUSHDIVERT(-1)

ifdef(`KAVKEEPER_MAILER_PATH’,,
`ifdef(`KAVKEEPER_MAILER’,
`define(`KAVKEEPER_MAILER_PATH’, KAVKEEPER_MAILER)’,
`define(`KAVKEEPER_MAILER_PATH’, /opt/AVP/kavkeeper/kavkeeper)’)’)


ifdef(`KAVKEEPER_MAILER_FLAGS’,,
`define(`KAVKEEPER_MAILER_FLAGS’, `ASPhnu9′)’)

define(`KAV_CONF_ARG’,
ifdef(`KAVKEEPER_CONFIG’,
`-c KAVKEEPER_CONFIG’,
`’))

ifdef(`KAVKEEPER_MAILER_ARGS’,,
`define(`KAVKEEPER_MAILER_ARGS’, `kavkeeper -s $f -r $u -x $h -m sendmail KAV_CONF_ARG’)’)

POPDIVERT


VERSIONID(`@(#)kavkeeper.m4 1.0 (Kaspersky Lab) 20/03/2000′)

Mkavkeeper, P=KAVKEEPER_MAILER_PATH, F=CONCAT(`DFM’, KAVKEEPER_MAILER_FLAGS), S=0, R=0, T=DNS/RFC822/X-Unix,
ifdef(`KAVKEEPER_MAILER_MAX’, `M=KAVKEEPER_MAILER_MAX, ‘)A=KAVKEEPER_MAILER_ARGS

LOCAL_RULE_0

R$* $#kavkeeper $@$1 $:$1



На цьому опис методу можна вважати завершеним. Який з методів використовувати – вирішувати вам. При виборі методу керуйтеся простим правилом: щоб працював:). Якщо будуть якісь питання, пишіть, постараюся відповісти.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*