Лаборатория Maint, Настройка fail2ban для блокирования сканнеров уязвимости сайтов
Maint Laboratory

Лаборатория Maint

 
  Главная     Программы     RPM пакеты     Библиотеки     Документация     Заметки     Услуги     Контакты  

 

Настройка fail2ban для блокирования сканнеров уязвимости сайтов

  О установке Fail2ban, я уже писал в предыдущей статье.  Как я говорил, правила идущие в комплекте с пакетом в Федора, мягко говоря, не отвечает реалиям. Но, поскольку правила создания новых фильтров достаточно просты, у нас развязаты руки работать над своей защитой самостоятельно. Некоторые взломщики сайтов используя общеизвестные инструменты, типа nikto, xspider, acunetix или nessus начинают сканировать на уязвимости ваш сайт. От этого всегда в log-файлах остаются следы  

Далее я привел пример подобного сканирования.

[Tue Aug 28 14:14:58 2012] [error] [client xxx.xxx.xxx.xxx] script '/var/www/index.php' not found or unable to stat
[Tue Aug 28 14:15:18 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/index.html
[Tue Aug 28 14:15:59 2012] [error] [client xxx.xxx.xxx.xxx] script not found or unable to stat: /var/www/index.cgi
[Tue Aug 28 14:16:19 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/index.asp
[Tue Aug 28 14:16:40 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/default.asp
[Tue Aug 28 14:17:00 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/default.htm
[Tue Aug 28 14:17:20 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/index.jhtml
[Tue Aug 28 14:17:40 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/index.asp
[Tue Aug 28 14:18:01 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/index.aspx
[Tue Aug 28 14:18:21 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/login.asp
[Tue Aug 28 14:19:10 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/ganglia
[Tue Aug 28 14:19:11 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/guestbook
[Tue Aug 28 14:19:11 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/help
[Tue Aug 28 14:19:11 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/hola
[Tue Aug 28 14:19:55 2012] [error] [client xxx.xxx.xxx.xxx] script '/var/www/contents.php' not found or unable to stat
[Tue Aug 28 14:19:55 2012] [error] [client xxx.xxx.xxx.xxx] script '/var/www/download.php' not found or unable to stat
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] Invalid URI in request GET /../../../../../../../../../boot.ini HTTP/1.1
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] Invalid URI in request GET /../../../../winnt/repair/sam._ HTTP/1.1
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/..\\\\..\\\\..\\\\..\\\\..\\\\..\\\\..\\\\boot.ini
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/etc
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/etc
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] Invalid URI in request GET ////./../.../boot.ini HTTP/1.1
[Tue Aug 28 14:20:42 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/.cobalt
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/albums
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] script '/var/www/autohtml.php' not found or unable to stat
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/atomicboard
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/current
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/dev
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] Invalid URI in request GET /DomainFiles/*//../../../../../../../../../../etc/passwd HTTP/1.1
[Tue Aug 28 14:20:43 2012] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/docs

Как видно, сканнер пытается найти существующие и не существующие файлы. В этом его ошибка .
Для ликвидации потенциальных угроз, от таких сканнеров предлагаю создать новое правило - scanner
 В файле jail.conf создаем описание нового правила

[apache-scanner]
enabled = true
filter = apache-scanner
action = iptables-multiport[name=scanner, port="http,https"]
            sendmail-buffered[name=scanner, lines=5, dest=root@example.ru]
logpath = /var/log/httpd/*error_log
ignoreip = 127.0.0.1

Расшифрую параметры Теперь приведу мой пример фильтра

# Fail2Ban configuration file
#
# Author: Elohin Igor'
#
# $Revision$

[Definition]

# MaintLab AntiScanner для Fedora 16
  failregex = .* \[error\] \[client \] File does not exist: .*/(admin|db|my|web|qUIlLSd1|cgi-|script|device).*
            .* \[error\] \[client \] script '/\S*(\.php|\.asp|\.exe|\.pl)\S*' not found or unable to stat *$
            .* \[error\] \[client \] (File does not exist|script not found or unable to stat): /\S*(\.php|\.asp|\.exe|\.pl|\.cgi)
            .* \[error\] \[client \] Invalid URI in request GET .*(boot\.ini|sam._|passwd|win\.ini) HTTP\/.*$

Повторюсь, что отлаживать фильтры на вашем log-файле можно командой grep с параметром -E, поставив вместо <HOST>, .* или командой fail2ban-regex.

© Елохин И.Ю, Лаборатория Maint.