Определимся со списком потенциально опасных вложений:
.ade, .adp, .bat, .chm, .cmd, .com, .cpl, .exe, .hta, .ins, .isp, .jar, .js, .jse, .lib, .lnk, .mde, .msc, .msp, .mst, .pif, .scr, .sct, .shb, .sys, .vb, .vbe, .vbs, .vxd, .wsc, .wsf, .wsh
В том числе, если файлы с такими расширениями находятся в архивах:
.zip, .rar, .7z.
Для фильтрации используется возможность написания собственного файла сигнатур для ClamAV. Формат .cdb файла следующий:
VirusName:ContainerType:ContainerSize:FileNameREGEX:
FileSizeInContainer:FileSizeReal:IsEncrypted:FilePos:
Res1:Res2[:MinFL[:MaxFL]]
Для нашего списка блокировки на примере .exe файлов:
Полный список http://pastebin.com/Bisxq1ezrules_block_exe:CL_TYPE_MAIL:*:\.[Ee][Xx][Ee]$:*:*:*:*:*:*rules_block_Zip_exe:CL_TYPE_ZIP:*:\.[Ee][Xx][Ee]$:*:*:*:*:*:*rules_block_Rar_exe:CL_TYPE_RAR:*:\.[Ee][Xx][Ee]$:*:*:*:*:*:*
Сохраняем наш файл сигнатур в /var/lib/clamav/rules_attachment_block.cdb
Если на почтовом сервере уже используется связка postfix+clamsmtp, то дополнительной настройки более не требуется. Однако, для удобства пользователей и системного администратора было решено написать скрипт, высылающий получателю сообщение о недоставленном письме с вирусом или запрещённым вложением.
В /etc/clamsmtpd.conf добавляем:
VirusAction: /etc/clamav/script.sh
Скрипт /etc/clamav/script.sh (http://pastebin.com/xTZ9tQ1h)
#!/bin/sh
DOMAIN=domain.com
# Notification receiver
ADMIN=postmaster@domain.com
# E-mail sending function
alert_send() {
( cat <<EOF;
To: $RECIPIENT
Reply-To: $ADMIN
Subject: =?UTF-8?B?`echo -n $SUBJECT | base64`?=
Content-Type: multipart/mixed; boundary=simple boundary
This is a multi-part message in MIME format.
--simple boundary
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64
`echo -n $DATA | base64`
--simple boundary
EOF
) | sendmail -t -oi
}
# E-mail to Administrator
SUBJECT="Письмо добавлено в карантин"
DATA="<p><b>Причина блокировки или имя вируса:</b> $VIRUS<br> \
<b>Отправитель:</b> $SENDER<br> \
<b>Получатель:</b> $RECIPIENTS<br><br> \
<b>Перемещено в карантин:</b> $EMAIL<br><br>"
RECIPIENT=$ADMIN
alert_send
# E-mail to User
for RECIPIENT in $RECIPIENTS
do
if [ X`echo $RECIPIENT | egrep @$DOMAIN$` != "X" ];
then
SUBJECT="Письмо добавлено в карантин"
DATA="<p><b>Отправитель:</b> $SENDER<br> \
<b>Получатель:</b> $RECIPIENTS<br><br> \
<b>Перемещено в карантин:</b> $EMAIL<br><br> \
Письмо не доставлено и перемещено в карантин из-за подозрительного вложения.<br> \
Если вы уверены, что это ошибка, свяжитесь с отделом ИТ."
alert_send
fi
done
после создания файла rules_attachment_block.cdb
ОтветитьУдалитьи внесения в него параметров блокировки
после этого clamd не стартует
Starting Clam AntiVirus Daemon: LibClamAV Error: Problem parsing database at line 1
LibClamAV Error: Can't load /var/lib/clamav/rules_attachment_block.cdb: Malformed database
LibClamAV Error: cli_loaddbdir(): error loading database /var/lib/clamav/rules_attachment_block.cdb
ERROR: Malformed database
Ставлю на CR+LF в конце строк в файле.
ОтветитьУдалитьМожно попробовать что-то типа
cat /var/lib/clamav/rules_attachment_block.cdb | tr -d '\r' > /var/lib/clamav/rules_attachment_block.cdb