🐛 Перехват загрузки вредоносных файлов с помощью ModSecurity и ClamAV

Мануал

Что может ModSecurity?

  • Перехватывает, сохраняет и, при необходимости, проверяет загруженные файлы
  • Мониторинг безопасности приложений и контроль доступа в реальном времени
  • Полное ведение журнала HTTP-трафика
  • Непрерывная пассивная оценка безопасности
  • Повышение безопасности веб-приложений
  • Благодаря способности анализировать XML и применять выражения XPath с возможностью прокси-запросов он может использоваться в качестве маршрутизатора веб-службы XML.
  • Защита протокола HTTP
  • Поиск по черному списку в реальном времени
  • Защита от отказа в обслуживании HTTP
  • Общая защита от веб-атак
  • Обнаружение и скрытие ошибок

ClamAV, с другой стороны, представляет собой антивирусный движок с открытым исходным кодом для обнаружения троянов, вирусов, вредоносных программ и других возможных угроз.

Как перехватить загрузку вредоносных файлов с помощью ModSecurity и ClamAV

ModSecurity имеет возможность понимать кодировку multipart/form-data, которая используется для загрузки файлов.

Это позволяет ModSecurity извлекать загруженные файлы из запроса и сохранять их в указанном месте файловой системы.

Помимо возможности извлекать загруженные файлы, ModSecurity может также, с интеграцией с другими инструментами, такими как ClamAV, проверять загруженные файлы.

ClamAV предоставляет скрипты, которые можно использовать для сканирования файла на предмет обнаружения троянов, вирусов, вредоносных программ и других вредоносных угроз.

Чтобы иметь возможность перехватывать загрузку вредоносных файлов с помощью ModSecurity и ClamAV, вам необходимо установить эти инструменты.

Перейдите по ссылкам, чтобы установить ModSecurity и ClamAV;

Примечание. Мы запускаем наши тесты в системе Ubuntu 20.04.

Как создать скрипт проверки файла ModSecurity-ClamAV

Чтобы включить проверку загрузки файлов с помощью ModSecurity, вам необходимо создать скрипт на perl, который использует антивирусный сканер командной строки ClamAV, clamscan, для извлечения полного пути загружаемого файла и сканирования на наличие вредоносных угроз.

cat > /etc/apache2/modsecurity.d/modsec_clamav.pl << 'EOL'
#!/usr/bin/perl
   
$CLAMSCAN = "/usr/bin/clamscan";
   
if (@ARGV != 1) {
    print "Usage: modsec_clamav.pl <filename>\n";
    exit;
}
   
my ($FILE) = @ARGV;
   
$cmd = "$CLAMSCAN --stdout --disable-summary $FILE";
$input = `$cmd`;
$input =~ m/^(.+)/;
$error_message = $1;
   
$output = "0 Unable to parse clamscan output";
   
if ($error_message =~ m/: Empty file\.$/) {
    $output = "1 empty file";
}
elsif ($error_message =~ m/: (.+) ERROR$/) {
    $output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: (.+) FOUND$/) {
    $output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: OK$/) {
    $output = "1 clamscan: OK";
}
   
print "$output\n";
EOL

Сделайте скрипт исполняемым:

chmod +x /etc/apache2/modsecurity.d/modsec_clamav.pl

Создадим правило ModSecurity для перехвата загрузки файла

Затем вам нужно создать собственное правило ModSecurity для перехвата загрузки файлов.

В нашей настройке мы указали расположение файла правил ModSecurity в файле конфигурации нашего сайта Apache как /etc/apache2/modsecurity.d/modsec_rules.conf.

less /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
    ServerAdmin webmaster@kifarunix-demo.com
    ServerName wp.kifarunix-demo.com
    DocumentRoot /var/www/html/wp.kifarunix-demo.com
        modsecurity on
        modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf  
    <Directory /var/www/html/wp.kifarunix-demo.com>
       AllowOverride All
    </Directory>

    ErrorLog /var/log/apache2/wp.error.log
    CustomLog /var/log/apache2/wp.access.log combined
</VirtualHost>

Ниже представлено содержимое файла правил ModSecurity;

less /etc/apache2/modsecurity.d/modsec_rules.conf
Include "/etc/apache2/modsecurity.d/modsecurity.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"

Поэтому создайте настраиваемое правило сканера/проверки файлов для ModSecurity.

Правила ModSecurity определяются с помощью директивы SecRule.

Синтаксис правила:

SecRule VARIABLES "OPERATOR" "TRANSFORMATIONS,ACTIONS"

В этой настройке мы называем наш файл пользовательских правил как /etc/apache2/modsecurity.d/modsec_clamav.conf.

Ниже представлена конфигурация правила;

cat /etc/apache2/modsecurity.d/modsec_clamav.conf
SecRule FILES_TMPNAMES "@inspectFile /etc/apache2/modsecurity.d/modsec_clamav.pl" \
  "id:'400001', \
  phase:2, \
  t:none, \
  deny, \
  log, \
  msg:'Infected File upload detected', \
  tag:'MALICIOUS_SOFTWARE/VIRUS'"

Затем включите правило в файл правил.

echo 'Include "/etc/apache2/modsecurity.d/modsec_clamav.conf"' >> /etc/apache2/modsecurity.d/modsec_rules.conf

Теперь ваш файл правил выглядит так:

less /etc/apache2/modsecurity.d/modsec_rules.conf
Include "/etc/apache2/modsecurity.d/modsecurity.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"
Include "/etc/apache2/modsecurity.d/modsec_clamav.conf"

Проверьте синтаксис конфигурации Apache;

apachectl configtest

Если вы получили вывод Syntax OK, перейдите к перезапуску/перезагрузке Apache;

systemctl restart apache2

Тестирование перехвата загрузки вредоносных файлов с помощью ModSecurity и ClamAV

Если у вас есть тестовая среда, вы можете скачать тестовые вредоносные файлы с Eicar и попробовать загрузить их на свой сайт.

Во время загрузки обязательно отслеживайте файлы логов ошибок Apache и логи аудита ModSecurity.

Например, можно попытаться загрузить eicar_com.zip на свой сайт:

И логи аудита ModSecurity;

tail -f /var/log/modsec_audit.log
---i6mkrLhp---H--
ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `InspectFile' with parameter `/etc/apache2/modsecurity.d/modsec_clamav.pl' against variable `FILES_TMPNAMES:' (Value: `' ) [file "/etc/apache2/modsecurity.d/modsec_clamav.conf"] [line "1"] [id "400001"] [rev ""] [msg "Infected File upload detected"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [tag "MALICIOUS_SOFTWARE/VIRUS"] [hostname "wp.kifarunix-demo.com"] [uri "/wp-admin/update.php"] [unique_id "161558337389.815242"] [ref "v1369,0"]

---i6mkrLhp---I--

---i6mkrLhp---J--

---i6mkrLhp---Z--

Мы рассказали как перехватить загрузку вредоносных файлов с помощью ModSecurity и ClamAV.

Не стесняйтесь делиться любыми отзывами!

Добавить комментарий