Security

[Security] 서비스 거부 공격(DoS : Denial of Service)_4

구루싸 2020. 2. 18. 22:35
반응형
SMALL

지난 포스팅에서 HTTP Get/POST Flooding에 대해 알아보았습니다

왜 지난 주제를 언급하는가하면

오늘의 학습 주제가 Slow HTTP Get/POST Attack이기 때문입니다

Slow만 앞에 붙어서 뭐 그냥 HTTP Get/POST Attack을 천천히 하는건가? 라는 생각이 드는데요

그럼 방식에 따라서 하나씩 살펴보겠습니다

먼저 Slow HTTP Get방식은

TCP 및 UDP 기반 공격이며 소량의 트래픽과 세션 연결을 통해 공격하고

애플리케이션 서비스의 취약점을 이용한 공격입니다

정상 IP 기반 공격이며 탐지가 어렵다는 특징을 가지고 있습니다

다음은 Slow HTTP Post방식은

HTTP의 Post 데이터가 모두 수신되지 않으면 연결을 장시간 유지한다는 점을 이용한 것인데

Post 지시자를 사용하여 서버에게 전달할 대량의 데이터를 장시간에 걸쳐 분할 전송하는 것입니다

Slow HTTP Get/POST 공격 방법을 잠깐 살펴보면

공격자가 HTTP Post Method를 사용하여

HTTP Header의 Content-Length 필드에 임의의 큰 값을 입력하고

Content를 천천히 1Byte씩 전송하면

웹 서버가 클라이언트에서 해당 크기의 메시지를 전송할 때까지

Connection을 유지하게 되는 것입니다

다음으로 Slow HTTP Read DoS는

공격자가 웹 서버와 TCP 연결 시 TCP 윈도우 크기 및 데이터 처리율을 감소시킨 후

HTTP 데이터를 송신하면 웹 서버는 정상상태로 회복될 때가지 대기상태에 빠지게 되어

정상적으로 응답하지 못하도록 하는 것입니다

이 공격 방법이 TCP 윈도우 크기 및 데이터 처리율을 감소시킨다고 하는 것은

공격자가 자신의 TCP 윈도우 크기를 0Byte로 만들어서 서버로 전달하는 것을 의미합니다

서버는 윈도우 크기가 0Byte라는 것을 확인하고

데이터를 전송하지 않고 대기 상태로 빠지게됩니다

마지막으로 Slow HTTP Header DoS(Slowloris)는

HTTP Header를 비정상적으로 조작해서 웹 서버가 헤더 정보를 구분할 수 없도록 하여

웹 서버가 HTTP Header 정보가 모두 전달되지 않은 것으로 판단하여 연결을 장시간 유지하도록 하는 공격입니다

또한, 이 공격은 웹 서버가 클라이언트로부터 요청이 끝나지 않은 것으로 판단하기 때문에

웹 로그에 기록하지 않는다는 특징이 있습니다

HTTP Header를 비정상적으로 조작한다는 것은 

HTTP Header와 Body는 개행문자(\r\n\r\n)로 구분하는데

\r\n만 전송하여 불완전한 Header를 전송하는 것을 의미합니다

아래의 표는 Slow HTTP Get/POST 공격 대응 방법을 정리한 것입니다

대응 방법 내용
접속 임계치 설정 특정 발신지에서 IP로 연결할 수 있는 최댓값 설정
iptables로 차단

iptables -A INPUT -p tcp -dport 80 -m connlimit-above 20 -j DROP

( 20개 이상의 Concurrent Connection에 대한 차단 )

Connection Timeout/Keepalivetime 설정 Connection Timeout/Keepalivetime을 설정하여 차단

RequestReadTimeout 설정

( Apache 2.2.15버전 이후 )

RequestReadTimeout header = 5 body = 8

( 5초 내에 연결이 안되거나 POST 요청 이후 8초 내에 데이터(body)가 오지 않으면 종료 )

POST 메시지의 크기를 제한

POST_MAX_SIZE 설정

최저 데이터 전송 속도를 제한

 

이것으로 오늘의 학습을 마치겠습니다-_-

반응형
LIST