텍스트 처리는 로그에 너무 자주 나타나는 IP 주소를 필터링하여 거부 목록에 추가합니다.

텍스트 처리는 로그에 너무 자주 나타나는 IP 주소를 필터링하여 거부 목록에 추가합니다.

60초 동안 내 웹사이트 페이지를 10번 이상 로드하는 모든 IP 주소를 nginx에서 추출하려고 합니다. 하지만 이는 GET / HTTPnginx 로그의 홈페이지 부분 에만 해당되어야 하며 /var/log/nginx/access.log해당 IP 주소를 거부로 변환해야 합니다. 목록/etc/nginx/conf.d/includes-optional/deny.conf

2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31822 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31826 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31826 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31714 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31822 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31794 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31774 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31748 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31774 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31720 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31820 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
2.2.2.2 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31834 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31822 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31826 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31826 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31714 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31822 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31794 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31774 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31748 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31774 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31720 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31820 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
1.1.1.1 - - [06/Sep/2021:21:02:58 +0200] "GET / HTTP/1.1" 200 31834 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/18B92 Safari/604.1 Puffin/8.0.2LP"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"
3.3.3.3 - - [06/Sep/2021:21:13:36 +0200] "GET /image.php?xxxxxxxxxxxxxxxxxxxxxxxxx" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/175.0.393249130 Mobile/15E148 Safari/604.1"

이 두 IP는 10번 이상 나타나며 /명령어 실행 시 루트 디렉터리에 있으므로 다음과 같은 내용을 추가해야 합니다./etc/nginx/conf.d/includes-optional/deny.conf

deny 1.1.1.1;
deny 2.2.2.2;

이는 IPv6 주소에서도 작동해야 합니다.

답변1

나는 작은 프로젝트를 썼다TxR이런 일을 하는 것을 소위txrban. 나는 수년간 이것을 운영해 왔습니다. 불행히도 문서화되어 있지 않습니다.

프로그램 apache.txr, exim.txrssh.txr은 진입점입니다. 이 프로그램은 웹 서버 로그, 메일 서버 로그 및 auth.logSSH 활동을 검사합니다. 이러한 프로그램 중 하나를 복제 apache.txr하고 원하는 대로 조정할 수 있습니다.

이러한 프로그램은 기본 txrban.txr모듈을 로드하며, 이름을 바꾸고 편집해야 하는 샘플 버전만 존재하지 않는 .git utils.txr저장소 도 로드합니다.config.txrconfig.txr

startup.sh스크립트는 부팅 시 세 가지 프로세스를 시작하는 데 사용됩니다. 이 프로그램은 TXR Lisp의 기능을 통해 daemon자체적으로 데몬화되며 syslog금지 및 금지 해제 이벤트를 보고하는 데 사용됩니다.

금지된 주소는 지속되지 않으며 단순히 메모리 내 해시 테이블에 보관됩니다. (패치 환영.) 시작 시 프로그램은 기존 로그를 읽고 모든 암시적 금지 및 금지 해제를 수행한 다음(시간이 걸릴 수 있음) 라이브 모드로 전환하여 로그를 추적하고 새로운 자료에 반응합니다.

config.txr파일에는 다양한 매개변수가 있습니다.

*ban-duration*포인트 기반 금지 에 사용됩니다 . 로그 스캔 포인트는 0이 아닌 점수뿐만 아니라 IP 주소도 보고할 수 있습니다. 해당 주소는 *ban-duration*점수를 목록의 색인으로 사용하여 결정된 기간 동안 즉시 금지됩니다 .

매개변수 *short-period*, *short-limit**short-ban*해당 long대응 항목은 시간 기반 금지를 결정합니다. 기간은 관심 있는 액세스 기간이며, 이 기간 내 최대 방문 횟수로 제한됩니다. 이 ban값은 금지 기간입니다. IP 주소의 액세스 패턴이 장기 금지 매개변수를 위반하는 경우 해당 IP 주소는 장기 금지 대상이 됩니다. 그렇지 않은 경우 단기 금지를 위반하면 그에 따라 금지됩니다.

기본 프로그램은 report로그를 스캔하고 IP 주소, 시간 및 지점의 세 가지 매개변수로 이 함수를 호출하여 흥미로운 이벤트를 보고합니다. (SSH 모듈은 네 번째 선택적 매개변수를 사용하여 특정 IP 주소에서 로그인을 시도한 사용자 ID를 보고합니다. SSH 모듈은 여러 사용자 ID로 로그인에 실패한 IP 주소에 페널티를 적용합니다.)

관련 정보