Exim - фильтрация писем с вложениями в zip

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
crush13
проходил мимо
Сообщения: 8
Зарегистрирован: 2015-09-17 15:40:30

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение crush13 » 2015-09-17 15:57:25

Доброго всем времени суток, накидал вот такой вот ACL (просмотрел много сабжа на разных ресурсах):

Код: Выделить всё

acl_smtp_mime = acl_check_mime

acl_check_mime:

deny    message                 = We do not accept attachments like: $mime_filename
        condition               = ${if match{$mime_filename}{\N\.(bat|js|pif|cd|com|exe|lnk|reg|vbs|jse|msi|ocx|dll|sys|cab)$\N}}

deny    message                 = Probably this message contains dangerous file in ZIP-attachment ($mime_filename).
        condition               = ${if match{$mime_filename}{\N(?i)\.zip$\N}}
        decode                  = /var/exim/scan/zip/$mime_filename
        condition               = ${if match{${run{/usr/bin/unzip -l $mime_decoded_filename}}}{\N(?i)\.(bat|js|pif|cd|com|exe|lnk|reg|vbs|jse|msi|ocx|dll|sys|cab)\n\N}}

deny    message                 = Probably this message contains dangerous file in RAR-attachment ($mime_filename).
        condition               = ${if match{$mime_filename}{\N(?i)\.rar$\N}}
        decode                  = /var/exim/scan/rar/$mime_filename
        condition               = ${if match{${run{/usr/bin/unrar l $mime_decoded_filename}}}{\N(?i)\.(bat|js|pif|cd|com|exe|lnk|reg|vbs|jse|msi|ocx|dll|sys|cab)$\N}}

accept
Но к сожалению он работает только частично, первая из трёх частей - отбрасывает письма с исполняемыми вложениями, но пропускает любые письма с вложениями zip->exe. Может у кого-то есть мысли из-за чего может не работать оставшаяся часть acl?

Код: Выделить всё

whereis unzip
unzip: /usr/bin/unzip /usr/share/man/man1/unzip.1.gz
whereis unrar
unrar: /usr/bin/unrar /usr/share/man/man1/unrar.1.gz
exim -bV
Exim version 4.72 #7 built 21-Nov-2014 18:27:12

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

None
проходил мимо
Сообщения: 6
Зарегистрирован: 2013-05-07 11:32:57

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение None » 2015-09-18 9:32:57

видел на просторах сети решение с 7zip, более универсальное на мой взгляд

как решить вопрос с архивами вложенными в архив zip->zip->zip->samiy_noviy_dogovor.doc.exe?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение Alex Keda » 2015-09-18 10:17:40

По рукам юзерам стучать....
Убей их всех! Бог потом рассортирует...

lintech
рядовой
Сообщения: 19
Зарегистрирован: 2010-11-19 17:24:23

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение lintech » 2015-10-06 23:03:43

Кусок моего конфига:

Код: Выделить всё

#free_arqexec contain emails of permited sender. Example: *@gmail.com
drop
    !senders     = 
    demime         = zip:rar:arj:tar:tgz:gz:bz2:7z
    set acl_m9     = ${run{/var/spool/exim/logs/checkarc.sh ${lc:$found_extension} $message_exim_id}}
    message        = This message contains dangerous file(s) in .${uc:$found_extension} file.
    condition      = ${if eq {$runrc}{0}{false}{true}}
Сам скрипт checkarc.sh:

Код: Выделить всё

#!/bin/sh
# See http://wiki.exim.org/ExiscanFilenameBlocking

zipinfo=/usr/local/bin/zipinfo
unzip=/usr/local/bin/unzip
rar=/usr/local/bin/unrar
7z=/usr/local/bin/7z

# Проверяем наличие приложений
for application in ${zipinfo} ${unzip} ${rar} ${7z}
do
    if [ ! -s ${application} ]; then
        echo "Приложение \`\`${application}'' не найдено!"
        exit
    fi
done

# Блокируемые файлы в архивах
EXTENS='(\.cmd$|\.com$|\.exe$|\.bat$|\.btm$|\.cpl$|\.dll$|\.exe$|\.lnk$|\.msi$|\.pif$|\.prf$|\.reg$|\.scr$|\.vb$|\.vbs$|\.url$|\.pl$|\.bas$|\.js$|\.java$|\.s
hs$|\.chm$|\.hlp$|\.zip$|\.rar$|\.arj$|\.7z$)'

# Архивы
COMPAC='(zip|rar|7z)'

# переход в рабочую директорию.
if [ ! -z "$2" ]; then
    if [ -d /var/spool/exim/scan/$2 ]; then
        cd /var/spool/exim/scan/$2
    else
        exit 1
    fi
fi


# Проверка архивов.
for i in `ls | egrep -i ".${COMPAC}$"`; do
   EXTFILE="`basename $i | sed -e 's/.*\.//' | tr [A-Z] [a-z]`"
   case "${EXTFILE}" in
     zip)
        CMD_TST="${unzip} -t $i"
        CMD_VRF="${zipinfo} -1 $i"
        ;;
     rar)
        CMD_TST="${rar} t -p- $i"
        CMD_VRF="${rar} vb -p- $i"
        ;;
     7z)
        CMD_TST="${7z} t $i"
        CMD_VRF="${7z} l $i"
        ;;
     *)
        echo -n '* Extension of File <'$i'> is unknown archive compact!\n'
   esac

    ARQS="`${CMD_VRF} 2> /dev/null | gawk '{ print $1 }' | egrep -i "${EXTENS}$"`"
    if [ ! -z "$ARQS" ]; then
        echo -n '* File(s) in <'$i'>: '$ARQS'\n'
        FOUND=1
    fi
done

if [ ! -z "${FOUND}" ]; then
    exit 1
else
    exit 0
fi


crush13
проходил мимо
Сообщения: 8
Зарегистрирован: 2015-09-17 15:40:30

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение crush13 » 2015-10-09 9:25:43

Вот это c 7zip заработало:

Код: Выделить всё

deny     message           = Probably this message contains dangerous file in attachment
         condition         = ${if match{$mime_filename}{\N(?i)\.(zip|rar|7z)$\N}}
         decode            = default
         condition         = ${if match{${run{/usr/bin/7z l $mime_decoded_filename}}}{\N(?i)\.(exe|com|vbs|bat|pif|scr|hta|js|cmd|chm|cpl|jsp|reg|vbe|lnk|dll|sys)\n\N}}
         log_message       = forbidden attachment: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients

crush13
проходил мимо
Сообщения: 8
Зарегистрирован: 2015-09-17 15:40:30

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение crush13 » 2015-10-16 8:49:39

Ещё добавлю от себя, столкнулся с тем, что rar архивы с вложениями пропускались до адресатов. При попытке просмотреть архив 7z выяснилось, что установлена старая версия, которая не понимала rar. После сборки новой версии p7zip, фильтрация заработала "как необходимо".

qwertykma
мл. сержант
Сообщения: 93
Зарегистрирован: 2009-06-19 13:14:04
Откуда: почти С-Пб

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение qwertykma » 2015-10-23 13:12:09

Я сделал через clam.
в /var/db/clamav/
создать два файла один с расширением .zmd для zip-ов, другое .rmd для rar в файле:
Block.EXE-rar:0:\.exe$:*:*:*:*:*:*
Block.BAT-rar:0:\.bat$:*:*:*:*:*:*
Block.CMD-rar:0:\.cmd$:*:*:*:*:*:*
Block.COM-rar:0:\.com$:*:*:*:*:*:*
Block.LNK-rar:0:\.lnk$:*:*:*:*:*:*
Block.vbs-rar:0:\.vbs$:*:*:*:*:*:*
Block.JS-rar:0:\.JS$:*:*:*:*:*:*
Block.EXE-c-rar:1:\.exe$:*:*:*:*:*:*
Block.BAT-c-rar:1:\.bat$:*:*:*:*:*:*
Block.CMD-c-rar:1:\.cmd$:*:*:*:*:*:*
Block.COM-c-rar:1:\.com$:*:*:*:*:*:*
Block.LNK-c-rar:1:\.lnk$:*:*:*:*:*:*
Block.VBS-c-rar:1:\.vbs$:*:*:*:*:*:*
Block.JS-c-rar:1:\.JS$:*:*:*:*:*:*
0\1 - энкриптед флаг

klin2
рядовой
Сообщения: 12
Зарегистрирован: 2007-02-09 20:12:25
Откуда: Germany

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение klin2 » 2016-03-05 0:33:02

None писал(а):видел на просторах сети решение с 7zip, более универсальное на мой взгляд
как решить вопрос с архивами вложенными в архив zip->zip->zip->samiy_noviy_dogovor.doc.exe?
Применяю для этого deepfind вместо unzip в checkarc.sh:
(входит в линукс пакет Strigi)

Код: Выделить всё

    deepfind=/usr/bin/deepfind
....

Код: Выделить всё

       case "${EXTFILE}" in
         zip)
            CMD_VRF="${deepfind}"
            ;;
http://noone.org/blog/English/Computer/ ... rep.futile

crush13
проходил мимо
Сообщения: 8
Зарегистрирован: 2015-09-17 15:40:30

Exim - фильтрация писем с вложениями в zip

Непрочитанное сообщение crush13 » 2016-08-25 11:52:55

Было давно, но всё же отвечу. Не нравятся мне вызовы сторонних скриптов из конф.файлов, которые проделывают тоже самое. Много строк ненужного кода. Но это как говорится, на вкус и цвет.