[네트워크] SYN Flooding 정리

Seaniiio·2023년 12월 29일

컴퓨터 네트워크

목록 보기
1/3
post-thumbnail

학교에서 컴퓨터 네트워크 수업을 수강하다가 SYN Flooding에 관련한 내용을 짧게 배웠었다. 간단히 정리해보자.

TCP 연결(handshake)

SYN Flooding, 즉 폭주 공격을 이해하기 위해서는 TCP 초기연결을 하는 원리를 알아야 한다.

다음의 3단계를 통해 client와 server사이의 TCP 연결이 설정된다.
1. client는 server에 연결하기 위해 SYN 패킷을 전송한다.
2. server는 SYN에 대한 응답으로 ACK을 보낼건데, server에서 client방향의 연결을 위해 SYN도 보낸다.
3. client는 SYN에 대한 응답으로 ACK을 보낸다.

이렇게 client와 server사이에 데이터를 주고받기 위해서는 SYN 패킷을 보내는 것으로 시작해야 하는데, SYN을 반복적으로 서버에 전송해서 사용 가능한 모든 자원을 소모하게 하여 서버가 원활히 동작하지 못하게 하는 것이 SYN Flooding이다.

SYN Flooding

위의 TCP 연결 과정에서 server는 자신에게 SYN을 보낸 client에게 SYN + ACK을 보내고, ACK을 받기까지 기다린다. SYN Flooding은 이것을 악용한다.

  1. 공격자는 *스푸핑된 IP주소를 사용해 서버로 SYN 패킷을 대량으로 보낸다.
  2. 서버는 받은 SYN에 대해 SYN + ACK을 보내고, ACK을 받을 때까지 기다린다.(하지만 주소가 스푸핑된 것이기 때문에 ACK을 받을 수 없는 상태이다.) 기다리는 동안 SYN 패킷을 Backlog Queue에 저장해놓는다.
  3. 공격자에 의해 계속 SYN 패킷이 서버에 전송되면 Backlog Queue에 처리되지 않은 SYN 패킷이 쌓이면서 정상적으로 작동할 수 없게 된다.

* 스푸핑(spoofing): 눈속임(spoof)에서 파생된 IT 용어로, 직접적으로 시스템에 침입을 시도하지 않고 피해자가 공격자의 악의적인 시도에 의한 잘못된 정보, 혹은 연결을 신뢰하게끔 만드는 일련의 기법들을 의미

스푸핑된 공격

공격자는 자신에 대한 정보를 찾는 것을 더 어렵게 만들기 위해 전송하는 각 SYN 패킷에 IP 주소를 스푸핑할 수 있다.
공격자의 정보가 다시 추적될 가능성이 있고, 이러한 종류의 감지 작업을 수행하는 것은 어렵지만, 특히 ISP(인터넷 서비스 공급자)가 도와준다면 가능하다.

DDoS(분산형 공격)

봇넷을 사용하여 공격이 생성되는 경우, 공격을 소스로 추적할 가능성은 낮다. 또한, 난독 처리 수준을 높이기 위해 공격자는 각각의 분산형 장치가 패킷을 전송하는 IP 주소를 스푸핑하게 할 수도 있다.

SYN Flooding 방어

  • 비정상적인 트래픽 패턴을 감지하기 위한 IPS를 운영한다.
  • Backlog Queue의 크기를 늘려준다.
  • syncookies를 이용한다(Backlog Queue가 가득 찼을 경우에도 정상적인 접속 요구를 계속 받아들일 수 있도록 함)

0개의 댓글