Назад | Перейти на главную страницу

Избыточное время до первого байта

На мой сайт попадает вредоносный бот-трафик, который я пытался пресечь последнюю неделю. Это отображается в моем журнале other_vhost_access.log:

www.mywebsite.com:80 217.96.40.85 - - [01/Sep/2017:12:21:08 +0000] "HEAD http://xxx.xxx.xxx.xxx:80/phpmyadmin/ HTTP/1.1" 302 237 "-" "Mozilla/5.0 Jorgee"

и:

www.mywebsite.com:80 173.208.148.218 - - [31/Aug/2017:09:32:10 +0000] "POST /FlashChat/upload.php HTTP/1.1" 302 523 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

www.mywebsite.com:80 173.208.148.218 - - [31/Aug/2017:09:32:11 +0000] "GET /FlashChat/temp/error.php HTTP/1.1" 302 531 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

Вчера у меня было около 4000 таких запросов пакетами по 100 за 30 секунд. Это неприятно, потому что, когда это происходит, TTFB увеличивается на 21 секунду (каждый раз).

Я включил Apache Server-Status, и, насколько я могу судить, ресурсы не облагаются чрезмерным налогом (ЦП остается ниже 1%, работает максимум 4 из 8 рабочих). Но даже обновление страницы состояния сервера ставится в очередь.

Я использую EC2 t2 micro экземпляр с сертификатами tls. Я перенаправляю трафик с порта 80 на порт 443 с помощью двух директив VirtualHost (одна - на основной сайт, другая - на субдомен, обе находятся в одном файле).

Я пробовал различные предложения в Интернете, но я не уверен, действительно ли они работают, поскольку атаки продолжаются, а затем время ожидания в очереди.

Например, Хорхе запрашивает у меня это в моем .conf:

IfModule mod_ssl.c>
FileETag None
TraceEnable off
<IfModule mod_headers.c>
        Header set X-XSS-Protection "1; mode=block"
</IfModule>

<Location "/">
SetEnvIfNoCase User-Agent "Mozilla/5.0 Jorgee" bad_bot
Deny from env=bad_bot
</Location>

Это первые строки в моем .conf. Прошел сквозь https://www.hurl.it/ который отвечает 403. Я бы подумал, что это прямо отрицает соединение, но это не так.

Я также пытался ограничить количество подключений на IP-адрес с помощью команды iptables:

sudo iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 5 --connlimit-mask 32 -j REJECT --reject-with tcp-reset 

Запуск sudo iptables -L отображает следующее:

ubuntu@ip-172-31-55-158:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
REJECT     tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN #conn src/32 > 5 reject-with tcp-reset

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Тем не менее, я все еще получаю более 100 запросов менее чем за минуту с того же IP-адреса.

Я хочу контролировать эти запросы с помощью apache и iptables. Спасибо.

Оказывается, у меня была конфликтующая запись A (поскольку может быть только один хост для: перенаправления URL-адреса, CName и записи A). После того как я удалил конфликтующую запись, соединение удалось быстро установить, и к сайту одновременно обратилось несколько человек.