adsense

글 목록

DDoS 공격별 공격 방법 및 대응 방안 알아보기 2 (홈페이지 부하 가중 공격)

DDoS 공격별 공격 방법 및 대응 방안 알아보기 2 (홈페이지 부하 가중 공격)


DoS 관련 글 보기
DDoS 공격별 공격 방법 및 대응 방안 알아보기 1 (대역폭 소진 공격)
DDoS 공격별 공격 방법 및 대응 방안 알아보기 3 (접속처리 한계 초과 공격)




구분
공격 항목
공격 내용
홈페이지 부하 가중 공격
Slowloris Attack
HTTP 헤더 요청이 \r\n 공백 라인으로 끝나지 않는 요청을 함으로써 웹서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하여 가용량을 소비시키는 공격

방어 대책 
L7 스위치 캐싱 시스템의 request timeout 이용
content-length 임계치 설정
연결 Timeout 설정
동시연결 임계치 설정 등

HTTP Get Flooding
웹사이트 내에서 자원을 많이 소모하는 특정 웹 페이지를 대량으로 호출하여 서버의 자원을 소진
동일한 URL 반복 요청해서 웹서버 자원 소모

방어 대책 
공격자 IP 방화벽에서 차단
iptable 등을 이용해 동일 IP에서 동시 연결 수 제한
ex) iptables –A INPUT –p tcp —syn —dport 80 –m connlimit —connlimit –above 5 –j DROP
connection timeout 값을 작게 설정
ex) httpd.conf TIMEOUT=120(default) 숫자를 줄여서 설정

KISA DDoS 공격 유형별 대응방안

(방안 1) 콘텐츠 요청 횟수에 대한 임계치 설정에 의한 차단
o Get Flooding 공격은 특정 동적 콘텐츠 데이터를 다량으로 요청하는 것이 특징이므로 IP마다 콘텐츠를 요청할 수 있는 횟수에 임계치를 설정하여 일정 규모 이상의 Get 요청을 차단하므로 Get Flooding 공격을 방어


< L7 스위치를 이용한 Get 요청 횟수 제한설정 예 >

(방안 2) 시간별 웹페이지 URL 접속 임계치 설정에 의한 차단
o URL에 대한 시간별 임계치를 설정하여 임의의 시간 안에 설정한 임계치 이상의 요청이 들어온 경우 해당 IP를 탐지하여 방화벽의 차단 목록으로 등록

(방안 3) 웹스크래핑(Web-Scraping) 기법을 이용한 차단
o L7 스위치를 운영하는 경우웹스크래핑 기능을 이용하면 요청 패킷에 대해 특정 쿠키(Cookie)값이나 자바스크립트(Javascript)를 보내어 클라이언트 로부터 원하는 값이 재요청(혹은 응답패킷에 없는 경우 해당 패킷을 차단

HTTP Continuation Attack
웹서버와 정상적인 세션을 연결한 이후 대량의 무의미한 값을 전송하여 세션을 유지한 상태에서 서버의 자원을 고갈
서버로 전달되는 패킷에 http header 없이 data 채워 웹서버가 지속적으로 데이터 수신을 위해 TCP 자원 사용하도록 하는 공격

방어 대책 
공격자의 IP 방화벽에서 차단

KISA DDoS 공격 유형별 대응방안
HTTP Continuation Data 패킷은 Request Header없이 Data만 보내는 형태로 해당 패킷에 대해 분석하지 않고 해당 패킷을 무시하도록 하여 공격패킷을 차단

이러한 방법을 적용하기 위해서는 웹서버 앞단에 캐싱장비가 필요한데이는 웹서버가 직접 트래픽을 수신하는 경우 웹서버의 트래픽 수신버퍼가 모두 차게 되어 다른 연결을 원활이 제공할 수 없기 때문에 충분한 연결을 유지할 수 있는 캐싱장비를 통해 효과적으로 대응 가능

또한이 공격의 가장 큰 특징은 연결 자원고갈과 함께 대역폭을 소진 한다는 것이므로 대역폭 소진에 대한 대안도 고려해야 함

HulK DoS
GET Flooding 공격 유형동일 URL을 지속적으로 요청 시 차단될 수 있으므로 이를 우회하고자 URL을 지속적으로 변경해서 공격

방어 대책
HTTP Get flooding 공격 대책과 동일

KISA DDoS 공격 유형별 대응방안

(방안-1)접속 임계치 설정을 통한 차단 - 특정한 발신지 IP에서 연결할 수 있는 동시 접속수(Concurrent Connection)에 대한 최대값을 설정하여 한 개의 IP에서 대량의 연결을 시도하는 공격을 차단 - 유닉스/리눅스 계열의 운영체제를 운영한다면 운영체제의 방화벽 설정 도구인 iptables 명령어를 이용하여 차단이 가능하며 예제는 아래와 같음
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP # 30개 이상의 concurrent connection에 대한 차단

(방안-2) HTTP Request HOST 필드값에 대한 임계치 설정을 통한 차단
- HULK DoS URL을 지속적으로 변경하기 때문에 URL이 아닌 HTTP Request에 포함된 HOST 필드값을 카운트하여 임계치 이상인 경우 차단하도록 설정
< HTTP Request HOST 필드 정보 >

o (방안-3) 302-Redirect를 이용한 차단
대부분의 DDoS 공격 tool 302-Redirect 요청에 대해 반응하지 않는 것이 특징이므로 여러 웹사이트 URL 중에 공격당하기 쉬운 웹사이트(: “/”)에 대한 Redirect 처리를 통해,
자동화된 DDoS 공격 tool을 이용한 공격을 사전에 차단하여 웹서버의 부하를 감소시킬 수 있음

Hash DoS
HTTP Post 또는 Get 명령어에 의미없는 매개변수를 대량으로 입력하여 이를 분석하기 위하여 서버가 자원을 소모하도록 하여 서버 자원 잠식
웹서버는 client 로부터 전달받은 http 메시지의 parameter 관리를 위해 hash table 사용조작된 다량의 parameter를 포함한 post 메시지를 전송. hash table 검색을 위한 인덱스로 사용되는 해시값을 충돌시켜 정확한 값을 찾기 위해 모든 해시테이블 검사하도록 만들어 이에 따라 CPU 자원 소진

KISA DDoS 공격 유형별 대응방안

톰캣(Tomcat)에서의 HashDoS 차단 방안 -
(방안 1 : 파라미터 개수 제한) TOMCAT_HOME/conf/server.xml Connector 부분을 다음과 같이 설정
<Connector port="8009" protocol="AJP/1.3" maxParameterCount="xxx" …./>

(방안 2 : POST 메시지 크기 제한사이즈를 제한하는 것이 서비스에 문제가 없는 경우 적용하며, TOMCAT_HOME/conf/server.xml Connector 부분을 다음과 같이 설정
<Connector port="8009" protocol="AJP/1.3" maxPostSize="xxx" …./>
PHP에서의 HashDoS 차단 방안 - PHP 5.4.0 RC4로 업데이트 한 후, php.ini 파일에서 ‘max_input_var'에서
최대 HTTP POST Parameter 개수를 설정
- PHP 5.4.0 RC4 이하인 경우, PHP Source에서 소스변경부분을 수동 설정하고 http://svn.php.net/viewvc?view=revision&revision=321003
에서 수정된 소스를 다운받아 재빌드하여 적용

Cache-Control Attack
웹서버의 캐쉬 기능을 이용하지 못하게 하고 직접 처리하도록 유도하여 웹서버의 자원을 소진시키는 공격 시도

방어 대책
방화벽에 캐싱공격 문자열을 포함한 IP 차단

KISA DDoS 공격 유형별 대응방안

(방안 1) 방화벽에 캐싱공격 문자열을 포함한 IP 차단
o HTTP Request 메시지를 분석(Parsing) 하여 캐싱 공격에 해당하는 문자열(no-Store, must-revalidate)을 포함하는 경우문자열을 포함한 IP 정보를 수집하여 방화벽에 등록하여 공격트래픽을 차단

(방안 2) L7 스위치를 이용한 캐싱 공격 차단
o L7 스위치를 이용하면 좀 더 세분화된 차단정책을 적용할 수 있는데다음과 같이 HTTP Header Cache-Control에 특정 문자열(no-Store, must-revalidate)을 포함하는 경우 해당 IP의 접속을 차단하는 방법을 이용
< HTTP 문자열 검색을 통한 IP 차단 설정 예 >


SSL Connection Flooding
데이터 암호화에 쓰이는 SSL의 키 교환 요청을 지속적으로 실시하여 암호화 키 생성을 위한 자원을 대량으로 소모

Random URL Attack
공격 대상의 URL이 아닌 임의의 URL을 대량으로 호출하여 서버가 해당 URL에 관련된 페이지를 찾도록 하여 서버의 자원을 잠식

Random Search Attack
홈페이지의 검색 기능을 이용하여 의미 없는 값을 대량으로 검색하도록 하여 서버의 자원을 소모

HTTP Random Parameter Attack
HTTP User-Agent 또는 Referer부분에 의미 없는 데이터를 대량으로 전송하여 이를 분석하기 위하여 서버가 자원을 소모하도록 하여 서버 자원 잠식



[자료:한국인터넷진흥원(KISA)]
https://m.blog.naver.com/PostView.nhn?blogId=kibani&logNo=220185072992&proxyReferer=https%3A%2
F%2Fwww.google.com%2F