• Обратная связь: [email protected]

    Наш канал в telegram: https://t.me/ru_sfera

    Группа VK: https://vk.com/rusfera

    Пользователи могут писать на форуме ТОЛЬКО ЧЕРЕЗ 7 ДНЕЙ после регистрации

Fail2ban против DDOS и сканирования сайтов


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 199
Репутация
8 333
Я тут узнал про прикольную тулзу это fail2ban, смысл такой что может банить по определённым событиям в логах, а так-же неплохо защищает от брута админок, SSH и т.д.

По умолчанию после установки он уже защищает SSH, т.е. банит после 6-ти попыток подбора паролей, также есть уже готовые шаблоны в конфиге, можете их посмотреть и включить нужные, сейчас попробуем сделать конфиг сами которые будет блокировать тех-кто слишком-уж долбит запросами сайт, итак:

1)В Дебиан устанавливается очень легко:
Код:
aptitude install fail2ban

2)Во время DDOS в логах апаче /opt/lampp/logs/access_log записывается много таких строк:

XX.119.73.134 — - [23/Jun/2011:14:22:03 +0600] «GET /index.php HTTP/1.1″ 200 -
XX.119.73.134 — - [23/Jun/2011:14:22:03 +0600] «GET /index.php HTTP/1.1″ 200 -
XX.119.73.134 — - [23/Jun/2011:14:22:03 +0600] «GET /index.php HTTP/1.1″ 200 -

В fail2ban, можно банить за определённое время, т.е. например можно сделать что-бы банил тех-кто за х секунд долбил сайт у раз, давайте попробуем это сделать:

-В начале создадим фильтр, создадим конфиг с названием "apache-ddos.conf", в /etc/fail2ban/filter.d с таким содержимым:
Код:
    # Fail2Ban configuration file
    # Author: AmiGator
   
    [Definition]
   
    failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"
   
    # Option:  ignoreregex
    # Notes.:  regex to ignore. If this regex matches, the line is ignored.
    #
    ignoreregex =

-Далее в /etc/fail2ban добовляем в конфиг jail.conf:
Код:
    [apache-ddos]
   
    enabled  = true
    filter   = apache-ddos
    action   = iptables-multiport[name=ddos, port="http,https"]
               sendmail-buffered[name=ddos, lines=5, dest=root]
    logpath  = /var/www/*/log/access.log
    bantime  = 1800
    findtime = 60
    maxretry = 10
   
    ignoreregex = \.(jpg|jpeg|png|gif|js|css)

ГДЕ:

logpath - Путь до нашего лога;
findtime - Время после которого будет бан;
maxretry - число повторений за findtime.

sendmail-buffered[name=ddos, lines=5, dest=root]

Куда присылать отчёт root замените на свой почтовый ящик !

Вроде всё и не забудте перезапустить fail2ban !

service fail2ban restart
 

Антоха

Уважаемый пользователь
Форумчанин
Регистрация
26.12.2012
Сообщения
2 780
Репутация
4 653
Читал ту тему.Лисичку совсем загрызли.Хотя обороняется она красиво.
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 199
Репутация
8 333
Читал ту тему.Лисичку совсем загрызли.Хотя обороняется она красиво.
Важно ещё подобрать findtime, по умолчанию 10-ть минут там и соответственно если сделать например 10 запросов, то многие будут блокироваться, это очень важный момент...
 
Верх Низ