Борьба с DoS атаками на веб-сервер Apache

27 Apr 2015 | Автор: anchous |

Благодаря одному ВКшому кулхацкеру, выложившему мой блог в своем говнопаблике как потенциальную цель для атак, пришлось в последние дни ковыряться с детектированием школотронов, атакующих мне блог, т.ч по мотивам родилась небольшая статья о том, как симаформить эти попытки.

На мое счастье у нищебродов все возможности лишь несколько десятков ботов, т.ч нормальную DDoS атаку мне не устраивали, а то что приходило, отбивалось на уровне веб-сервера. Хотя, скажу откровенно, возникла было шальная мысль поставить фрондэнд прокладочку в виде NGINX.

Для начала видим что наш сайт или веб-сервер тормозит или вообще не открывается, топ или вывод ps забит запущенными демонами httpd. В принципе, если криво настроен апач, то система может вообще залипать, т.к атакующий отожрет всю свободную память, т.ч для того, чтобы избежать это. надо лимитировать память отводящуюся под процессы. Но это уже другой разговор.

Смотрим количество запущенных процессов и сессий на 80м порту
# ps aux | grep httpd | wc -l
103
# netstat -na | grep “:80 ” | wc -l
213

в данном случае, понятно что при моей ничтожной посещалке – это искусственные цифры, т.ч начинаем смотреть кто куда и зачем сидит на 80м порту:
# netstat -na | grep ‘:80 ‘
Также стоит глянуть ситуацию с размерами логов апача для наших сайтов
# watch ‘ls -laS /var/www/httpd-logs/’
по данной команде папка рефрешится каждые 2 секунды, т.ч если размер верхних файлов (чаще всего *.access.log) неумолимо увеличивается, то значит нам однозначно шлют лучи бобра.

После этого можно банально просмотреть лог апача, чтобы понять к чему там эти граждане обращаются:
# tail -1000 /var/www/httpd-logs/odminblog.ru.access.log
hosted-by.blazingfast.io – - [25/Apr/2015:18:58:52 +0200] “POST /xmlrpc.php HTTP/1.0″ 404 8381 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
hosted-by.blazingfast.io – - [25/Apr/2015:18:58:50 +0200] “POST /xmlrpc.php HTTP/1.0″ 404 8381 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
hosted-by.blazingfast.io – - [25/Apr/2015:18:58:53 +0200] “POST /xmlrpc.php HTTP/1.0″ 404 8381 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
hosted-by.blazingfast.io – - [25/Apr/2015:18:58:52 +0200] “POST /xmlrpc.php HTTP/1.0″ 404 8381 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”

Как видим, даже удаленный проблемный модуль xmlrpc.php позволяет генерить к нему 100500 обращений, т.ч закрываем обращение к сайту на уровне файла доступов .htaccess находящегося в корневой директории сайта:
## USER IP BANNING
<Limit GET POST>
order allow,deny
deny from 185.11.144.82 185.11.145.10 hosted-by.blazingfast.io
allow from all
</Limit>

в принципе забанить можно вообще всю подсеть, через
deny from 185.11.144. 185.11.145.

Теоретически можно добавлять в фаервол бананы по 80 порту:
# iptables -A INPUT -p tcp –src 185.11.145.10 –dport 80 -j DROP
практически, надо ваять скрипт чтобы делал это на автомате после 30-40 подключений к порту. Можно также добавить правило от icmp-флуда:
# iptables -A INPUT -p icmp -j DROP –icmp-type 8
хотя лучше подрихтовать /etc/sysctl.conf закрыв некоторые лазейки через ядро.

Если на IP живет большое количество сайтов, то можно подключить к вебсерверу Apache mod_status. Смотрим есть ли он у нас в системе:
# find / -name mod_status.so
/usr/lib64/httpd/modules/mod_status.so
после чего в /etc/httpd/conf/httpd.conf добавляем или раскоментируем следующие строки:
LoadModule status_module modules/mod_status.so
ExtendedStatus On
затем в /etc/httpd/conf.d/ создаем файл httpd-info.conf, следующего содержания:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from MY-IP
</Location>

Перезапускаем апач и коннектимся

http://SERVER_IP/server-status

где выдастся довольно понятная табличка со статистикой по обращениям к сайтам.

VN:F [1.9.21_1169]
Rating: 8.0/10 (4 votes cast)
VN:F [1.9.21_1169]
Rating: +2 (from 2 votes)
Борьба с DoS атаками на веб-сервер Apache, 8.0 out of 10 based on 4 ratings

Теги:

Отзывов: 5 на «Борьба с DoS атаками на веб-сервер Apache»

  1. Автор: tech_4 на 13 May 2015

    Этот самый айпишничек долбит мой сайт уже сутки. Нашёл вас поиском по 185.11.144.82

    [Reply]

    anchous Reply:

    баньте на основе .htaccess, т.к хостеры чаще всего муму за одно место тянут, а с этим прекрасным хохлохостером blazingfast.io вообще бессмысленно общаться, т.к накатал им несколько абуз, на которые они не отрегировали, после чего отписался в твиттере, где они покивали головой на публику “конечно же присылайте логи” и дальше тишина.
    хоть в RIPN пиши, реально…

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: +3 (from 3 votes)
  2. Автор: Иван на 17 Dec 2015

    Хороший ресурс, помогла заметка про hetzner, так держать коллега

    [Reply]

    VA:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.21_1169]
    Rating: 0 (from 0 votes)
  3. Автор: Vasa на 31 Mar 2016

    “Хороший” блог, особенно, если учесть то, что если на этом сайте зажать ф5, то весь форум устанет.

    [Reply]

    anchous Reply:

    как раз для защиты от таких дoлбoeбoв, которые уставая дрoчить пипирку переключаются на ф5, и сделано

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 0 votes)

Ваш отзыв