느 린 DOS 공격 구멍

2399 단어 springbootnginx
구멍 설명:
HTTP POST: POST 를 사용 할 때 아주 큰 content - length 를 지정 한 다음 에 아주 낮은 속도 로 가방 을 보 냅 니 다. 예 를 들 어 10 - 100 s 에서 바이트 하 나 를 보 내 고 hold 는 이 연결 을 계속 열 립 니 다.이렇게 하면 클 라 이언 트 가 많이 연 결 된 후에 웹 서버 의 모든 사용 가능 한 연결 을 차지 하여 DOS 를 초래 합 니 다.
복구 방법:
웹 서버 의 http 헤드 전송의 최대 허가 시간 을 제한 하고 최대 허가 시간 을 8 초 로 변경 합 니 다.
tomcat
tomcat 프로필 conf / server. xml 에서,
 // connectionTimeout 20000  8000  。
springboot
springboot 내장 tomcat 설정:
package com.using.judge.web.client.config;
 
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
 
public class WebServerConfiguration {
 
	@Bean  
    public EmbeddedServletContainerFactory createEmbeddedServletContainerFactory()  
    {  
        TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();  
        //tomcatFactory.setPort(8082);  
        tomcatFactory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());  
        return tomcatFactory;  
    }  
}  
class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer  
{  
    public void customize(Connector connector)  
    {  
        Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();  
        //         
        protocol.setMaxConnections(2000);  
        //         
        protocol.setMaxThreads(2000);  
        protocol.setConnectionTimeout(8000);  
    }
}
nginx
느 린 연결 닫 기
데 이 터 를 기록 하고 있 는 연결 을 닫 을 수 있 습 니 다. 이 는 가능 한 한 연결 을 열 려 고 시도 하 는 것 을 의미 할 수 있 습 니 다. (서버 가 새로운 연결 을 받 아들 이 는 능력 을 낮 출 수 있 습 니 다)Slowloris 는 이런 유형의 공격 의 한 예 이다.해당 clientbody_timeout 명령 은 NGINX 가 클 라 이언 트 기체 기록 사이 에서 기다 리 는 시간 을 제어 합 니 다. 이 clientheader_timeout 명령 은 NGINX 가 클 라 이언 트 제목 을 쓰 는 동안 기다 리 는 시간 을 제어 합 니 다.이 두 명령 의 기본 값 은 60 초 이다.이 예제 에 서 는 NGINX 를 클 라 이언 트 의 기록 이나 헤더 파일 사이 에서 5 초 이상 기다 리 지 않도록 설정 합 니 다.
server {
client_body_timeout 5s;
client_header_timeout 5s;
	# ...
}

좋은 웹페이지 즐겨찾기