DDoS 공격 생산 사례 해결
물론 각 회사 의 IP 병발 수 는 각각 다 르 지만 위 에 서 는 예 를 들 어 설명 할 뿐이다.
내 Nginx 의 WEB 로 그 는 매일 절단 처 리 를 하기 때문에, 그렇지 않 으 면 모든 웹 로그 가 한데 쌓 여 번 거 로 움 을 볼 수 있 습 니 다.
시스템 상태:
1 [root@nginx shell]# cat /etc/redhat-release
2 CentOS release 6.7 (Final)
3 [root@nginx shell]# uname -r
4 2.6.32-573.el6.x86_64
5 [root@nginx shell]# /application/nginx/sbin/nginx -v
6 nginx version: nginx/1.10.3
1. 웹 로그 절단 스 크 립 트
스 크 립 트 는 다음 과 같 습 니 다. 네티즌 들 은 자신의 수요 에 따라 변경 할 수 있 습 니 다.
이 스 크 립 트 는 정 해진 시간 에 작업 을 수행 하고 일수 에 따라 절단 할 수 있 습 니 다.
#!/bin/bash
#-------------CopyRight-------------
# Name:Cut Ningx logs
# Version Number:1.1
# Type:sh
# Language:bash shell
# Date:2018-05-16
# Author:xubing
# QQ:442656067
# Email:eeexu123@163.com
# Blog:https://www.cnblogs.com/eeexu123/
#Nginx
IP=$(ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}')
#cut every day nginx log
cut(){
[ -d "/application/nginx/logs" ]||{
echo "Nginx logs is not exist."
exit 1
}
cd /application/nginx/logs
/bin/mv www_access.log www_access_$(date +%F).log
/application/nginx/sbin/nginx -s reload
}
#tar nginx log file to /backup
backup(){
[ -d "/backup/$IP" ]||{
mkdir -p /backup/$IP
}
tar -zcf /backup/$IP/www_access_$(date +%F).log.tar.gz www_access_$(date +%F).log
#rysnc /backup file to backup server
rsync -avz /backup/$IP rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password //
}
#del before 7 day nginx log
del(){
find /application/nginx/logs -type f -name "*$(date +%F).log" -mtime +7 | xargs rm -f
find /backup/$IP -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
}
main(){
cut
sleep 2
backup
sleep 2
del
}
main
2, 도스 공격 보호 스 크 립 트
위 웹 로그 에 따라 PV 통 계 를 진행 합 니 다.이 스 크 립 트 는 정시 작업 에 넣 을 수 있 습 니 다.main 함수 에서 while 순환 도 할 수 있 습 니 다.
#!/bin/bash
#-------------CopyRight-------------
# Name:defined DoS
# Version Number:1.1
# Type:sh
# Language:bash shell
# Date:2018-05-16
# Author:xubing
# QQ:442656067
# Email:eeexu123@163.com
# Blog:https://www.cnblogs.com/eeexu123/
ch_web_log(){
awk '{print $1}' /application/nginx/logs/www_access_$(date +%F).log|sort|uniq -c|sort -rn -k1>/tmp/ip.log // IP ip.log
while read line
do
PV=`echo $line|awk '{print $1}'` //IP
IP=`echo $line|awk '{print $2}'`
if [ $PV -ge 100 -a `iptables -nL|grep "$IP"|wc -l` -lt 1 ];then // PV 100 IP, IP。 IP
iptables -I INPUT -s $IP -j DROP //
echo "$IP" >>/tmp/`date +%F`_ip.log // IP
echo "The DROP ip is $IP"
fi
doneip.log
}
# IP
del(){
exec '1day ago')_ip.log
while read line
do
iptables -D INPUT -s $line -j DROP
done
}
main(){
ch_web_log
sleep 2
del
}
main
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.