요약
- SYN 플러드는 시차 비대칭을 이용합니다. TCP 수신 대기 측은 개시자가 핸드셰이크를 완료하기 전에 유한한 half-open 상태를 미리 확보하므로, 저렴한 요청만으로 서버의 백로그를 점유할 수 있습니다.
- RFC 4987의 가장 강력한 엔드포인트 방어는 더 작고 유한한 SYN 캐시를 유지하거나, 복구 가능한 상태를 SYN 쿠키에 담아 전체 커밋을 지연하는 것이며, 트레이드오프가 사라지는 것처럼 가장하지 않습니다.
TCP 수신 대기 측은 시스템 전체에 영향을 미치는 작은 결정에 직면합니다. SYN이 도착하면 서버는 핸드셰이크를 계속할 수 있을 만큼 기억할 수 있습니다. 평시 트래픽에서는 정중한 행동입니다. 그러나 적대적 트래픽에서는 약속이기도 합니다. 메모리와 타이머 작업이 아직 SYN-ACK을 수신할 수 있음을 증명하지 못한 상대에게 할당된 것입니다.
RFC 4987은 이 비대칭을 기술합니다. 일반적인 TCP는 마지막 ACK를 기다리는 동안 SYN-RECEIVED 상태를 유지합니다. half-open 백로그는 유한합니다. 공격자가 흔히 응답하지 않는 주소에서 충분한 SYN을 보내면 정당한 시도는 자리를 찾지 못합니다. 이 RFC의 주제는 호스트 TCP 상태와 수신 대기 애플리케이션에 대한 서비스 거부입니다. 네트워크 링크 자체를 압도하는 플러드는 별개의 문제이며, 이 메커니즘의 보호 경계 밖에 있습니다.
공격이 반드시 하나의 정형화된 형태를 가질 필요는 없습니다. 위조된 주소는 회신을 사라지게 하지만, 침해된 기기도 사용 가능한 주소에서 전송할 수 있습니다. 핵심 요건은 더 기본적입니다. 응답자는 각 연결 개시 요청에 상태를 할당하고, 상태 풀은 유한하며, 요청이 재확보를 앞지를 만큼 빠르게 도착한다는 것입니다. RFC 4987이 분석하는 사례에서 즉각적 피해는 이미 수립된 연결이 아니라 대상 수신 포트로의 새 인바운드 연결에 집중됩니다.
직관적인 몇몇 수리 방법은 불리함을 단순히 다시 협상할 뿐입니다. 더 큰 백로그는 방어자에게 더 많은 메모리를 주지만 공격자에게는 더 채울 대상이 커집니다. 더 짧은 SYN-RECEIVED 타이머는 항목을 빨리 해제하지만 평범한 네트워크 지연으로 늦어진 정당한 핸드셰이크를 폐기할 수 있고, 공격자는 도착률을 높여 대응할 수 있습니다. 가장 오래된 half-open 제어 블록을 재활용하면 나이를 희생 선택 규칙으로 삼을 뿐 어느 개시자가 가짜인지 증명하지 못합니다. 수신 필터링(ingress filtering)은 위조가 의존 지점일 때 가치가 있지만 어디서나 가정할 수는 없고, 라우팅 가능한 주소를 사용하는 침해된 호스트를 무력화하지도 못합니다.
덜 기억하되, 의도적으로 기억하기
SYN 캐시는 첫 노크에서 수신 대기 측이 구매하는 것을 바꿉니다. 전체 TCP 제어 블록을 할당하는 대신, 나중에 핸드셰이크를 완료하기에 충분한 더 작은 기록을 저장합니다. 캐시는 유한하며, RFC 4987은 항목을 비밀 키가 적용된 해시로 분산한다고 기술합니다. 이 세부 사항은 중요합니다. 공개된 버킷 함수라면 전체 캐시에 여유가 있더라도 공격자가 요청을 한 버킷에 집중시킬 수 있습니다. 비밀 분산은 표적 집중을 어렵게 하면서, 명시적 한도가 메모리와 조회 작업을 제한합니다.
캐시는 상태가 없는 것이 아니라 축소된 상태입니다. 만료를 관리해야 하고, 유실된 SYN-ACK을 재전송할 수 있는 서버의 능력을 보존해야 합니다. 회신을 한 번 보내고 재전송 책임을 잊는 설계는 평범한 손실을 연결 실패로 바꿔버립니다. 따라서 캐시의 운영상 미덕은 절제입니다. 비용이 큰 객체를 연기하되, 마지막 ACK 이전에 필요한 전송 동작을 지우지 않습니다.
영수증을 회신 안에 넣기
SYN 쿠키는 같은 원리의 더 강한 버전을 추구합니다. 서버는 개시자에 대한 SYN-RECEIVED 기록을 전혀 유지하지 않습니다. 초기 시퀀스 번호를 구성해 나중 ACK가 교환을 검증하고 연결 상태를 재구성하기에 충분한 증거를 되돌려 담도록 합니다. 유효한 완료 ACK가 도착한 후에야 서버는 전체 제어 블록을 할당합니다.
RFC 4987의 부록 A는 구성 요소를 보여줍니다. 개시자의 시퀀스 번호, 협상된 최대 세그먼트 크기(MSS)의 인코딩, 시간 카운터, 주소와 포트 쌍, 그리고 비밀 함수입니다. ACK가 돌아오면 서버는 회복된 값을 최근 카운터 값과 비밀과 대조합니다. 이는 한 번의 핸드셰이크에 대한 압축된 영수증이지, 사람이나 애플리케이션에 대한 인증이 아닙니다. 이는 ACK 발신자가 SYN-ACK으로부터 정보를 가지고 있었음을, 구성의 추측 저항성을 전제로 보여줄 뿐이며, 지속적인 신원을 확립하지 않습니다.
상태 비저장에도 대가가 있습니다. SYN과 ACK 사이에 평소 유지되는 상태에는 협상된 TCP 옵션이 포함될 수 있습니다. 쿠키는 이를 인코딩할 공간이 제한적이므로, 흔한 구성은 윈도우 스케일링, 선택적 확인(SACK) 또는 미래 옵션 상태를 제약할 수 있습니다. 이 RFC는 또한 SYN에 실린 데이터와 더 미묘한 재전송 문제를 지적합니다. 마지막 ACK가 유실되고 애플리케이션이 클라이언트 데이터를 받을 때까지 대기한다면, 서버에는 SYN-ACK을 재전송할 상태가 없을 수 있습니다. 자원 약속은 지연되었지만 일부 프로토콜 기억도 함께 지연된 것입니다.
선택은 절대적일 필요가 없습니다. 수신 대기 측은 평시 압박에서는 SYN 캐시를 사용하다가 유한한 캐시가 가득 차면 쿠키로 전환할 수 있습니다. 하이브리드 방식은 용량이 남는 동안에는 풍부한 협상을 보존하고, 과부하 시에는 상태 비저장 영수증을 아껴 둡니다. 방화벽과 프록시는 관련된 중재를 수행할 수 있지만, 상태 부담을 옮기고 엔드투엔드 의미를 바꿀 수 있습니다. 이들은 자원 결정을 폐지하는 것이 아니라 위치를 옮길 뿐입니다.
RFC 4987은 2007년 8월에 발표된 Informational 문서로, Standards Track 의무 사항이 아닙니다. 이 문서의 분석은 당시 기준으로 SYN 캐시와 SYN 쿠키를 실행 가능한 엔드포인트 변경으로 보면서, 트레이드오프가 수용 가능한 곳에서는 캐시를 더 쉬운 기본값으로 다룹니다. 이는 역사적 권고이며, 현재 어떤 운영체제가 무엇을 지원하는지에 대한 증거가 아닙니다.
지속적인 기여는 하나의 제어 규칙입니다. 더 저렴하고 되돌릴 수 있는 표현이 교환을 계속 진행할 수 있다면, 첫 검증되지 않은 메시지에서 비싸고 희소하며 공격자가 유도하는 커밋을 하지 말라는 것입니다. 개시자가 회신에서 온 증거를 돌려줄 때까지 전체 상태를 지연하십시오. 증거는 불완전하고 지연은 유용한 맥락을 폐기할 수 있으므로, 메커니즘은 절약하는 자원과 약화하는 의미를 모두 노출해야 합니다.
유일한 출처는RFC 4987, “TCP SYN Flooding Attacks and Common Mitigations”입니다. 이 문서의 주장은 여기서 TCP 엔드포인트 상태, 이 RFC가 평가하는 방어책과 그 명시된 한계로 제한됩니다. 현재의 기본값, 배포 비중 또는 공격 빈도를 확립하지 않습니다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





