
라는 도구가 있습니다.폐선(Http 견딜 수 없는 로드 킹). 웹 서버 서비스 거부 도구입니다. 이는 웹 서버에서 고유하고 난독화된 트래픽 볼륨을 생성하여 캐싱 엔진을 우회하여 서버의 직접 리소스 풀에 도달하도록 설계되었습니다.
나는 이것을 Nginx에서 테스트해왔고 몇 초 만에 Nginx를 다운시켰습니다. 아래는 내 테스트의 로그 조각입니다.
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?UDY=CLZFTJP HTTP/1.1" 200 199265 "http://www.usatoday.com/search/results?q=BZWVGQ" "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?YGNBNQK=BEPPWCSMKJ HTTP/1.1" 200 199272 "http://www.google.com/?q=PJCSSRQLT" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?XETRTJ=LFV HTTP/1.1" 200 199264 "http://www.usatoday.com/search/results?q=QHDEEM" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?JYJHZB=ZHIB HTTP/1.1" 200 199265 "http://www.mywebsite.com/UPHIBL" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1"
192.168.1.10 - - [17/May/2013:16:37:35 +0800] "GET /?VHXLKAIB=NCU HTTP/1.1" 200 199266 "http://www.mywebsite.com/KIPQLJH" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?IGCQSNG=BNKSM HTTP/1.1" 200 199267 "http://engadget.search.aol.com/search?q=POZWPGSTV" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?HUL=BMZAQXXXF HTTP/1.1" 200 199267 "http://www.usatoday.com/search/results?q=KUQNRADOUP" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)"
192.168.1.10 - - [17/May/2013:16:37:36 +0800] "GET /?ZWOWYGEZ=PBEAVXZF HTTP/1.1" 200 199271 "http://engadget.search.aol.com/search?q=FXWHN" "Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)"
내 테스트 서버(CentOS 6.4 64비트)는 Varnish로 구성되어 있지만 도구에 따르면 Varnish 캐싱을 우회했습니다.
Fail2ban을 설치할 수 있지만 이런 종류의 요청에 대해 정규식을 어떻게 정의해야 합니까? 아니면 이런 종류의 공격으로부터 보호하기 위해 Nginx를 구성하는 방법이 있습니까? 어쩌면 규칙이나 다른 것을 다시 작성할까요?
답변1
방금 이 스레드를 우연히 발견했는데 반대표가 2개 있다는 것을 알았습니다. 어쨌든, 저는 HULK 요청을 차단하기 위해 제가 한 일을 게시하고 싶습니다.
/etc/nginx/conf.d/default.conf
(또는 유사한) 에서 . 블록 내부에 다음을 추가했습니다 server
.
if ($args ~* "(.{1,})=(.{1,})" ){
rewrite ^/$ /444_rewrite?;
}
location /444_rewrite {
return 444;
}
그것은 무엇을 하는가?
사이트가 친숙한 URL을 사용하고 있고 사이트 URL 중 ?
and 로 시작하는 URL이 없기 때문에 =
모든 이상한 GET 요청을 444로 리디렉션할 수 있습니다. 인수는 (.{1,})=(.{1,})
Nginx에게 두 문자 사이에 문자가 있는 모든 GET 요청을 리디렉션하도록 지시합니다 =
.