///////
Search
♠️

SYN Flooding 공격이란?

SYN Flooding 공격이란?

TCP의 연결과정(3-way handshake)의 취약점을 이용하여 서비스 거부(DoS, Denial of Service) 공격을 하는 것이다.
이 공격을 당하면, TCP의 연결 가능한 자원을 모두 소진하게 되어 외부 사용자는 TCP 연결을 할 수 없게 된다.
Backlog Queue는 서버가 접속자의 연결 요청을 대기할 때, 요청 정보를 저장하는 공간이다.
연결되기 전에는 SYN_RECV 상태이고, 연결이 완료되면 ESTABLISHED 상태가 되어 대기중이었던 요청이 삭제되어 Backlog Queue에 공간을 비워준다.
하지만, 연결이 정상적으로 진행되지 않는 경우 SYN_RECV 상태로 계속 쌓여있게 되고, 공간이 가득 차게 되면 다른 연결 요청 정보 저장이 불가능해진다.

공격 과정

3-way handshake 과정은 위와 같이 이루어짐을 알 것이다.
1.
사용자가 악의적으로 대량의 SYN 패킷을 보내고, 그에 대한 응답으로 서버가 SYN+ACK 패킷을 전송하도록 유발한다.
2.
하지만, 사용자는 연결 확립을 위한 ACK 응답을 의도적으로 보내지 않는다.
3.
위와 같은 방식으로 미완료 연결을 생성하고, 서버는 연결 대기 상태로 만든다.

대응 방법?

1.
SYN 쿠키 사용 : 서버는 연결 요청을 처리하기 위해 Backlog Queue에 대기하지 않고, 임시적인 값을 사용하여 연결을 수락하게 된다.
2.
동일 클라이언트 IP에 대해 연결 수 제한을 설정한다.
3.
방화벽 설정을 통한 SYN Flooding 공격 감지