SYN이란 무엇인가요?
TCP에서 SYN은 연결을 시작하기 위해 클라이언트에서 서버로 보내는 패킷을 의미합니다. TCP 연결을 설정하는 단계는 다음과 같습니다.
3번의 패킷 교환이 필요한 이 연결 과정을 3웨이 핸드셰이크라고 합니다. 이를 통해 서버는 응답 패킷이 클라이언트에 도달했는지 확인할 수 있습니다. 그러나 클라이언트가 소스 IP 주소를 스푸핑하면 서버가 SYN/ACK 패킷에 대한 응답을 받지 못하므로 문제가 발생합니다. 이런 경우, 서버는 시간 초과가 될 때까지 반쯤 열린 상태를 유지하여 불필요하게 리소스를 소모하게 됩니다. 악의적인 행위자는 SYN 플러딩 공격(DoS/DDoS 공격의 한 유형)에서 이 취약점을 악용합니다.
F5의 BIG-IP 플랫폼은 전체 프록시 역할을 하며 SYN 패킷을 서버로 전달하기 전에 검사하여 SYN 플러드를 방지합니다. 또한 BIG-IP에는 대량의 SYN 패킷으로부터 자체를 보호하기 위해 SYN 쿠키라는 기능이 포함되어 있습니다. 이 방법에서는 MD5에서 생성된 숫자(쿠키라고 함)가 SYN/ACK 패킷의 TCP 시퀀스 번호에 포함됩니다. 이후 ACK 패킷을 수신하면 쿠키는 해당 내용으로부터 다시 계산됩니다. 이렇게 하면 SYN/ACK 패킷을 보낼 때 연결 세부 정보를 저장할 필요가 없으므로 SYN 플러드 공격 중에도 메모리 고갈을 방지할 수 있습니다.