카테고리 없음

TCP SYN Flooding 공격

텍엔카 2024. 11. 30. 06:00
728x90

1. 개요
TCP SYN Flooding은 DDoS(Distributed Denial of Service) 공격의 일종으로, TCP 3-way Handshake 과정을 악용하여 서버의 연결 자원을 고갈시키는 공격이다. 공격자는 다량의 SYN 패킷을 전송하고, 정상적인 3-way Handshake를 완료하지 않음으로써 서버가 연결 요청을 처리하지 못하게 만듭니다.

2. 공격 원리
   1) TCP 3-way Handshake 과정 (TCP 3단계 과정을 통해 설정)
       ① SYN(Synchronize) : 클라이언트가 서버에 연결 요청을 보냄
       ② SYN-ACK(Synchronize-Acknowledge) : 서버가 클라이언트 요청을 승인하고 응답
       ③ ACK(Acknowledge) : 클라이언트가 서버 응답을 확인하며 연결 설정 완료

 

   2) SYN Flooding 공격의 원리
       ① 공격자는 서버로 다량의 SYN 패킷을 보냄
       ② 서버는 SYN-ACK 패킷을 응답하며 연결을 대기 상태로 유지
       ③ 클라이언트(공격자)는 최종 ACK를 보내지 않음
       ④ 결과적으로 서버의 백로그 큐(Backlog Queue)가 가득 차서 새로운 연결 요청을 처리하지 못하게 됨

 

   3) 공격의 특징
        - 공격자는 IP 스푸핑을 통해 출발지 주소를 위조해, 추적을 어렵게 만듦
        - 정상적인 SYN 패킷과 유사하기 때문에 탐지가 어려움
        - 서버의 메모리와 CPU를 소모시켜 서비스 중단을 유발

 

3. 탐지 방법
   1) 네트워크 트래픽 분석
       - Wireshark 또는 tcpdump와 같은 네트워크 분석 도구로 비정상적인 SYN 패킷의 급증을 확인
       - 정상적인 TCP 3-way Handshake의 완료율이 낮아지거나, SYN 요청이 대량으로 발생하는 패턴을 탐지
   2) 로그 및 모니터링
       - 방화벽 또는 IDS/IPS 로그에서 비정상적인 연결 시도 증가를 확인.
       - 네트워크 모니터링 도구(Zabbix, Nagios)를 통해 SYN 패킷의 폭주를 감지.
   3) Backlog 큐 확인
       - 서버의 netstat 명령어로 연결 상태 확인 :  netstat -an | grep SYN
       - SYN 상태의 연결이 비정상적으로 많으면 공격 가능성 있음
   4) 트래픽 비율 분석
       - SYN 패킷과 ACK 패킷의 비율이 비정상적(예: SYN 비율이 지나치게 높은 경우)일 때 공격 의심

 

4. 대응 방법

   1) 네트워크 레벨 대응
       ① SYN Cookie 활성화
           - SYN Cookie는 서버가 백로그 큐를 사용하지 않고 SYN 요청을 처리하도록 함
           - Linux에서 활성화 : echo 1 > /proc/sys/net/ipv4/tcp_syncookies
           - SYN Cookie는 백로그 큐를 우회하여 메모리 소모를 줄이고, 공격을 완화
       ② 방화벽 설정
           - IPTables로 SYN 패킷 속도를 제한 : iptables -A INPUT -p tcp --syn -m limit --limit 10/second -j ACCEPT
           - 특정 IP에서 과도한 SYN 요청이 발생하면 차단
       ③ Rate Limiting : 라우터나 스위치에서 클라이언트당 연결 속도를 제한.
       ④ DDoS 방어 솔루션 : Cloudflare, AWS Shield, Akamai 등에서 제공하는 DDoS 방어 서비스를 활용

 

   2) 서버 설정 변경
       ① 백로그 큐 크기 조정
           - 서버가 대기 상태의 연결을 처리할 수 있는 큐 크기를 늘림
           - Linux 설정 : echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
       ② TCP 타임아웃 감소
           - 백로그 큐에서 오래된 연결을 빨리 제거 : echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
       ③ 불완전 연결 제한
           - 백로그 큐의 연결 제한을 강화 : echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow

 

   3) 어플리케이션 레벨 대응
       - WAF(Web Application Firewall) 사용 : 공격 패턴을 탐지하고 차단
       - 로드 밸런싱 : 여러 서버에 트래픽을 분산시켜 한 서버의 자원이 고갈되는 것을 방지

 

   4) 사후 조치
       - 공격 소스 차단 : 공격에 사용된 IP를 추적하여 차단
       - ISP와 협력 : 대규모 공격 발생 시 인터넷 서비스 제공업체(ISP)와 협력하여 공격 트래픽을 차단

 

5. 예방 조치
   - 정기적인 보안 점검 : 서버 설정 및 네트워크 방화벽 규칙을 정기적으로 점검
   - 최신 보안 업데이트 적용 : 운영 체제와 네트워크 장비의 보안 패치를 최신 상태로 유지
   - DDoS 방어 훈련 : DDoS 공격 시나리오를 가정한 모의 훈련을 통해 대응 전략 강화
   - 로그 및 트래픽 모니터링 자동화 : 이상 트래픽을 자동으로 탐지하고 대응할 수 있는 시스템 구축

 

728x90