Что может ModSecurity?
- Перехватывает, сохраняет и, при необходимости, проверяет загруженные файлы
- Мониторинг безопасности приложений и контроль доступа в реальном времени
- Полное ведение журнала HTTP-трафика
- Непрерывная пассивная оценка безопасности
- Повышение безопасности веб-приложений
- Благодаря способности анализировать XML и применять выражения XPath с возможностью прокси-запросов он может использоваться в качестве маршрутизатора веб-службы XML.
- Защита протокола HTTP
- Поиск по черному списку в реальном времени
- Защита от отказа в обслуживании HTTP
- Общая защита от веб-атак
- Обнаружение и скрытие ошибок
ClamAV, с другой стороны, представляет собой антивирусный движок с открытым исходным кодом для обнаружения троянов, вирусов, вредоносных программ и других возможных угроз.
Как перехватить загрузку вредоносных файлов с помощью ModSecurity и ClamAV
ModSecurity имеет возможность понимать кодировку multipart/form-data, которая используется для загрузки файлов.
Это позволяет ModSecurity извлекать загруженные файлы из запроса и сохранять их в указанном месте файловой системы.
Помимо возможности извлекать загруженные файлы, ModSecurity может также, с интеграцией с другими инструментами, такими как ClamAV, проверять загруженные файлы.
ClamAV предоставляет скрипты, которые можно использовать для сканирования файла на предмет обнаружения троянов, вирусов, вредоносных программ и других вредоносных угроз.
Чтобы иметь возможность перехватывать загрузку вредоносных файлов с помощью ModSecurity и ClamAV, вам необходимо установить эти инструменты.
Перейдите по ссылкам, чтобы установить ModSecurity и ClamAV;
- 🌐 Как собрать NGINX с ModSecurity на Ubuntu сервере
- 🌐 Защита Apache от брутфорса и DDoS с помощью модулей Mod_Security и Mod_evasive
- ModSecurity + Nginx + Ubuntu 16.04
Примечание. Мы запускаем наши тесты в системе 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.
Не стесняйтесь делиться любыми отзывами!