DoS (Denial of Service)
기본 개념
DoS 공격은 비정상적이거나 과도한 트래픽으로 시스템 자원을 고갈시키고 서비스 제공을 방해하는 공격입니다. 이 공격은 네트워크 대역폭, CPU, 메모리 등을 과도하게 사용하여 정상적인 사용자의 접속을 방해하거나 시스템을 마비시킬 수 있습니다.
DoS 공격 기법
1. TCP SYN Flooding
TCP의 3-Way Handshake를 악용하여 지속적으로 SYN 패킷을 전송하는 공격입니다. 서버는 SYN 요청에 대해 ACK와 SYN 패킷으로 응답하며 연결 대기를 유지하게 됩니다. 그러나 공격자가 무의미한 Source IP를 사용해 연결 요청을 보내면 서버는 대기 큐가 가득 차고 새로운 연결을 받아들이지 못해 정당한 사용자 접속이 차단됩니다.
대응 방안
1. 방화벽 설정
IP 기반 필터링 | 특정 IP 주소나 IP 대역에서 오는 SYN 패킷을 차단 |
Rate Limiting | 특정 시간 동안 허용되는 SYN 패킷 수를 제한 |
Stateful Inspection | TCP 연결 상태를 검사하여 비정상적인 패킷 트래픽을 차단 |
2. 시스템 설정 최적화
- 백로그 큐 크기 조절: 서버가 처리해야 할 연결 요청을 임시로 저장하는 백로그 큐의 크기를 조절하여 공격에 대한 완충 역할
sysctl -w net.ipv4.tcp_max_syn_backlog = 1024
3. 라우터 기반 대응
- Watch Mode: SYN 패킷 통과 후 일정 시간 동안 연결 없으면 차단
- Intercept Mode: 라우터가 SYN 패킷을 가로채어 서버 대신 연결 설정
4. First SYN Drop: 첫 번째 SYN 패킷을 드롭하고 클라이언트가 재전송하는지 확인하여 스푸핑 여부를 판단하여 차단
5. SYN Cookie
6. TCP 연결 시간 제한
2. TCP Connection Flooding
TCP Connection Flooding은 공격자가 동일한 IP 주소에서 다양한 포트를 이용해 여러 세션을 동시에 연결하여 서버의 세션 용량을 초과하게 하는 방식입니다. 모든 세션 연결이 가득 차면 정상적인 사용자는 연결이 불가능하게 됩니다.
3. ICMP 및 UDP Flooding
Smurfing(ICMP) 또는 Fraggle(UDP) 공격으로 불리며, 공격자는 서브넷에 ICMP Echo 패킷을 브로드캐스트로 전송해 소스 주소를 공격 대상 서버로 위조합니다. 이를 통해 응답 패킷이 대상 서버로 집중되어 서버가 마비됩니다.
대응 방안
- ACL 차단: 접근 제어 목록(ACL)을 설정하여 웹 서버 혹은 운영 장비에 대한 트래픽을 차단
- Inbound 패킷 임계치 설정: 운영 장비로 유입되는 Inbound 패킷을 기준으로 PPS 수치를 유입되는 수치보다 낮게 설정. 임계치 이상의 ICMP 및 UDP 차단
4. IP Fragmentation
- 네트워크 패킷은 MTU(Maximum Transmission Unit)보다 큰 패킷이 오면 분할(Fragmentation)되고, 이 때 각 패킷은 flags와 offset 정보를 포함하여 전송
- 공격자는 offset 값을 악의적으로 조작하여 패킷이 올바르게 재조립되지 않도록 하여 패킷 필터링이나 침입 탐지 시스템(IDS)의 탐지를 어렵게 하여 자원을 소모시키고 서비스 거부 상태를 유도
주요 종류
- Tiny Fragment: 최초의 Fragment를 아주 작게 만들어서 IDS나 패킷 필터링 장비를 위회하는 공격
- Fragment Overlap: Tiny Fragment 공격 기법의 발전된 형태로, IDS의 Fragment 처리 방법과 패킷 필터링의 재조합과 Overwrite 처리를 이용
- Ping of Death: 비정상적으로 큰 ICMP 패킷을 전송하여 시스템을 마비시킴
- Tear Drop: 패킷 재조합 과정에서의 취약점을 악용하여 시스템을 다운시키거나 재부팅을 유발
5. Land Attack
Land Attack은 송신자와 수신자의 IP 주소와 포트가 동일하게 설정된 패킷을 보내 네트워크 장비에 부하를 일으키는 공격입니다. 대응 방법으로는 송신자와 수신자의 IP 주소가 동일한 패킷을 필터링하여 차단하는 방법이 있습니다.
6. HTTP GET/POST Flooding
HTTP GET/POST Flooding은 HTTP GET 요청을 지속적으로 보내 HTTP 연결과 처리 로직에 과부하를 일으키는 공격입니다.
대응 방법
- 선별적 IP 차단: 연결기반 공격이므로 IP를 변조할 수 없는 특성을 이용하여 임계치 값을 모니터링 후 비정상적인 트래픽은 차단
- 콘턴츠 요청횟수 임계치 설정: IP마다 콘턴츠 요청 횟수의 임계치를 설정
- Web Scraping 기법을 이용한 차단: L7 스위치를 운영하는 경우 웹 스크래핑 기능을 사용하여 요청 패킷에 대한 쿠키 값이나 자바 스크립트를 보내어 클라이언트로부터 원하는 값에 앞서 발급했던 재용청 패킷이 없는 경우 해당 패킷을 차단
7. Slow HTTP GET/POST Attack
Slow HTTP Get 방식
- TCP 및 UDP 기반 공격으로 탐지가 어려움
- 소량의 트래픽과 세션 연결을 통해서 공격
- 서비스의 취약점을 이용한 공격
Slow HTTP Post 방식
- HTTP POST 요청을 사용하여 대량의 데이터를 장시간에 걸쳐 분할 전송
- Post 데이터가 모두 수신되지 않으면 연결을 장시간 유지
Slowloris
- HTTP 헤더 정보를 비정상적으로 조작하여 웹 서버가 온전한 헤더 정보를 기다리도록 하는 공격 기법
- HTTP에선 헤더의 끝을 /r/n라는 문자로 구분하게 되는데 공격자는 마지막 개행 문자를 보내지 않아 연결을 강제적으로 유지하며, 특정 헤더 필드가 끊임없이 전송되어 서버 자원이 고갈
대응 방법
- 접속 임계치 설정: 특정 발신지에서 IP로 연결할 수 있는 최대 값 설정
- Concurrent Connection 개수에 대한 차단: iptables -A INPUT -p tcp -dport 80 -m connlimit -above 30 -j DROP
- Connection Timeout과 Keepalivetime 설정
- RequestReadTimeout 설정으로 차단
- POST 메시지의 크기를 제한
- 최저 데이터 전송속도를 제한
- TCP 상태를 모니터링
Hash DoS
Hash DoS는 웹 애플리케이션의 해시 테이블 충돌을 유발하여 성능을 저하시키는 공격입니다. 해시 테이블 기반 자료구조를 사용하는 시스템에서 주로 발생합니다.
Hulk DoS
Hulk DoS는 HTTP GET Flooding의 변형으로, 대량의 HTTP GET 요청을 보내며 URL을 지속적으로 변경하여 DDoS 차단 정책을 우회하는 공격입니다.
DDoS (Distributed Denial of Service)
DDoS 공격은 여러 컴퓨터 시스템을 동원하여 악성 트래픽을 대상에 보내는 방식입니다. 주로 봇넷을 통해 이루어지며, 공격자가 제어하는 중앙 서버(C&C)에서 명령을 내립니다.
DDoS 공격 방지 대책
- 공격 면적을 최소화하여 피해 최소화
- CDN(Content Delivery Network)을 통한 분산처리: 콘텐츠를 사용자 근처에 캐싱하여 서버 부하 분산
- AI 기반 실시간 모니터링 및 자동 차단 시스템: 실시간 트래픽 분석을 통해 공격 탐지 및 자동 차단
- 충분한 대역폭 확보 및 서버 리소스 확충
- Anycast를 통한 DDoS 분산 처리: 여러 서버에 동일한 IP 주소를 할당하여 공격 분산
- 클라우드 기반 DDoS 완화 서비스: 클라우드 플랫폼의 확장성과 자동화 기능을 활용하여 공격 완화
참고
https://www.techtarget.com/searchSecurity/tip/How-to-prevent-DDoS-attacks
How to prevent DDoS attacks | TechTarget
Attackers continue to use distributed denial-of-service attacks to damage organizations. Read up on how to prevent DDoS attacks.
www.techtarget.com