Недавно вернулся опять к вопросу ограничения подключений с одного IP к серверу. Решил убрать ограничения с nginx, так как часть картинок не грузилась из за ограничения на кол-во подключений. Убрал лимиты и активировал в апаче mod_qos:
1 |
a2enmod mod_qos |
Далее идем и редактируем конфиг:
1 2 3 4 5 6 7 8 9 10 11 12 |
vim /etc/apache2/mods-enabled/qos.conf <IfModule qos_module> QS_ClientEntries 100000 QS_SrvMinDataRate 150 1200 QS_SrvMaxConn 250 #Максимальное кол-воподключений QS_SrvMaxConnClose 180 QS_SrvMaxConnPerIP 40 #Максимальное кол-во подключений с одного IP QS_SrvMaxConnExcludeIP 2.2.2.2 #указываем IP который нужно исключить из блокировок QS_SrvMaxConnExcludeIP 1.1.1.1 CustomLog /var/log/apache2/qsaudit_log "%h - %{qos-path}n% {qos-query}n" #Логируем срабатывания </IfModule> |
Рестартуем апач, и вуаля – ограничения сразу вступают в работу. Тут есть такой момент – если апач висит на 127.0.0.1 как бекенд нжинкса – то при просомтре подключений будет видно очень много подключений на127.0.0.1
Отслеживать какой домен у меня под нагрузкой в данный момент я делаю так – через lynx с консоли при условии включенного mod_status, если модуль не включен, то включаем его:
1 |
a2enmod mod_status |
После этого делаем все просто:
1 |
lynx -dump http://localhost:8080/server-status|awk -F\ {'print $12'}|grep -v ^$|sort|uniq -c|sort -n |
Видим отсортированные домены по возростанию по кол-ву запросов на домен. и дальше уже понятно какой домен атакуют, или грузят.