Apache 웹 서버에 대한 "slowloris"DOS 공격을 가장 잘 방어하는 방법은 무엇입니까?


32

최근에는 "slowloris"라는 스크립트가 주목을 받고 있습니다. slowloris의 기본 개념은 새로운 공격이 아니지만 최근 주목을 받아 일부 Apache 웹 사이트에 대한 공격이 약간 증가했습니다.

현재로서는 이에 대한 100 % 방어는 보이지 않습니다.

우리가 지금까지 결정한 가장 좋은 솔루션은 MaxClients를 늘리는 것입니다.

물론 이것은 침입자의 컴퓨터에 대한 요구 사항을 증가시키는 것 이상을 수행하지 않으며 실제로 서버를 100 % 보호하지 않습니다.

다른 보고서에 따르면 Apache 서버 앞에 역 프록시 (예 : Perlbal)를 사용하면 공격을 방지 할 수 있습니다.

mod_evasive를 사용하여 한 호스트의 연결 수를 제한하고 mod_security를 ​​사용하여 slowloris가 발행 한 것처럼 보이는 요청을 거부하는 것이 지금까지 최선의 방어 인 것 같습니다.

ServerFault의 모든 사람이 이와 같은 공격을 겪고 있습니까? 그렇다면 방어 / 방어를 위해 어떤 조치를 취했습니까?

참고 :이 질문은 Windows IIS 서버가 영향을받지 않는다는 것을 이해하기 때문에 Apache 서버에 관한 것입니다.

답변:


22

한여름 중순 (6 월 23 일)에 시골에서 맥주를 ​​마셔야 할 공격이있었습니다.

나는 Apache를 Varnish 뒤에 두었습니다 . 이는 slowloris로부터 보호 될뿐만 아니라 웹 요청을 상당히 가속화했습니다.

또한 iptables나를 도왔습니다.

iptables -I INPUT -p tcp --dport 80 \
         -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP

이 규칙은 포트 80에 대한 하나의 호스트를 20 개의 연결로 제한합니다. 이는 악의적이지 않은 사용자에게는 영향을 미치지 않지만 한 호스트에서 slowloris를 사용할 수 없게 만듭니다.


4
iptables 규칙의 경우 +1
Tim

1
그냥 머리 위로. "바로 사용 가능"으로 니스는 쿠키를받은 경우 페이지를 캐시하지 않습니다. 이 문제를 해결하려면 사용자 지정 구성을 수행해야합니다. 예제는 사이트에서 구할 수 있으며 구현하기 쉽습니다.
David

바니시는 상당히 프로그래밍이 가능하므로 상황을 확인하고 처리하도록 구성 할 수 있습니다. 그러나 아파치 앞에 프록시를 넣으면 웹 서버에서 프록시로 문제를 옮길 수 있습니다. 문제는 여전히 다른 곳에 있습니다. 연결 / 포트는 여전히 사용됩니다. 나열된 iptables 규칙 (또는 방화벽에 해당하는 규칙)으로 시작한 다음 프록시를 살펴 봅니다.
David

1
sloworis 공격의 문제는 아파치의 멀티 스레딩 모델 (및 유사한 모델을 사용하는 여러 다른 웹 서버)로 제한됩니다. 광택은 살아남 아야합니다.
Cian


3

모든 아파치 모듈이 스레드로부터 안전하다면 이벤트 또는 작업자 MPM으로 전환하여 slowloris를 물리 칠 수 있습니다. 심판 : 여기


0

지금은 서버에서 IP 당 최대 동시 연결을 제한하는 더 이상 할 일이없는 것 같습니다.


0

시도 할 수있는 사용자 패치가 있습니다. 서버의 부하에 따라 시간 초과를 수정하지만 상태를 고려할 때 심각한 테스트없이 프로덕션 시스템에서 시간 초과를 사용하지 않을 수 있습니다. 봐 여기.


0

iptable 기반 방화벽은 1ip의 여러 연결로부터 사용자를 보호해야합니다.


0

이것이 다른 사람에게 도움이된다면 다음 구성으로 Apache 2.2.15 이상 에서이 문제를 극복 할 수 있습니다.

LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

자세한 정보는 여기 : https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.