Страница 1 из 1

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

Добавлено: 2015-09-17 15:57:25
crush13
Доброго всем времени суток, накидал вот такой вот 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

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

Добавлено: 2015-09-18 9:32:57
None
видел на просторах сети решение с 7zip, более универсальное на мой взгляд

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

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

Добавлено: 2015-09-18 10:17:40
Alex Keda
По рукам юзерам стучать....

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

Добавлено: 2015-10-06 23:03:43
lintech
Кусок моего конфига:

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

#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


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

Добавлено: 2015-10-09 9:25:43
crush13
Вот это 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

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

Добавлено: 2015-10-16 8:49:39
crush13
Ещё добавлю от себя, столкнулся с тем, что rar архивы с вложениями пропускались до адресатов. При попытке просмотреть архив 7z выяснилось, что установлена старая версия, которая не понимала rar. После сборки новой версии p7zip, фильтрация заработала "как необходимо".

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

Добавлено: 2015-10-23 13:12:09
qwertykma
Я сделал через 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 - энкриптед флаг

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

Добавлено: 2016-03-05 0:33:02
klin2
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

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

Добавлено: 2016-08-25 11:52:55
crush13
Было давно, но всё же отвечу. Не нравятся мне вызовы сторонних скриптов из конф.файлов, которые проделывают тоже самое. Много строк ненужного кода. Но это как говорится, на вкус и цвет.