nginx 로그 불법 ip 처리
#!/bin/bash
echo "init..."
now=$(date +%T)
ago=$(date +%T -d '10 min ago')
tail -200000 /home/work/opbin/nginx/logs/access.log |awk -F "[T+\",]" '{if($2>="'${ago}'" && $2<="'$now'") ++S[$4]} END {for (i in S) print i,S[i]}'|sort -k2rn|grep -Ev '123.125.125.146|106.120.151.93|183.81.181.178|101.201.142.123|36.110.170.250|101.201.142.242|123.57.52.20|106.2.203.188|127.0.0.1|121.42.0|123.57.173.121|183.81.181.178|101.96.129.66' |while read line
do
echo "start...."
ip=`echo $line|awk '{print $1}'`
count=`echo $line|awk '{print $2}'`
if [ $count -ge 200 ];then
echo $line
echo "curl..."
curl -s "http://ip.chinaz.com/?ip=$ip" |grep 'span class="Whwtdhalf w50-0'|egrep ' | |IDC| '
if [ $? -eq 0 ];then
echo '/sbin/iptables -A INPUT -s '$ip' -p tcp --dport 80 -j DROP' >> /home/work/opbin/nginx/new_ban_ip.sh
echo "$(date +%F_%T) $ip" >> /home/work/opbin/nginx/firewall_black.txt
echo -e "$(date +$F_%T) /sbin/iptables -A INPUT -s '$ip' -p tcp --dport 80 -j DROP" >> /home/work/opbin/nginx/nginx_iptables.log
for i in nginx-2 nginx-1 nginx-3
do
echo "ban ip..."
echo -e "ssh $i /sbin/iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP" >> /home/work/opbin/nginx/nginx_iptables.log
ssh $i /sbin/iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
done
fi
else
echo -e "$line no ban and break" >> /home/work/opbin/nginx/nginx_iptables.log
break;
fi
echo "end."
done
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【CoreOS】이중화 구성 Keepalived+NginxLB+NginxWEB(1)(1) IP 주소 192.168.0.50의 VIP (virtual ip)를 가진 서버에 액세스 (2)Docker-Nginx 80번 포트에 착신 (3) 80번 포트 착신 후 Docker-Nignx-Proxy가 Dock...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.