NginX와 Lighttpd가 Slowloris의 영향을받지 않는 이유는 무엇입니까?


23

Slowloris에 대한 취약점을 조사 중이며 이러한 종류의 공격이 어떻게, 왜 작동하는지 이해하고 있습니다.

내가 이해하지 못하는 것은 Lighttpd와 NginX가 영향을받지 않는 이유입니다 (위의 링크와 동일한 기사에 따라). 그들은 왜 그렇게 다른가?

답변:


25

아파치는 '최대 클라이언트'이론을 가지고있다

이것이 처리 할 수있는 동시 연결 수입니다. IE 아파치 서버의 '최대 클라이언트'제한이 100이고 각 요청을 완료하는 데 1 초가 걸리면 초당 최대 100 개의 요청을 처리 할 수 ​​있습니다.

SlowLoris와 같은 응용 프로그램은 SlowLoris가 초당 200 개의 연결을 보내면 Apache에서 초당 100 개의 연결 만 처리 할 수 ​​있으며 연결 대기열이 계속 커지고 컴퓨터의 모든 메모리를 사용하는 경우 사냥. 이는 Anonymous의 LOIC 작동 방식과 유사합니다.

NGINX와 Lighttpd (다른 것들 중에서)는 최대 연결이 없으며 대신 작업자 스레드를 사용하므로 이론적으로 처리 할 수있는 연결 수에는 제한이 없습니다.
Apache 연결을 모니터링하면 대부분의 활성 연결이 클라이언트에서 데이터를 '보내는'또는 '받는 중'임을 알 수 있습니다. NGINX / Lighttpd에서는 이러한 요청을 무시하고 시스템 리소스를 사용하지 않고 백그라운드에서 요청을 실행하게되며 진행중인 작업 (응답 분석, 백엔드 서버에서 데이터 읽기 등) 만 연결하면됩니다.

나는 오늘 오후에 비슷한 질문에 실제로 대답했습니다. 따라서 거기에있는 정보도 흥미로울 것입니다 .Apache 요청 큐잉 감소


훌륭하고 자세한 답변. +1
Oldskool

6
사소한 수정 : nginx는 많은 수의 연결을 달성하기 위해 작업자 스레드를 사용하지 않습니다. 에서 nginx.org : "Nginx에 핸들 요청에 스레드에 의존하지 않는 대신 훨씬 더 확장 가능한 이벤트 중심 (비동기) 아키텍처를 사용합니다."

2
가능한 부작용이지만, Slowloris의 의도는 "시스템의 모든 메모리를 사용"하는 것이 아니라 후속 연결이 성공하지 못하게하는 최대 연결 용량을 소모하는 것입니다.
wulfgarpro

@Day Nginx는 작업자 스레드를 사용하여 비동기 작업을 지원합니다. 유용한 응용 프로그램 아키텍처 회로도가 여기에 제공됩니다. aosabook.org/en/nginx.html#fig.nginx.arch
Terry Burton

13

Nginx는 실제로 slowloris 공격에 취약합니다. 부족한 리소스는 최대 동시 작업자 연결 수입니다. 이 숫자는 worker_connections * worker_processes 로 계산할 수 있으며 기본 nginx 구성에서 512와 같습니다. 따라서 goloris 와 같은 도구를 사용하여 보호되지 않은 nginx를 쉽게 제거 할 수 있습니다 .


goloris구현 / 설정이 예상대로 작동하는지 확인하는 데 필요한 도구처럼 보입니다!
Alexis Wilke

8

valyala의 의견이 답으로 받아 들여 져야합니다.

대부분의 nginx 서버는 기본 구성을 사용하므로 slowloris 공격에 취약합니다. 나는 slowloris를 사용하여 내 노트북의 일부를 사용하여 친구의 nginx 웹 사이트를 가져 갔으며 일반적으로 5 분도 채 걸리지 않았습니다 (친구는 저에게 도전했습니다).

valyala가 말했듯이 기술적으로 nginx는 slowloris에 취약하지 않지만 기본 구성은 최대 연결 수를 제한하므로 연결이 해당 수를 초과하면 nginx가 새 요청을 삭제하여 서비스 거부가 발생합니다.

slowloris로부터 nginx를 보호하는 알려진 방법에는 동일한 IP에서 연결 수를 제한하고 worker_connections 구성을 늘리는 것이 포함됩니다. 공격은 여전히 ​​효과가 있지만 더 어려워집니다 (5 분 이상 걸릴 수 있습니까? : D)

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