У меня есть следующие настройки в моем pf.conf, чтобы отговорить оскорбительных клиентов (у меня есть несколько в день, которые, очевидно, просто очищают контент без разбора и все замедляют):
pass in on $ext_if proto tcp to { $loadbalancer1_int } port $web_ports flags S/SA keep state (max-src-conn 80, max-src-conn-rate 200/5, overload <web_flood> flush)
pass in on $ext_if proto tcp to { $loadbalancer2_int } port $web_ports flags S/SA keep state (max-src-conn 80, max-src-conn-rate 200/5, overload <web_flood> flush)
К сожалению, некоторые из моих клиентов блокируются. Я не знаю, что делают эти клиенты, чтобы инициировать такой сетевой ввод-вывод. Я продолжаю повышать ценности, а они продолжают блокироваться. Разве эти значения (80 подключений и 200 подключений в течение 5 секунд) не соответствуют тому, что обычно считается «оскорбительным»?
«оскорбительный» - это относительное понятие, но с точки зрения доступа к сети установка ограничения скорости на количество подключений в секунду почти наверняка уловит законных пользователей.
Помните, что происходит, когда вы посещаете веб-страницу
index.html
) скачивается.index.html
и выясняет, какие еще ресурсы ему нужны: HTTP keepalive теоретически снижает количество циклов connect (), но некоторые браузеры могут не поддерживать HTTP keepalive (или могут решить не использовать его по какой-либо причине), и в этом случае каждый загружаемый элемент означает, что к серверу открывается другое соединение.
Поэтому одна веб-страница потенциально представляет собой огромное количество подключений - достаточно легко, чтобы отключить ваш брандмауэр, особенно если у вас есть более одного пользователя на IP или ваши пользователи активно просматривают.
У вас есть несколько вариантов вместо того, чтобы блокировать одеяло:
Отметить соответствующие пакеты в pf
и ограничьте их пропускную способность с помощью altq
.
Это не совсем идеально - вы все равно поймаете законных пользователей - но, по крайней мере, они задушены (медленно), а не заблокированы (сломаны).
Использовать mod_evasive, mod_security или похожие
Эти модули больше подходят для Apache, но они более настраиваемы и помогут вам избежать ловли легальных пользователей.