2009-06-22 6 views
17

이것은 Serverfault에 더 적합 할 수 있지만 여기에만 오는 많은 webdevelopers는이 질문에 대해 가능한 답변을 얻을 수 있습니다.Dos 공격으로부터 자신을 보호하십시오.

질문 : 웹 서버에 대한 DoS (서비스 거부) 공격으로부터 어떻게 효과적으로 보호합니까?

내가 익숙하지 않은 사람들을 위해이 article

을 읽은 후 자신이 물어, 여기에 내가 그것에 대해 기억하는 내용은 다음과 같습니다 DoS 공격이 반복적으로 서버에 가짜 헤더를 전송하여 모든 연결을 차지하려고 시도합니다.

이렇게하면 서버가 동시 연결 수 제한에 도달하므로 일반 사용자는 사이트에 더 이상 액세스 할 수 없습니다. http://en.wikipedia.org/wiki/Denial_of_service

답변

43

은 만병 통치약이 없다,하지만 당신은 할 수 있습니다 : (당신의 의지를 제한하거나) 인증되지 않은 클라이언트를 대신 비싼 작업을하지 마십시오

  • 스로틀 인증 시도
  • 인증 된 각 클라이언트를 대신하여 스로틀 작업이 수행되고 너무 짧은 시간 내에 너무 많은 일이 발생하면 계정을 임시 잠금으로 설정합니다.
  • 모든 unauthentica ted 클라이언트를 검색하고 진행중인 공격을 감지 한 경우이 설정을 낮추십시오.
  • 공격 중에 공격을 사용하여 모든 인증되지 않은 액세스를 비활성화 할 수있는 플래그가 있습니다.
  • 인증되지 않은 클라이언트 대신 물건을 저장하지 마십시오. 각 인증 된 클라이언트의 저장소를 제한하는 할당량
  • 일반적으로 가능한 한 빨리 비정상적으로 복잡하거나 부작위 또는 엄청나게 큰 요청을 모두 거부하고 공격 탐지에 도움이되도록 기록합니다.
  • 사용하지 마십시오. 인증되지 않은 클라이언트의 요청이 캐시 캐싱 공격의 대상이 될 수 있기 때문에 순수 LRU 캐시 인 경우 (악의적 인 클라이언트가 다른이 자주 당신이 당신의 캐시에서 모든 유용한 일을 퇴거 및

이 기억) 합법적 인 고객 서비스를 제공하기 위해 더 많은 일을 할 필요가 원인이 물건을 사용, 그것은, 예를 들면 (스로틀 요청을 철저하게 거부하는 것이 중요합니다 HTTP 503: Service Unavailable) 또는 조절 된 응답 (비슷한 응답을 사용하는 프로토콜에 해당). 대기열에 대기열을 지정하면 대기열에서 모든 메모리를 다 소모하게되고 DoS 공격은 조절을하지 않은 경우보다 효과적입니다. 는 HTTP 서버에 대한

좀 더 구체적인 조언 :

  • 하는 웹 서버가 첨부 Content-Length 헤더없이 POST 메시지를 거부하도록 구성되어 있는지 확인하고 요청을 거부하기 위해 (그리고 잘못된 클라이언트 스로틀)을 초과 Content-Length 언급하고 할 보안 문제입니다 그냥 때문에 POST (또는 PUT)는
0

짧은 답변 :

당신은 자신이 서비스 거부에 대해 보호 할 수

위키 백과는 좀 더 많은 정보를 제공합니다.

그리고 난 도스 (한 요청이 GET처럼) 부하 분산 또는 WAF를 기반으로 보안 문제로 분류하고의 definetly이 특정 공격을 위해 프로그래밍

+0

를 대상으로 서비스에 대한 긴 부당있는 Content-Length와 요청을 거부하기 그것은 ServerFault에 속하지 않는다는 것을 의미하지는 않습니다. 프로그래밍은 그러한 보안 문제의 작은 부분 만 처리합니다. – ProfK

+0

물론 DoS로부터 보호 할 수 있습니다. 방화벽을 사용하고 IP 주소 당 연결 수를 제한하십시오. DDoS 공격으로부터 보호하는 것이 훨씬 어렵습니다. –

1

관련되어 있기 때문에이 저기 serverfault에 속하는 동의 해달라고 웹 서버에 대한 전체 요청만으로 작동합니다.

GET POST 대신 사용자가 악의적 인 POST인지 또는 실제로 느린 업로드인지 알 수 없기 때문에 문제가 발생합니다 (쉬운 방법).

DoS 본래부터 간단한 사실 때문에 웹 앱을 보호 할 수 없습니다. 리소스가 제한되어 공격자가 DoS를 수행하는 데 제한없는 시간과 리소스를 사용할 수 있습니다. 대부분의 경우 공격자가 필요한 단계를 수행하는 것이 저렴합니다. 예 : 이 공격은 위에서 언급 한 몇 가지 느린 실행 연결 -> 아무런 문제가 없습니다.

1

비동기 서버는 공격의 특정 형태에 다소 영향을받지 않습니다. 예를 들어, Nginx 리버스 프록시를 사용하여 장고 앱을 서비스하면 공격에 아무런 영향을 미치지 않는 것 같습니다. 또 다른 인기있는 비동기 서버는 lighttpd입니다.

이 공격은 연결 속도가 느린 단일 시스템에서도 수행 할 수 있으므로 위험합니다. 그러나 일반적인 DDoS 공격은 서버를 기계 군대에 맞 춥니 다. 자신을 보호하기 위해 할 수있는 일은 거의 없습니다.서비스 거부는 다음의 몇 가지 수행하여 더 어려운 공격

관련 문제