SYN Flooding 공격이란?

SYN Flooding 공격

SYN Flooding(싱 플러딩) 공격은 TCP의 3-Way Handshake 과정을 악용하여 서버의 자원을 소진시키는 네트워크 계층 공격입니다. 이는 서비스 거부(DoS, Denial of Service) 공격의 한 형태로, 다량의 SYN 패킷을 보내 서버가 정상적인 연결을 처리하지 못하도록 만듭니다.

인터넷에서 클라이언트와 서버 간 신뢰성 있는 데이터 전송을 위해 사용되는 TCP(Transmission Control Protocol)는 연결을 설정하기 위해 3-Way Handshake라는 과정을 수행합니다. SYN Flooding 공격은 이 과정을 악용하여 서버가 처리할 수 없는 SYN 요청을 과부하 상태로 유도하여 서비스 거부 상태를 초래하는 공격 방식입니다.

TCP 3-Way Handshake 개요

TCP는 신뢰성 있는 연결을 보장하기 위해 3-Way Handshake를 사용하여 클라이언트와 서버 간의 연결을 설정합니다.

  1. 클라이언트 → 서버: SYN 패킷 전송 (연결 요청)

    • 클라이언트는 서버에 TCP 연결을 요청하는 SYN 플래그가 설정된 패킷을 보냅니다.

    • 이 패킷에는 초기 순차 번호(ISN, Initial Sequence Number)가 포함됩니다.

  2. 서버 → 클라이언트: SYN-ACK 패킷 전송 (응답)

    • 서버는 SYN 요청을 받은 후 클라이언트의 연결 요청을 승인하고, 자체적인 SYN-ACK 패킷을 응답합니다.

    • 이 패킷은 서버의 초기 순차 번호(ISN)와 함께 전달됩니다.

  3. 클라이언트 → 서버: ACK 패킷 전송 (연결 확립)

    • 클라이언트는 서버의 SYN-ACK 패킷을 확인한 후, 최종적으로 ACK 패킷을 서버로 보내며 연결이 확립됩니다.

    • 이후, 클라이언트와 서버 간 데이터 전송이 시작됩니다.

정상적인 경우 이 과정이 정상적으로 완료되지만, SYN Flooding 공격에서는 악의적인 클라이언트가 이 과정을 악용하여 서버가 무의미한 연결 요청을 처리하도록 만듭니다.

SYN Flooding 공격 방식

SYN Flooding 공격은 위의 3-Way Handshake 과정에서 3번째 단계(ACK 전송)를 수행하지 않고, 대량의 SYN 패킷을 무작위로 보내는 방식으로 이루어집니다. 공격자가 다음과 같이 행동합니다.

  1. 다수의 SYN 패킷을 생성하여 서버에 전송

    • 공격자는 허위 IP 주소를 사용하여 서버로 SYN 요청을 지속적으로 보냅니다.

    • 이때 공격자는 실제로 응답할 의도가 없습니다.

  2. 서버는 각 요청에 대해 SYN-ACK 패킷을 반환하고, 클라이언트의 ACK 응답을 기다리며 일정 시간 동안 연결 정보를 유지

    • 서버는 클라이언트가 ACK 패킷을 보내지 않아도 일정 시간 동안 연결을 대기 상태로 유지해야 합니다.

    • 이를 반연결(Half-Open Connection) 상태라고 합니다.

  3. 공격자는 ACK를 보내지 않고 추가로 새로운 SYN 패킷을 계속해서 보냄

    • 서버는 기존 요청이 만료되지 않은 상태에서 새로운 SYN 요청을 받게 되며, 지속적으로 리소스를 사용해야 합니다.

  4. 서버는 계속해서 SYN-ACK를 전송하며, 일정 시간 동안 해당 연결을 대기 상태로 유지하게 됨

    • 백로그 큐(Backlog Queue)가 가득 차면서 새로운 정상적인 연결 요청을 처리할 수 없게 됩니다.

    • 결국 서버의 네트워크 자원이 소진되고, 정상적인 사용자가 서버와 연결할 수 없는 서비스 마비 상태가 발생합니다.

SYN Flooding 공격의 특징

  • TCP 프로토콜의 연결 설정 과정(3-Way Handshake)을 악용

  • 공격자가 ACK 패킷을 보내지 않음

  • 서버가 다량의 반응을 대기하면서 자원 소모

  • 백로그 큐(Backlog Queue)가 초과되면 서비스가 중단됨

  • 네트워크 계층에서 이루어지는 공격으로, 방화벽이 제대로 설정되지 않으면 쉽게 수행 가능

  • 분산 서비스 거부 공격(DDoS) 형태로도 활용될 수 있음

  • IP 스푸핑을 활용하여 추적을 어렵게 만듦

SYN Flooding 공격 방어 방법

SYN Flooding 공격을 방어하기 위해 다양한 보안 기법이 활용됩니다.

SYN Cookies 사용

SYN Cookies는 서버가 SYN-ACK 패킷을 보낼 때 클라이언트의 상태 정보를 쿠키 값으로 변환하여 응답하는 방법입니다. 클라이언트가 실제로 ACK를 보내면 쿠키 값을 확인하여 정당한 요청인지 판별할 수 있습니다.

백로그 큐 크기 조정

서버의 SYN 요청 대기 큐(Backlog Queue) 크기를 증가시키면 일시적으로 더 많은 요청을 처리할 수 있습니다. 그러나 근본적인 해결책은 아닙니다.

IP 블랙리스트 및 제한 설정

특정 IP에서 비정상적인 SYN 요청이 과도하게 발생할 경우 해당 IP를 차단하는 방법입니다. 그러나 공격자가 IP 스푸핑을 사용하면 효과가 제한적일 수 있습니다.

방화벽 및 IDS/IPS 활용

방화벽을 설정하여 비정상적인 트래픽을 차단하거나, 침입 탐지 시스템(IDS) 및 침입 방지 시스템(IPS)을 이용하여 SYN Flooding 패턴을 감지하고 차단할 수 있습니다.

레이트 리미팅 (Rate Limiting)

서버가 특정 시간 내에 받아들일 수 있는 SYN 패킷의 개수를 제한하는 방식입니다. 일정 개수를 초과하면 추가 요청을 차단하거나 지연시킵니다.

SYN Flooding과 DDoS 공격

SYN Flooding 공격은 단일 공격자가 수행할 수도 있지만, 더 강력한 형태로 발전하면 분산 서비스 거부(DDoS) 공격이 될 수 있습니다. DDoS SYN Flooding 공격에서는 수천 개의 봇넷(Botnet) 장치가 동시에 SYN 패킷을 전송하여 대상 서버를 과부하 상태로 만듭니다. 이를 방어하기 위해서는 트래픽 분석 및 네트워크 모니터링이 중요합니다.

결론

SYN Flooding 공격은 TCP 3-Way Handshake의 구조적 특성을 악용하여 서버를 과부하 상태로 만드는 대표적인 DoS 공격입니다. 효과적인 방어를 위해서는 SYN Cookies, 방화벽, IP 차단, 레이트 리미팅 등 다양한 보안 기술을 조합하여 사용해야 합니다. 네트워크 보안을 강화하여 이러한 공격으로부터 서버를 보호하는 것이 중요합니다.

Smurf Attack: ICMP 프로토콜을 악용한 서비스 거부(DoS) 공격

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments