현재 선택한 정보보안 과정

정보보안기사 필기 이론 학습

이론 목록으로 돌아가기

DoS·DDoS의 원리와 대응

고갈되는 자원과 반사·증폭·SYN 플러드의 구조를 이해하고 대응 지점을 연결합니다.

예상 읽기 8

DoS는 자원 고갈이나 처리 결함으로 정상 사용자의 서비스 이용을 방해하는 공격이며, DDoS는 공격이 여러 지점에 분산된 형태다. 주된 보안 목표는 가용성 보호다.

1. DoS와 DDoS를 구분한다

구분DoSDDoS
출발 구조한 대 또는 비교적 적은 출발지다수의 봇·프록시·반사 서버 등 분산 출발지
트래픽 형태한 출발지에서 자원 고갈 또는 결함 유발다수 출발지의 직접 플러드 또는 반사·증폭
대응 난이도출발지 식별·차단이 상대적으로 단순할 수 있음정상 사용자와 섞이고 출발지가 분산되어 단순 IP 차단의 효과가 낮을 수 있음
중요한 판단공격 패킷의 조건과 대상 자원분산 방식, 실제 병목 위치, 상위 회선에서의 완화 필요성

DDoS라고 해서 반드시 트래픽 양이 매우 큰 것은 아니다. 여러 호스트가 응용 계층에서 계산 비용이 큰 요청을 보내면 대역폭은 남아 있어도 서버와 데이터베이스가 포화될 수 있다. 반대로 한 출발지라도 매우 큰 회선과 높은 전송 능력을 가지고 있다면 회선 병목을 만들 수 있다.

또한 서비스 지연이 발생했다고 모두 공격은 아니다. 행사·예매·재난 알림처럼 정상 사용자가 한꺼번에 몰리는 플래시 크라우드(flash crowd)도 비슷한 자원 포화를 일으킬 수 있다. 시간대, 업무 이벤트, 사용자 세션, 요청 내용, 인증 성공률, 전환율, 출발 분포 등 여러 증거를 함께 비교해야 한다.

2. 소진되는 자원으로 구분한다

유형주로 소진하는 자원예와 대응 방향
대역폭 소진외부 회선UDP·ICMP 플러드, 반사·증폭: 상위 네트워크에서 완화
상태·처리량 소진미완료 연결, 장비 처리 자원SYN 플러드: 연결 검증, SYN cookie/proxy, 요청률 제한
응용 자원 소진서버 작업·연결·DB 자원HTTP 요청·Slow HTTP: 요청·시간 제한, 응용 보호

회선이 남아 있어도 응용 자원이 고갈될 수 있다. 반대로 회선이 이미 포화되었다면 서버 내부에서 패킷을 버리는 것만으로 정상 트래픽의 통로를 되살릴 수 없다.

3. 직접 플러드와 반사·증폭을 구분한다

직접 플러드

공격자가 제어하는 호스트 또는 봇이 피해자에게 직접 트래픽을 보낸다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
봇 1 ─┐
봇 2 ─┼─ 대량 요청·패킷 → 피해 서비스
봇 3 ─┘

피해자에게 보이는 출발지들이 실제 송신 주체일 수 있다. 다만 NAT, 프록시, 탈취된 서버가 섞일 수 있으므로 IP만으로 개인이나 조직을 공격 주체로 확정해서는 안 된다.

반사 공격

공격자가 피해자의 IP 주소를 출발지로 위조한 요청을 제3의 서버에 보내면, 제3의 서버는 응답을 피해자에게 보낸다. 이 제3의 서버를 반사 서버(reflector)라고 한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
공격자 ── [출발지 IP = 피해자] 요청 ──> 반사 서버
피해자 <──────────── 응답 ──────────── 반사 서버

반사 서버는 공격자의 봇과 다르다. 정상 서비스를 잘못 개방했거나 출발지 검증 없이 UDP 요청에 응답했을 뿐 공격자가 직접 제어하지 않을 수도 있다.

증폭 공격

작은 요청에 큰 응답이 돌아오는 서비스를 반사에 이용하면 피해자가 받는 트래픽이 공격자가 보낸 트래픽보다 커진다. 단순한 크기 비율은 다음처럼 표현할 수 있다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
증폭 비율 A = 응답 바이트 수 ÷ 요청 바이트 수

예를 들어 요청 60바이트에 응답 600바이트가 반환되면 단순 크기 비율은 10배다. 실제 비율은 요청·설정·헤더 포함 여부에 따라 달라진다. 고정 배수를 암기하기보다 위조 요청의 응답이 피해자에게 집중되는 조건을 이해한다.

좌우로 이동해 그림을 확인하세요.그림 크게 보기
반사·증폭 공격의 방향
반사·증폭 공격의 방향

4. TCP SYN Flooding

정상 TCP 연결

TCP 서버가 LISTEN 상태에서 연결을 받을 때 기본 흐름은 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
Client → Server : SYN
Client ← Server : SYN + ACK
Client → Server : ACK
연결 수립

서버는 SYN을 받은 뒤 연결을 완전히 수립하기 전까지 일정한 상태를 유지한다. 일반적으로 이 중간 상태는 SYN-RECEIVED로 관찰할 수 있다.

공격 원리

SYN flood는 서버가 받은 SYN에 대해 만든 미완료 연결 상태(half-open connection)를 대량으로 점유하게 한다. 공격 요청의 생성 속도가 정상 연결 완료나 상태 만료 속도보다 빠르면 backlog 또는 관련 자원이 가득 차 정상 사용자의 새 연결을 받기 어려워진다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
공격 SYN 다수 → 서버 SYN+ACK 응답 → 마지막 ACK가 오지 않음
                                     ↓
                            SYN-RECEIVED 상태 누적
                                     ↓
                          정상 신규 연결 수락 실패

출발지 IP 위조가 사용될 수 있지만 필수 조건은 아니다. 여러 실제 봇이 마지막 handshake를 완료하지 않거나 연결 생성 속도를 높여도 비슷한 결과가 날 수 있다.

대응 원리

SYN cookie는 최종 ACK를 확인할 때 연결 상태를 복원해 미완료 연결별 자원 점유를 줄이는 방식이다. SYN proxy는 중간 장비가 연결을 검증한다. 요청률 제한과 미완료 상태 만료 조정도 보조 수단이다. 실제 주소를 사용하는 봇도 공격할 수 있으므로 출발지 위조 차단만으로 충분하지 않다.

SYN과 미완료 연결이 많다는 사실만으로 공격을 확정하지 않는다. 정상 접속 급증, 클라이언트 오류, 서비스 로그를 함께 확인한다.

5. 대표 DoS 공격 비교

공격핵심 원리우선 대응
UDP/ICMP Flood대량 Packet으로 회선·처리량 소진상위 구간 Rate Limit·Filtering
SYN FloodHalf-open Connection과 Backlog 소진SYN Cookie/Proxy, Timeout·Rate 조정
SmurfDirected Broadcast를 이용한 ICMP 반사Directed Broadcast 차단, Source Validation
LANDSource와 Destination을 동일하게 위조비정상 Packet Filtering
Ping of Death비정상적으로 큰/조각난 ICMP 처리 취약점최신 Patch, 비정상 Fragment 차단
Teardrop겹치거나 비정상적인 Fragment 재조립 악용최신 Patch, Fragment 정규화

LAND·Ping of Death·Teardrop은 역사적 취약 구현을 이해하기 위한 대표 유형이며, 현재 대규모 DDoS의 전부를 의미하지 않는다.

6. 반사·증폭형 DDoS

반사·증폭은 주로 요청과 응답이 분리되어 있고 출발지 검증 handshake가 없는 UDP 서비스에서 나타나기 쉽다. 대표적으로 잘못 개방된 DNS recursive resolver, 과거의 NTP·SSDP·CLDAP·Memcached 등 여러 UDP 기반 서비스가 악용된 사례가 있다.

DNS 반사 공격의 흐름은 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
1. 공격자가 DNS 질의의 출발지 IP를 피해자 주소로 위조한다.
2. 외부 누구에게나 recursion을 제공하는 resolver에 질의를 보낸다.
3. resolver는 질의를 처리한 뒤 더 큰 응답을 피해자에게 전송한다.
4. 많은 resolver의 응답이 피해자 회선으로 집중된다.

방어는 공격받은 피해자 한 곳만의 책임이 아니다.

  • DNS recursion은 의도한 내부·고객 네트워크에만 허용한다.
  • 인터넷에 불필요한 UDP 서비스를 노출하지 않는다.
  • 요청 크기에 비해 큰 응답을 제공하는 서비스는 접근제어와 응답 제한을 적용한다.
  • 네트워크 사업자는 자사 고객이 위조 출발지 패킷을 내보내지 못하게 source validation을 적용한다.
  • 피해 조직은 ISP·DDoS 방어 서비스와 상위 회선 완화 절차를 준비한다.

7. 봇넷과 C2를 구분한다

봇넷은 공격자에게 제어되는 다수의 감염 호스트 집합이다. 공격 지시를 전달하는 통신 구조를 명령·제어(Command and Control, C2)라고 한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
공격 지시자·C2 → 여러 봇 → 피해 서비스

반사형 DDoS에서는 트래픽을 보내는 제3의 서버가 반드시 봇은 아니다. 반사 서버는 공격자에게 감염되지 않았어도 위조된 요청에 응답하면서 공격에 이용될 수 있다.

8. 응용 계층 DoS

응용 계층 공격은 회선보다 Web·API·DB·Thread·Connection Pool 같은 자원을 소진한다.

  • HTTP Request Flood: 정상처럼 보이는 요청을 대량 전송한다.
  • Slow HTTP: Header·Body·응답 읽기를 매우 느리게 진행하여 연결을 오래 점유한다.
  • 복잡한 검색·Login·Report 기능을 반복 호출하여 Backend 자원을 소진할 수 있다.

대응은 CDN·WAF·Rate Limit·Timeout·Cache·인증 단계 보호와 Application/DB 용량 관리가 함께 필요하다.

9. DoS·DDoS 대응 절차

  1. 평상시 Traffic과 자원 사용량을 기준선으로 관리한다.
  2. bps·pps·Connection·Request·Error 지표로 공격 유형을 구분한다.
  3. 피해 회선이 포화되면 ISP·CDN·Scrubbing 등 상위 지점에서 완화한다.
  4. Firewall·IPS·WAF·Application에서 공격 유형에 맞는 제한을 적용한다.
  5. 정상 사용자 영향과 우회 공격을 확인하고 복구 후 Rule·용량·연락 절차를 개선한다.

서버 내부 차단만으로 이미 포화된 외부 회선을 복구할 수 없다는 점이 중요하다.

스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01반사 공격에서 제3의 서버가 응답을 피해자에게 보내는 이유는?
정답 및 해설

요청의 출발지 IP가 피해자 주소로 위조되었기 때문이다. 반사 서버 자체가 감염된 봇일 필요는 없다.

02외부 회선이 포화되면 서버 방화벽의 패킷 폐기만으로 충분한가?
정답 및 해설

아니다. 정상 패킷도 서버에 도달하기 전에 회선에서 밀릴 수 있어 ISP 등 상위 구간의 완화가 필요하다.