Здравствуйте, есть ли скрипт, который мониторит кол-во подключений к nginx(например, при помощи модуля ngx_http_stub_status_module) и в случае атаки "включает" testcookie(меняет в конфиге "testcookie off" на "testcookie on") ?
Я нашел один, но он не работает :(
скрипт который я нашел#!/bin/sh
NGINX_CONF=/srv/www/nagg.ru/conf/nginx.conf
MAIL="" # true is enable send mail
MAILTO=root
LA_ACTIVATE=17
LA_DEACTIVATE=5
NGINX_CONNECT=1000
########################################################
TMPLOG=/tmp/testcookie_module.tmp
NGINXCONN=`curl -s http://localhost/nginx-status | grep "Active" | awk '{print($3)}'`
LA=`cat /proc/loadavg | awk -F '.' '{print($1)}'`
function e {
echo -en $(date "+%F %T"): "$1"
}
if [ ! -f $TMPLOG ];then echo 0 > $TMPLOG; fi
LASTRESULT=`cat $TMPLOG`
if [ -n "$NGINXCONN" ]; then
if [ $NGINXCONN -gt $NGINX_CONNECT ]; then
ALERT1="1"
fi
fi
if [ -n "$LA" ]; then
if [ $LA -gt $LA_ACTIVATE ]; then
ALERT2="1"
fi
fi
ALERT=$ALERT1$ALERT2
if [ -n "$ALERT" -a $LASTRESULT -eq 0 ]; then
e; printf "Nginx connect: %-4s LA: %-3s | Activate testcookie\n" "$NGINXCONN" "$LA"
sed -i 's/.*##-AUTO-DDOS-LABEL-##/\ttestcookie on; ##-AUTO-DDOS-LABEL-##/g' $NGINX_CONF
/sbin/service nginx reload >/dev/null 2>&1
echo 1 > $TMPLOG
if [ "$MAIL" = "true" ];then
echo "Nginx connect $NGINXCONN, LA $LA. Nginx test-cookie enable" | mail -s "`hostname` DDOS detected. Nginx test-cookie enable" $MAILTO
fi
fi
if [ $LA -le $LA_DEACTIVATE -a $LASTRESULT -eq 1 ]; then
e; printf "Nginx connect: %-4s LA: %-3s | Dectivate testcookie\n" "$NGINXCONN" "$LA"
sed -i 's/.*##-AUTO-DDOS-LABEL-##/\ttestcookie off; ##-AUTO-DDOS-LABEL-##/g' $NGINX_CONF
/sbin/service nginx reload >/dev/null 2>&1
echo 0 > $TMPLOG
fi