IT 기초/Security

[Security] DDoS-SYN Flooding

데이터 세상 2021. 12. 27. 18:37

TCP vs UDP

[AWS Solution Architect/IP Network] - TCP vs UDP

 

SYN Flooding

TCP 3-way-handshake 과정의 두번째 과정에 집중된다.

"② Server는 SYN 패킷과 ACK 패킷을 Client에게 전달합니다. 그리고 Server는 Client의 접속을 받아들이기 위해, RAM(메모리)에 일정 공간을 확보해둡니다."

Client가 ①SYN 패킷만을 계속적으로 보내고 ③ACK 패킷을 안보내게 되면, Server는 Client의 연결을 받아들이기 위해 RAM(메모리) 공간을 점점 더 많이 확보해둔 상태에서 대기합니다.

그리고 Server의 RAM이 꽉 차게 되면 더이상 연결을 받아들일 수 없게되고, Server는 서비스를 서비스를 계속할 수가 없게 되죠.

 

SYN Flooding을 방어하는 방법

SYN Cookie

방화벽 단에서 SYN을 먼저 받고, SYN Cookie를 포함한 SYN+ACK를 보내는 방법이 있습니다.

일정 시간동안 SYN Cookie에 대한 정상적인 응답패킷이 들어오지 않으면 방화벽에서 차단해버리고, 정상적인 패킷이 들어오면 통신이 가능하게끔 해주는 방식이죠.

정상적인 패킷이 들어왔을 경우에는 아래와 같은 순서로 진행됩니다.

 

C는 Client에서 생성, F는 Firewall에서 생성, S는 Server에서 생성, 숫자는 몇번째 3-way-handshake 인지를 나타냅니다.

1) SYN이 들어오면, syn_cookie가 포함된 SYN+ACK을 보냅니다.

2) 그리고 syn_cookie에 적절히 대응하는 정상적인 ACK 패킷이 들어오면, 세션을 새로 엽니다.

 

즉, 처음 방화벽과 3-way-handshake가 이루어진 것은 없는 셈 치고, 방화벽은 새로운 3-way-handshake 패킷을 서버에 연결시켜주는 것이죠.

따라서 Client는 첫 접속에 실패하는 것 처럼 보일 수도 있습니다. (Client의 재접속 요청은 순식간에 이루어지기 때문에, 사용자로서 체감상으로 느낄 수는 없을 것입니다)

 

SYN PROXY

방화벽 단에서 정상적인 3-way-handshake과정이 이루어지면, 그 연결을 다시 서버에게 재현시켜주는 방식입니다

3-way-handshake 연결이 이루어지지 않은 경우에는 방화벽에서 쳐냅니다.(차단합니다)

SYN PROXY도 역시, syn_cookie를 이용해서 정상적인 3-way-handshake인지를 확인합니다.

syn_proxy는 세션을 새로 열 필요가 없습니다. client와 firewall 사이에 맺은 3-way-handshake를 firewall이 server에게 다시 재현해주기 때문에, 세션을 새로 맺을 필요가 없습니다.


References

 

 

반응형

'IT 기초 > Security' 카테고리의 다른 글

[Security] Cybersecurity 중요성  (0) 2022.05.02
[Security] DDoS-Flooding  (0) 2021.12.27
[Security] SSL  (0) 2021.12.27
CDN(Content Delivery Network)  (0) 2021.12.27
[Security] UTM(Unified Threat Management)  (0) 2021.12.27