SYN 폭주는 웹 서비스를 중단할 수 있도록 TCP/IP 핸드셰이크에 존재하는 취약성을 이용합니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
SYN 폭주(반개방 공격)는 사용 가능한 모든 서버 자원을 소비하여, 합법적인 트래픽에 대해 서버를 사용 불가능하게 만드는 것이 목표인 서비스 거부(DDos) 공격의 한 유형입니다. 공격자는 초기 연결 요청(SYN) 패킷을 반복적으로 전송하여 표적 서버 컴퓨터에 있는 사용 가능한 모든 포트를 압도함으로써, 표적 장치가 합법적인 트래픽에 느리게 응답하거나 전혀 응답하지 못하게 할 수 있습니다.
SYN 폭주 공격은 TCP 연결의 핸드셰이크 프로세스를 이용하는 방식으로 작동합니다. 정상적인 조건에서 TCP 연결은 연결을 위한 세 가지 다른 프로세스를 보여줍니다.
서비스 거부를 생성하기 위해 공격자는 초기 SYN 패킷이 수신된 후 서버가 하나 이상의 SYN/ACK 패킷으로 다시 응답하고 핸드셰이크의 마지막 단계를 기다린다는 사실을 이용합니다. 작동 방식은 다음과 같습니다.
네트워킹에서는 한 서버가 어떤 연결을 열린 상태로 두고 있는데 이 연결의 다른 쪽에 있는 컴퓨터가 그렇지 않은 경우 이 연결을 반개방 상태인 것으로 간주합니다. 이러한 유형의 DDoS 공격에서는 포트를 다시 사용할 수 있게 되기 전에 표적 서버가 열린 연결을 지속적으로 유지하고 각 연결 시간이 초과 되기를 기다립니다. 그 결과는 이러한 유형의 공격을 "반개방 공격"으로 간주할 수 있다는 것입니다.
SYN 폭주 공격을 사용함으로써 부정 행위자는 다른 DDoS 공격보다 트래픽이 상당히 적은 표적 장치 또는 서비스에 서비스 거부를 생성하는 것을 시도할 수 있습니다. 표적 주위의 네트워크 인프라를 포화 상태로 만드는 것이 목표인 볼류메트릭 공격 대신 SYN 공격은 표적 운영 체제에서 사용 가능한 백로그보다 크기만 하면 됩니다. 공격자가 백로그의 크기와 각 연결이 시간 초과되기 전에 얼마나 오래 열린 상태로 남아 있게 되는지 확인할 수 있다면 공격자는 시스템을 비활성화하는 데 필요한 정확한 매개 변수를 표적으로 지정할 수 있으므로 총 트래픽을 필요한 최소량으로 줄여 서비스 거부를 생성할 수 있습니다.
SYN 폭주 취약성은 오랫동안 알려져 있었으므로 여러 가지 완화 경로가 활용되어 왔습니다. 다음과 같은 몇 가지 접근 방법이 있습니다.
표적 장치의 각 운영 체제는 허용된 특정 수의 반개방 연결을 가지고 있습니다. SYN 패킷의 높은 볼륨에 대한 한 가지 응답은 운영 체제에서 허용하는 반개방 연결의 가능한 최대 수량을 늘리는 것입니다. 최대 백로그를 증가시키려면 모든 새 요청을 처리할 추가 메모리 리소스를 예약해야 합니다. 시스템에 메모리가 부족하여 증가한 백로그 대기열 크기를 처리할 수 없는 경우 시스템 성능에 부정적인 영향을 미치지만 이는 여전히 서비스 거부보다 나을 수 있습니다.
또 다른 완화 전략은 백로그가 채워지면 가장 오래된 반개방 연결을 덮어쓰는 것입니다. 이 전략을 사용하려면 백로그를 악의적인 SYN 패킷으로 채울 수 있는 것보다 더 짧은 시간 내에 합법적인 연결을 완전히 설정할 수 있어야 합니다. 공격량이 증가하거나 실제로 적용하기에는 백로그 크기가 너무 작은 경우 이러한 특정 방어는 실패합니다.
이 전략에는 서버에 의한 쿠키 생성이 포함됩니다. 백로그가 채워졌을 때 연결이 끊어질 위험을 방지하기 위해 서버는 각 연결 요청에 SYN-ACK 패킷과 함께 응답한 다음 백로그에서 SYN 요청을 끊어 요청을 메모리에서 제거하고 포트를 개방 상태로 남겨두고 새 연결을 만들 준비를 합니다. 연결이 합법적인 요청이고 최종 ACK 패킷이 클라이언트 시스템에서 서버로 다시 전송되는 경우 서버는 SYN 백로그 대기열 항목을 (일부 제한 사항과 함께) 재구성합니다. 이러한 완화 활동은 TCP 연결에 대한 일부 정보를 손실하지만, 공격의 결과로 합법적인 사용자에게 서비스가 거부되도록 허용하는 것보다는 낫습니다.
Cloudflare는 표적 서버와 SYN 폭주 사이에 존재하기 때문에 이러한 유형의 공격을 부분적으로 완화합니다. 초기 SYN 요청이 이루어지면 Cloudflare는 클라우드에서 핸드셰이크 프로세스를 처리하여 TCP 핸드셰이크가 완료될 때까지 표적 서버와의 연결을 보류합니다. 이러한 전략은 표적 서버에서 가짜 SYN 패킷과의 연결을 유지하기 위해 필요한 리소스 비용을 줄이고 이를 Cloudflare의 Anycast 네트워크에 배치합니다. Cloudflare의 DDoS 보호 작동 방식에 관해 더 자세히 알아보십시오.