Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Mail Gateway
    PMG 6.1 как добавить антивирус?

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    PMG 6.1 как добавить антивирус?, Proxmox Mail Gateway
     
    tanyo
    Guest
    #1
    0
    13.03.2020 14:50:00
    Здравствуйте! Прежде всего, хочу поблагодарить команду Proxmox за отличные продукты, которые они предоставляют общественности. Мне понадобился почтовый шлюз для блокировки входящего спама и вирусов, поэтому после некоторого исследования я установил PMG 6.1, и всё работает отлично.

    Сейчас я ищу второй антивирус, и Avast — не вариант. Одно из решений — антивирус компании Dr.Web. Мне удалось связаться с ними, и они предоставили пробную версию их продукта «Dr.Web for UNIX Mail Servers». Этот продукт разработан для работы с MTA (Postfix, Exim и т.д.). Интересная особенность — эмуляция Clamvd. Поэтому я ищу, как интегрировать его с PMG. Однако, поскольку я не слишком продвинут в Postfix, разобраться не получается.

    Согласно документации Dr.Web, мы можем:  
    1. «Интегрировать Dr.Web for UNIX Mail Servers с почтовым сервером, который вы используете, подключив его в качестве внешнего фильтра с помощью следующих расширений: Milter, Spamd или Rspam... (эти интерфейсы обычно применяются фильтром SpamAssassin)»  
    2. «Если вы хотите использовать Dr.Web for UNIX Mail Servers в режиме SMTP-прокси, сначала установите и настройте почтовый сервер (если он ещё не установлен), который выполняет функции транзитного MTA...»  
    3. «...использовать почтовый сервер, способный взаимодействовать с Dr.Web for UNIX Mail Servers через протокол ClamAV...»

    Поскольку PMG использует модифицированную конфигурацию SpamAssassin, возможно ли добавить Dr.Web как второй антивирус/антиспам? Какой из трёх методов будет наиболее подходящим для интеграции?

    С наилучшими пожеланиями!
     
     
     
    proxminent
    Guest
    #2
    0
    16.06.2020 09:17:00
    Посмотрите https://forum.proxmox.com/threads/how-to-integrate-eset-antivirus-with-pmg.49788/post-238553 — уже 2 года работает с Eset File Security для Linux.

    Итак, пример кода для /usr/local/bin/pmg-custom-check:

    ```
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use Data::Dumper qw(Dumper);
    use File::Copy "cp";

    my $av_name    = "Eset";
    my $av_version = "0.0";

    ## V4.X
    my $esets_bin = "/opt/eset/esets/sbin/esets_scan";
    my $esets_arg = "--clean-mode=none";

    ## V7.X
    my $efs_bin  = "/opt/eset/efs/sbin/cls/cls";
    my $efs_arg  = "--clean-mode=none";
    my $efs_bdir = "--base-dir=/var/opt/eset/efs/lib";

    ## логгер в /var/log/syslog
    my $logger_bin = "/usr/bin/logger";
    my $logger_arg = "-i";

    ## отладочные файлы в ...
    my $debug     = 0;
    my $debug_dir = "/tmp/debug/";

    ## блокировать архивы с паролем или поврежденные?
    my $strict = 0;
    mkdir $debug_dir;
    my $cmd;

    open( my $logger, "| $logger_bin $logger_arg " );

    $av_version = "4.X" if ( -e $esets_bin );
    $av_version = "7.X" if ( -e $efs_bin );

    my $apiversion = shift || die 'APIVERSION required.';
    my $filename   = shift || die 'QUEUEFILENAME required.';

    die "Wrong AV Version."   if ( $av_version eq "0.0" );
    die "Wrong API Version."  if ( $apiversion ne "v1" );
    die "FILENAME not found." if ( !-e $filename );

    if ( $av_version eq "4.X" ) {
       open( $cmd, '-|', $esets_bin, $esets_arg, $filename ) || die "can't exec esets scan: $! : ERROR";
    }
    if ( $av_version eq "7.X" ) {
       open( $cmd, '-|', $efs_bin, $efs_bdir, $efs_arg, $filename ) || die "can't exec esets scan: $! : ERROR";
    }

    my $vinfo = "OK";

    while ( defined( my $line = <$cmd> ) ) {
       chomp $line;

       print $logger "DEBUG:" . $line, "\n" if ( $debug > 0 );
       $line =~ s/result=/threat=/g if ( $av_version eq "7.X" );
       
       if ( $line =~ m/^name=\"(.*)\".*threat=\"(.*)\".*action=\"(.*)\".*info=\"(.*)\"$/ ) {
           next if ( ( $strict < 1 ) && ( $4 =~ m/password-protected/g || $4 =~ m/archive damaged/g ) );

           $vinfo = "VIRUS: " . $2 . " " . $4 . "($av_name)";
           next if $2;

           print $logger "DEBUG: " . $vinfo, "\n" if ( $debug > 0 );
       }
    }

    cp( $filename, $debug_dir )
     if ( $vinfo ne "OK" && not -e $debug_dir . $filename && $debug > 1 );

    print join( "\n", "v1", $vinfo );
    print $logger join( " ", "pmg-custom-check", $vinfo, $filename ) . "\n" if ( $debug > 0 );
    close($logger);
    exit 0;
    ```

    Не забудьте дать права на выполнение:

    chmod +x /usr/local/bin/pmg-custom-check

    и добавить в /etc/pmg/pmg.conf в секцию:

    admin custom_check 1

    Удачи!
     
     
     
    heutger
    Guest
    #3
    0
    21.06.2020 21:33:00
    Возможно, стоит написать на рассылку разработчиков, чтобы напрямую интегрироваться с PMG.
     
     
     
    EvilBox
    Guest
    #4
    0
    03.08.2020 15:06:00
    Дорогой proxminent! Пожалуйста, подскажите, как отключить правила: 1. Virus Info: следующий том архива не найден (Eset) 2. Virus Info: ошибка — файл с паролем (Eset) 3. Virus Info: ошибка при чтении архива (Eset) Нужно ли для этого сделать какое-то исключение? Спасибо!
     
     
     
    proxminent
    Guest
    #5
    0
    03.08.2020 17:45:00
    Привет! На данный момент обработка исключений реализована очень примитивно (следующая строчка: if ( ( $strict < 1 ) && ( $4 =~ m/password-protected/g || $4 =~ m/archive damaged/g ) ); ). Возможно, на следующей неделе выложу новую версию с полным набором исключений. Пока!
     
     
     
    EvilBox
    Guest
    #6
    0
    03.08.2020 21:09:00
    Спасибо за ответ! Правильно ли я понял, что чтобы отключить две проверки (архив с паролем и повреждённый архив), нужно выставить $strict в 1? Пример: ## блокируем защищённые паролем / повреждённые архивы? my $strict = 1; mkdir $debug_dir; my $cmd; /// Я понял! $strict = 1 — файлы с защитой и повреждённые архивы блокируются $strict = 0 — файлы с защитой и повреждённые архивы разрешаются
     
     
     
    EvilBox
    Guest
    #7
    0
    11.08.2020 22:32:00
    Окей, я нашёл причину, почему выражения не сработали. Вот моё решение с дополнениями:

    Perl:
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    use Data::Dumper qw(Dumper);
    use File::Copy "cp";

    my $av_name    = "Eset";
    my $av_version = "0.0";

    ## V4.X
    my $esets_bin = "/opt/eset/esets/sbin/esets_scan";
    my $esets_arg = "--clean-mode=none";

    ## V7.X
    my $efs_bin  = "/opt/eset/efs/sbin/cls/cls";
    my $efs_arg  = "--clean-mode=none";
    my $efs_bdir = "--base-dir=/var/opt/eset/efs/lib";

    ## логгер в /var/log/syslog
    my $logger_bin = "/usr/bin/logger";
    my $logger_arg = "-i";

    ## отладочные файлы здесь...
    my $debug     = 0;
    my $debug_dir = "/tmp/debug/";

    ## блокировать архивы с паролем или повреждённые?
    my $strict = 0;
    mkdir $debug_dir;
    my $cmd;

    open( my $logger, "| $logger_bin $logger_arg " );

    $av_version = "4.X" if ( -e $esets_bin );
    $av_version = "7.X" if ( -e $efs_bin );

    my $apiversion = shift || die 'APIVERSION required.';
    my $filename   = shift || die 'QUEUEFILENAME required.';

    die "Wrong AV Version."   if ( $av_version eq "0.0" );
    die "Wrong API Version."  if ( $apiversion ne "v1" );
    die "FILENAME not found." if ( !-e $filename );

    if ( $av_version eq "4.X" ) { open( $cmd, '-|', $esets_bin, $esets_arg, $filename ) || die "can't exec esets scan: $! : ERROR"; }
    if ( $av_version eq "7.X" ) { open( $cmd, '-|', $efs_bin, $efs_bdir, $efs_arg, $filename ) || die "can't exec esets scan: $! : ERROR"; }

    my $vinfo = "OK";

    while ( defined( my $line = <$cmd> ) ) {
       chomp $line;

       print $logger "DEBUG:" . $line, "\n" if ( $debug > 0 );
       $line =~ s/result=/threat=/g if ( $av_version eq "7.X" );

       if ( $line =~ m/^name=\"(.*)\".*threat=\"(.*)\".*action=\"(.*)\".*info=\"(.*)\"$/ ) {
           next if ( ( $strict < 1 ) && ( $4 =~ m/password-protected/ || $4 =~ m/archive damaged/ || $4 =~ m/archive volume not found/ || $4 =~ m/error reading archive/ ) );
           $vinfo = "ВИРУС: " . $2 . " " . $4 . "($av_name)";
           next if $2;

           print $logger "DEBUG: " . $vinfo, "\n" if ( $debug > 0 );
       }
    }

    cp( $filename, $debug_dir )
     if ( $vinfo ne "OK" && not -e $debug_dir . $filename && $debug > 1 );

    print join( "\n", "v1", $vinfo );
    print $logger join( " ", "pmg-custom-check", $vinfo, $filename ) . "\n" if ( $debug > 0 );
    close($logger);
    exit 0;
     
     
     
    heutger
    Guest
    #8
    0
    28.08.2020 15:39:00
    Могли бы вы предложить свои корректировки для а) если вы также предоставите свою лицензию/право использования Proxmox для интеграции с будущими версиями и/или б) собственные реализации. Я считаю, что Dr.Web — единственная действительно стоящая альтернатива Avast, потому что у других либо нет нормальных цен, либо «демонизированный» режим, либо нет поддержки в будущем (продукт по сути неофициально поддерживается/устарел). Именно поэтому я пропустил Eset, а также F-Secure и Gdata.
     
     
     
    H.c.K
    Guest
    #9
    0
    30.08.2020 14:02:00
    Привет, @proxminent, @heutger! Я использую pmg 6.1. Установил efs 7, последнюю версию 7.2.463.0, но не могу его запустить. Вот статус efs:

    root@pmg4:/# systemctl status efs
    ● efs.service - ESET File Security
      Загружен: загружен (/lib/systemd/system/efs.service; включён; поставщик по умолчанию: включён)
      Активен: активен (работает) с Вс 2020-08-30 14:54:06 +03; 6 мин назад
      Процесс: 17745 ExecStartPre=/opt/eset/efs/lib/install_scripts/check_start.sh (код=завершён, статус=0/УСПЕХ)
      Процесс: 17773 ExecStartPost=/bin/sleep 2 (код=завершён, статус=0/УСПЕХ)
      Основной PID: 17772 (startd)
      Задачи: 30 (лимит: 9482)
      Память: 224.9M
      CGroup: /system.slice/efs.service
              ├─17772 /opt/eset/efs/sbin/startd
              ├─17774 /opt/eset/efs/lib/logd
              ├─17775 /opt/eset/efs/lib/scand
              ├─17776 /opt/eset/efs/lib/sysinfod
              ├─17777 /opt/eset/efs/lib/updated
              ├─17778 /opt/eset/efs/lib/licensed
              ├─17779 /opt/eset/efs/lib/utild
              ├─17780 /opt/eset/efs/lib/confd
              └─17787 /opt/eset/efs/lib/oaeventd

    30 авг 14:54:04 pmg4 systemd[1]: Запуск ESET File Security...
    30 авг 14:54:05 pmg4 oaeventd[17787]: ESET File Security Ошибка: Не удалось открыть файл /lib/modules/5.3.10-1-pve/eset/efs/eset_rtp.ko: Нет такого файла или каталога
    30 авг 14:54:05 pmg4 oaeventd[17787]: ESET File Security Ошибка: Инициализация системного обработчика для он-лайн сканирования не удалась. Пожалуйста, обновите ОС и перезагрузите компьютер, затем проверьте статус службы.
    30 авг 14:54:06 pmg4 systemd[1]: ESET File Security запущен.

    https://help.eset.com/efs/7/en-US/r...rt.html?realtime-protection-cannot-start.html

    Перезагружал и обновлял сервер, но запустить всё равно не получается. У кого-нибудь была похожая ситуация?
     
     
     
    proxminent
    Guest
    #10
    0
    01.09.2020 15:00:00
    Привет! 1) обновить pmg 2) перезагрузить 3) apt-get install pve-headers-`uname -r` 4) apt-get install libc6-i386 5) установить или переустановить esets 6) systemctl restart efs 7) готово
     
     
     
    H.c.K
    Guest
    #11
    0
    01.09.2020 15:03:00
    Привет, я обновился, но не смог найти пакет.. root@pmg4:~# apt-get install kernel-uek-devel-`uname -r` Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово E: Не удалось найти пакет kernel-uek-devel-5.3.10-1-pve E: Не найден ни один пакет, подходящий под шаблон 'kernel-uek-devel-5.3.10-1-pve' E: Не найден ни один пакет, соответствующий регулярному выражению 'kernel-uek-devel-5.3.10-1-pve' root@pmg4:~#
     
     
     
    koby
    Guest
    #12
    0
    14.12.2020 18:27:00
    Я использовал твой скрипт, но как мне узнать, что он действительно работает? Я не могу найти никаких логов. Также хотел бы, чтобы в теле письма был какой-то знак или отметка, это как-то возможно сделать? Спасибо!
     
     
     
    proxminent
    Guest
    #13
    0
    14.12.2020 19:44:00
    измените my $debug = 0; на my $debug = 1; посмотрите в /var/log/syslog и отправьте себе письмо с EICAR Testvirus. Удачи!
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры