SYN 플러딩
IT위키
더 많은 작업
- TCP의 3-Way-Handshake 취약점을 이용한 DoS공격으로 다량의 SYN 패킷을 보내 백로그큐를 가득 채우는 방법을 이용한다.
- TCP에서 서버-클라이언트간의 신뢰성 있는 연결을 위한 매커니즘. 클라이언트가 접속을 위해 SYN을 보내면, 서버가 SYN/ACK 으로 요청을 인지했음을 응답하고, 클라이언트가 ACK으로 최종 응답을 함으로써 연결이 이루어진다.
- 클라이언트 -> SYN -> 서버
- 서버 -> SYN/ACK -> 클라이언트
- 클라이언트 -> ACK -> 서버
- Backlog Queue
- 3-Way-Handshake를 위해 연결이 진행중인 요청을 담아두는 큐
- SYN Backlog Queue엔 SYN을 보내온 연결요청 정보가 임시로 저장된다.
- 서버는 SYN에 대해 SYN/ACK을 보내고 ACK을 받기 전까지 저장해 두는 것이다.
- 큐가 가득차면 다른 연결을 받아들일 수 없게 된다.
서버는 SYN 을 받으면 연결 상태를 담는 TCB(Transmission Control Block)를 만들어 반쯤 열린(half-open) 연결로 백로그 큐에 둔다. 이 항목은 다음 경우에 큐에서 빠진다.[1]
- 3-way 핸드셰이크가 끝날 때 - 클라이언트의 ACK 가 오면 연결이 완성되어 반쯤 열린 연결 목록에서 빠진다
- 시간이 지날 때 - 일정 시간(예: 75초) 안에 완성되지 않으면 SYN-ACK 재전송을 멈추고 TCB 를 회수한다
- RST 가 올 때 - SYN-ACK 를 받은 쪽이 그런 연결을 요청한 적이 없으면 RST 를 보내고, 서버는 그 TCB 를 바로 지운다
그래서 공격자는 SYN 의 출발지 주소를 SYN-ACK 에 응답하지 않는 주소(존재하지 않거나 꺼진 호스트)로 위조한다. 살아 있는 호스트의 주소를 쓰면 그 호스트가 RST 를 보내 큐가 곧바로 비워지기 때문이다. 위조 출발지 주소는 큐를 비우는 조건이 아니라 큐를 채워 두기 위한 수단이다.[1] 또 TCB 가 회수되는 주기에 맞춰 새 SYN 묶음을 계속 보내야 공격이 유지된다.
- 클라이언트가 SYN만 보내고 아무런 동작을 하지 않는다면 해당 연결 요청은 TCP Connection Timeout 시간동안 계속 SYN Backlog Queue에 남아있게 된다.
- 다수의 클라이언트가 고의로 이런 행동을 한다면 SYN Backlog Queue는 가득 차게 된다.
- SYN Backlog Queue가 가득차면 더이상의 연결요청을 받아 들일 수 없게된다.
- 공격이 이루어지고 있는 상황은 netstat -an 을 통해 확인 가능하다.
- 연결 요청중인 목록 중 SYN_RECV로 되어 있는 요청이 많을 경우 Syn Flooding 공격 상황을 의심 해볼 수 있다.
- SYN_RECV로 된 요청이 많고, 해당 요청 IP가 비정상적인 경우 Syn Flooding 공격일 가능성이 아주 높다.
- TCP Connection Timeout 시간을 짧게 설정한다.
- 단, 너무 짧게 설정할 경우 정상적인 연결요청임에도 느리다는 이유로 연결이 거부되는 경우가 생긴다.
- Backlog Queue를 늘린다.
- 제한된 용량을 무한정 늘릴 수는 없으므로 다른 방법도 병행하여야 한다.
- 반대로 백로그 큐(TCP 연결 대기 테이블)의 크기를 줄이면 적은 SYN 으로도 더 빨리 가득 차므로 대응이 아니라 공격을 돕는 설정이다.
- 리눅스
# sysctl -w net.ipv4.tcp_max_syn_backlog=1024
- 유닉스
# ndd -set /dev/tcp tcp_conn_req_max_q1 1024
- 방화벽에 의심 패킷에 대한 차단 정책을 추가한다.
- 예시) 공격이 시도되고 있는 포트로 유사 패킷이 1초당 10개를 초과할 경우 차단한다.
# iptables -A INPUT -p TCP --dport 80 --syn -m limit 10/second -j ACCEPT # iptables -A INPUT -p TCP --dport 80 --syn -j DROP
- Syn Cookie를 이용한다.
- 자세한 내용은 Syn Cookie 문서 참조
- Anti-DDoS, IDS/IPS, 방화벽/UTM 등 보안 장비, 솔루션을 이용하여 비정상적인 접근을 탐지하여 차단한다.
- ↑ 1.0 1.1 「TCP SYN Flooding Attacks and Common Mitigations」(RFC 4987), IETF, https://www.rfc-editor.org/rfc/rfc4987, 확인일: 2026-11-04.