nginx 로그 차단 공격 자 ip 분석

1587 단어
최근 에 로 그 를 분석 해 보 니 같은 ip 이 끊임없이 제 문자 인 터 페 이 스 를 요청 한 다음 에 스 크 립 트 를 써 서 로 그 를 자동 으로 분석 하여 이 IP 를 차단 하 는 것 을 발 견 했 습 니 다. 본 고 는 nginx 차단 ip 을 이용 하여 공격 을 방지 하 는 방법 을 소개 합 니 다. 물론 iptable 을 통 해 도 가능 합 니 다.
우선, nginx 의 설치 디 렉 터 리 아래 에 새 차단 ip 파일 을 만 듭 니 다. Blockip. conf 라 고 명명 되 었 습 니 다. 나중에 차단 ip 을 새로 추가 하려 면 이 파일 만 편집 하면 됩 니 다. 형식 은 다음 과 같 습 니 다.
deny 165.91.122.67;
nginx 설정 파일 nginx. conf 에 include website / blockip. conf 를 추가 합 니 다.
다음은 제 스 크 립 트 checklog.sh
#! /bin/bash

log_nginx="/var/log/nginx"
blockfile="/usr/local/nginx/conf/website"

#          ip  ip.txt,       
grep "app/user/getCode" $log_nginx/access.log | awk '{print $1}' | sort -rn |uniq -c |awk '{print $2}' > /home/shell/ip.txt

for ip in `cat /home/shell/ip.txt`
do
    result=$(grep $ip $blockfile/blockip.conf)

#  ip       
    if [ -z "$result" ]; then

#  ip     
    count=$(grep $ip $log_nginx/access.log|grep "app/user/getCode"|wc -l)

#        20      
        if [ $count -ge 20 ]; then
        echo "deny $ip;" >> $blockfile/blockip.conf
        fi
    fi
done

#  nginx
/usr/local/nginx/sbin/nginx -s reload

로그 분할 을 했 기 때문에 저 에 게 access. log 는 모두 당일 로그 입 니 다. 그렇지 않 으 면 전체 로 그 를 분석 하 는 것 이 시스템 자원 을 소모 하 는 것 (로그 가 큰 경우) 에 비해 좋 지 않 습 니 다.
분석 차단 자동 화 를 실현 하기 위해 서 여기에 계획 임 무 를 쓰 세 요.
*/15 * * * *     /home/shell/check_log.sh                     15 분 마다 분석
0 0 */3 * *     cat /dev/null > /usr/local/nginx/conf/website/blockip.conf      3 일 마다 차단 한 IP 를 모두 실행 합 니 다.

좋은 웹페이지 즐겨찾기