Шаблоны Joomla 2.5 здесь: http://joomla25.ru/shablony/

Безопасность веб-сервера. Настраиваем Fail2ban для защиты сервера Apache (Debian 8 Jessie/Debian 9 Stretch/Ubuntu Server 14.04 LTS)

Безопасность веб-сервера. Настраиваем Fail2ban для защиты сервера Apache (Debian 8 Jessie/Debian 9 Stretch/Ubuntu Server 14.04 LTS)

 

Продолжаем рассматривать способы защиты веб-сервера, от потенциальных угроз. На этот раз рассмотрим такой инструмент как Fail2ban.

 

Принцип работы Fail2ban, заключается в анализе лог-файлов и реагировании на определенные события которые определены в настройках Fail2ban.

 

Рассмотрим как установить Fail2ban и настроить на защиту веб-сервера (Apache), развернутом на Debian 9 Stretch.

 

Установка

Установка Fail2ban абсолютно тривиальная, выполняем команду:

apt-get install fail2ban -y
 

 

Конфигурационный файл настройки правил (/etc/fail2ban/jail.conf), разработчики не рекомендуют изменять, поэтому создадим его локальную копию, из которого будут в приоритете считываться правила:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
 

 

 

Настройка правил (jails)

Fail2ban поставляется с набором предопределённых правил (jails), для популярных приложений, таких как Apache, Nginx, Lighttpd, SSH…. Само собой разумеется можно создать и собственные правила для произвольных приложений.

 

Каждое правило для определения атак, полагается на фильтры описанные в /etc/fail2ban/fileter.d, а доступные действия на обнаруженные атаки описаны в /etc/fail2ban/action.d.

 

Задействуем встроенные правила для Apache. Открываем ранее созданный файл конфигурации /etc/fail2ban/jail.local и добавляем в него правила:

# Определение неудачных попыток ввода пароля
[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

# Определение потенциального сканирования для применения эксплойтов и php уязвимостей
[apache-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 6

# Определение попыток переполнения Apache
[apache-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2

# Определение неудачных попыток в поиске домашней директории на сервере
[apache-nohome]
enabled = true
port = http,https
filter = apache-nohome
logpath = /var/log/apache*/*error.log
maxretry = 2
 

 

В указанных правилах, не определяется действие, при срабатывании триггера, поэтому они будут выполнять действие по-умолчанию. Действие по-умолчанию, можно посмотреть в загляните в /etc/fail2ban/jail.conf в секции [DEFAULT], параметр banaction.

 

 

В моем случае, действие по-умолчанию — это iptables-multiport (предопределено в /etc/fail2ban/action.d/iptables-multiport.conf). Это действие блокирует IP адреса используя iptables с модулем мультипорт (multiport module).

Любой заданный параметр в конфигурации правила перепишет соответствующий параметр по-умолчанию, определённый файлами настроек fail2ban. И наоборот, любой отсутствующий параметр будет взят из значения по-умолчанию, определённый в секции [DEFAULT].

 

После включения правил, необходимо перезапустить fail2ban для загрузки правил:

service fail2ban restart
 

 

Проверка и управления статусами и банами Fail2ban

После активации правил (jails), можно просматривать текущее состояние их, а так же управлять банами в них, при помощи fail2ban-client.

 

Чтобы посмотреть список активных правил (jails):

fail2ban-client status

(прим. вывода)
Status
|- Number of jail:      6
`- Jail list:           apache, apache-noscript, apache-modsecurity, apache-overflows, apache-nohome, apache-multiport
 

 

Чтобы посмотреть статус определённого правила (jail):

fail2ban-client status [name-of-jail]

(прим. вывода)
Status for the jail: apache
|- filter
|  |- File list:        /var/www/html/log/error.log
|  |- Currently failed: 0
|  `- Total failed:     6
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     1
 

 

Для ручного блокировки IP-адреса, в определенном правиле (jail), выполним команду:

fail2ban-client set [name-of-jail] banip [ip-address]
 

 

Для разблокировки IP-адреса, в определенном правиле (jail):

fail2ban-client set [name-of-jail] unbanip [ip-address]
 

 

Заключение

Мы рассмотрели как защитить веб-сервер Apache, использую предустановленные правила (jail). Но хочу заметить, что сервис fail2ban очень гибок настройке и поэтому в зависимости от типа ваших веб-сервисов и нужд в защите, можно адаптировать существующие правила (jail) или написать собственные правила (jail) и фильтры логов.