티스토리 뷰

Web/정리글

SYN Flooding Attack(DDos) 대응 정리

구름뭉치 2021. 12. 27. 14:37

SYN Flooding Attack란?

SYN ACK는 4 Layer 계층에서 TCP의 3-way hadnshake를 맺을 때 교환하는 비트 정보이다.

 

기본적인 TCP 3-way handshake

  1. 클라이언트가 서버에 SYN을 보낸다.
  2. 서버가 SYN 응답으로 ACK를 보내고 연결을 위해 SYN을 보낸다.
  3. 클라이언트가 SYN 응답으로 ACK를 보낸다.

SYN Flooding Attack 방식의 경우

  1. 공격자가 서버에 SYN을 보낸다.
  2. 서버가 SYN 응답으로 ACK를 보내고 연결을 위해 SYN을 보낸다. (ACK를 기다리며 대기한다.)
  3. 공격자는 ACK를 보내지 않고 대량의 SYN을 보낸다. (이때 패킷은 내용은 없고 헤더에 SYN 비트만 체크되어있다)
  4. 서버는 SYN에 대응하기 위해 사용하지 않는 포트를 계속 할당하다가 모든 포트가 사용되면 서버는 더 이상 정상적인 수행이 불가능해진다.

즉, 음성사서함이 10개가 있을 수 있다고 하자. 이때 공격자가 10개를 초과하는 아무내용이 없는 음성 메시지를 대량으로 남기면 이후 음성 사서함을 이용하고자 하는 사람은 이용할 수가 없게될 것이다. 이와 같은 원리이다.

 

도식화

위와 같이 공격이 진행된다고 보면된다.


사건

웹 서비스를 운용중에 있는데 자꾸 서버가 죽는 이슈가 발생했다. 이에 원인을 파악하고자 AWS의 Cloud watch를 통해 네트워크, CPU 사용량 등을 확인했다.

CPU 사용량

CPU 사용률이 새벽시간 대에 99.9%까지 치솟고 서버가 다운되는 것을 확인할 수 있었다. 이에 VPC의Flow logs를 사용하여 로그를 확인해보기로 했다.

 

불특정 IP에서 REJECT 하는 모습

수집된 로그는 Cloud Watch에서 확인할 수 있었는데 129.237.x.x 에서 랜덤한 포트번호로 수천개의 요청이 오고 REJECT 된것을 확인할 수 있었다.

이는 공격자가 ACK 요청을 보내고 서버가 보내는 ACK & SYN에 대해 응답을 보내지 않은 상태에서 ACK flooding을 통해 서버의 포트를 마르게 하고 결과적으로 서버가 감당할 수 없는 요청에 정상적인 서비스 진행이 되지 않도록 하는 공격 방식이다.

대응

일단 공격에 대한 대응을 위해 해당 IP주소를 VPC의 보안설정에서 네트워크 ACL에 인바운드 규칙과 아웃바운드 규칙에 해당 IP를 등록해 놓으므로서 처리했다. ACL은 Access Control List로 접근 제어 목록을 의미한다. 규칙 번호가 낮은 것부터 먼저 적용이 되는 방식이므로 해당 IP를 기존 규칙보다 낮은 수로 해서 등록했다.

 

기본적으로 AWS는 DDos 방지를 위해 AWS Shield Standard를 제공하는데 왜 이런 ACK Flooding Attack과 같은 디도스를 방지하지 못하는지 의문이다. CLOUDFLARE 가 이런 류의 공격에 방어를 제공해준다고 하여 이동을 고려해봐야 겠다.

반응형

'Web > 정리글' 카테고리의 다른 글

JWT 사용이유  (0) 2022.05.26
자바 웹 역사 정리  (0) 2021.12.21
멀티 쓰레드 정리  (0) 2021.12.20
HTTPS, TLS 정리  (0) 2021.10.19
DB 트랜잭션 정리  (0) 2021.10.04
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday