SYN 플러드 공격 (SYN Flood Attack)
쉽게 풀면
식당에 손님이 자리를 예약만 하고 실제로는 오지 않는 상황이 반복되면, 빈 테이블처럼 보이지만 실제로는 예약이 꽉 차서 새로운 손님을 받을 수 없게 됩니다. SYN 플러드 공격도 이와 비슷하게, 공격자가 서버에 연결 요청(SYN)만 계속 보내고 연결을 완료하지 않아 서버의 대기열이 가짜 요청으로 가득 차게 만듭니다. 그 결과 정상적인 사용자는 서버에 접속할 수 없게 됩니다.
왜 중요한가
SYN 플러드는 DoS/DDoS 공격의 대표적인 프로토콜 취약점 악용 사례로, 네트워크 계층 보안 연구와 방화벽·로드밸런서의 방어 기법(SYN 쿠키 등)을 다루는 논문에서 기본 공격 시나리오로 자주 사용됩니다.
논문에서는 이렇게 쓰입니다
가짜 연결 요청이 몰리면서 서버가 진짜 사용자 요청을 처리하지 못하게 되는 현상을 실험으로 보였다는 뜻입니다.
특정 방어 기법을 쓰면 같은 공격을 받아도 서버가 더 잘 버틴다는 비교 결과입니다.
조금 더 깊게 보면
정상적인 TCP 연결은 SYN-SYN/ACK-ACK 세 단계를 거치는데, 공격자는 마지막 ACK를 보내지 않거나 위조된 출발지 주소로 SYN을 대량 전송해 서버가 응답을 기다리는 반열림(half-open) 연결을 쌓이게 합니다. 방어책으로는 SYN 쿠키, 연결 대기열 크기 조정, 방화벽의 SYN 비율 제한 등이 일반적으로 사용됩니다. 공격자는 IP 스푸핑으로 존재하지 않거나 응답 불가능한 출발지 주소를 사용해 SYN/ACK가 도달하지 않도록 만들어 반열림 연결이 오래 유지되게 합니다. 백로그 큐가 넘치면 커널이 새로운 연결 요청을 수용하지 못해 정상 사용자의 연결마저 거부됩니다. SYN 플러드는 TCP 3-way 핸드셰이크 과정에서 SYN 패킷만 대량으로 보내고 ACK 응답을 하지 않아 서버의 연결 대기열(backlog)을 소진시키는 방식으로 이루어집니다. 대응 기법으로는 SYN 쿠키(SYN cookie)를 이용해 연결 상태 정보를 서버가 저장하지 않고도 검증하는 방식이 널리 쓰입니다.
주의할 점
SYN 플러드는 단독으로도 위협적이지만, 실제로는 다른 유형의 DDoS 공격과 함께 사용되는 경우가 많아 방어 시 복합적인 대응이 필요합니다.
SYN 쿠키는 서버가 연결 상태를 저장하지 않고 시퀀스 번호에 암호학적으로 정보를 인코딩해 재구성하는 방식이라 백로그 큐 자체를 우회하지만, TCP 옵션 일부를 지원하지 못하는 부작용이 있어 모든 환경에 기본 적용하기는 어렵습니다. SYN 플러드는 출발지 IP를 위조하는 경우가 많아 단순 IP 차단만으로는 막기 어렵고, 연결 상태 관리 방식 자체를 바꾸는 대응이 필요합니다.