2007년 8월 27일 월요일

원치 않은 SYN flooding 공격

서버를 운영하다보면 별의 별 일이 다 생기는데, 공격이 아닌데 공격처럼 보이는 경우가 가끔씩 있다. TCP 접속은 3-way hand shaking 순서로 이뤄지는데, 이때 네트워크가 쀍스럽게 느릴 때, 원치 않는 공격이 발생할 수 있다.





clientserver
--- SYN --->
<--- ACK/SYN ---
--- ACK --->


뭐 이런건데, 최초 SYN을 보낼 때, 클라이언트 OS는 타이머를 시작할 것이다. 그런데 망이 그지 같아서 SYN이 겁놔 느리게 서버에 도착했을 경우(간신히 TTL은 넘지 않은 상태에서) 서버는 ACK/SYN을 보낼테지만, 역시나 너무 느려서 클라이언트 OS 타이머는 타임아웃을 보낼꺼고 connect 실패를 반환할 것이다. 여기까지는 별 문제 없지만, 일반적인 어플리캐이션은 보통 3번 정도 retry를 하며 그만큼 SYN을 날리고 실패할 것이다. 이때 이런 것을 해당 지역에 수많은 클라이언트들이 동시에 한다면 원치 않는 DDoS가 될 수 있다.