ElleSolomina
@ElleSolomina
Ёжик в тумане. Ёлочка. Соломинка. Няшка.

Как защитить Apache от атаки slow post?

Доброго времени суток!

Подскажите как практически защитить Apache от этой напасти. Указанные ниже параметры и модуль не помогают:

<IfModule reqtimeout_module>
	# Allow 10 seconds to receive the request including the headers and 30 seconds for receiving the request body:
	RequestReadTimeout header=10 body=30

	# Allow at least 10 seconds to receive the request body. If the client sends data, increase the timeout by 1 second for every 1000 bytes received, with no upper limit for the timeout (exept for the limit given indirectly by LimitRequestBody):
	RequestReadTimeout body=10,MinRate=1000

	# Allow at least 10 seconds to receive the request including the headers. If the client sends data, increase the timeout by 1 second for every 500 bytes received. But do not allow more than 30 seconds for the request including the headers:
	RequestReadTimeout header=10-30,MinRate=500

	# Usually, a server should have both header and body timeouts configured. If a common configuration is used for http and https virtual hosts, the timeouts should not be set too low:
	RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>


Сервер отвечает, но ооочень медленно. Сервер домашний и используется для личных целей, размещать его не дома не выйдет ибо он должен быть доступен в том числе и при отсутствии интернета. Закрывать доступ извне тоже нельзя.

Доп: сервер работает под Wndows.

Доп2: Пошёл читать советы по безопасности для Apache ибо сегодня совсем припекло, 6 МБ лог с ошибками 408 за пару часов, это при том, что я сидел и вручную банил по IP.

Доп3: Нашёл ошибку у себя в конфигурации!

Оказывается я не закоментил лишнее и даже не обратил на этот факт внимания, поправил:

<IfModule reqtimeout_module>
	# Usually, a server should have both header and body timeouts configured. If a common configuration is used for http and https virtual hosts, the timeouts should not be set too low:
	RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>


Сервер перестал тормозить, проблема, вроде бы, решена. Поскольку атака ещё не кончилась подожду немного, может откопаю чего интересного :)

Доп4: Атака кончилась, на удивление с наступлением полуночи по UTC+4, или я просто все IP побанил к этому времени или ресурсы на той стороне почистили. Одно сказать могу: вот же нечего было делать дебилам, которые с помощью нескольких десятков серверов ддосили задрипанный никому ненужный мелкий веб-сервер. Люди... хотя, скорее, боты.
  • Вопрос задан
  • 2800 просмотров
Решения вопроса 1
ElleSolomina
@ElleSolomina Автор вопроса
Ёжик в тумане. Ёлочка. Соломинка. Няшка.
Коротко: установить модули mod_reqtimeout + mod_qos + mod_security и настроить их, это также, после настройки, поможет избавиться и от других видов атак.

Подробнее тут: https://www.acunetix.com/blog/articles/slow-http-d...

Для Windows бинари актуальных версий и доп. расширений, собранные под разными VS можно взять тут https://www.apachelounge.com/download/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Поставьте перед ним nginx в proxy режиме и всё. У последнего иммунитет (в целом) от такого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы