tcp syn cookies backlog queue

agnusdei·2024년 7월 20일

TCP SYN 플러딩 공격 대응 원리

TCP SYN 플러딩 공격은 대량의 TCP 연결 요청(SYN 패킷)을 보내 서버의 자원을 고갈시키고, 정상적인 연결 요청을 처리하지 못하게 하는 공격입니다. 이를 방지하기 위해 주로 두 가지 방법을 사용합니다:

  1. 백로그 큐 크기 조정
  2. SYN 쿠키 활성화

1. 백로그 큐 크기 조정

백로그 큐는 아직 완전히 설정되지 않은 연결 요청을 보관하는 대기열입니다. 백로그 큐가 가득 차면 서버는 새로운 연결 요청을 거부하게 됩니다. 따라서, 백로그 큐의 크기를 늘리면 더 많은 연결 요청을 처리할 수 있습니다.

백로그 큐 크기를 조정하는 방법:

# 현재 백로그 큐 크기 확인
sysctl net.ipv4.tcp_max_syn_backlog

# 백로그 큐 크기 설정 (예: 2048)
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=2048

이 설정을 영구적으로 유지하려면 /etc/sysctl.conf 파일에 다음 라인을 추가합니다:

net.ipv4.tcp_max_syn_backlog=2048

2. SYN 쿠키 활성화

SYN 쿠키는 서버가 백로그 큐가 가득 찼을 때도 클라이언트의 연결 요청을 처리할 수 있도록 하는 기술입니다. SYN 쿠키의 원리는 다음과 같습니다:

  1. SYN 패킷 수신: 클라이언트가 서버에 연결을 시도하면 SYN 패킷을 보냅니다.
  2. SYN-ACK 패킷 전송: 서버는 백로그 큐에 여유가 없을 경우, 기존의 방식으로 백로그 큐에 항목을 추가하지 않고, SYN 패킷을 기반으로 한 쿠키 값을 생성하여 SYN-ACK 패킷에 포함시켜 클라이언트에게 보냅니다.
  3. ACK 패킷 수신: 클라이언트가 서버의 SYN-ACK 패킷을 수신하고, ACK 패킷을 서버에 전송합니다. 이 ACK 패킷에는 서버가 보낸 쿠키가 포함되어 있습니다.
  4. 쿠키 검증: 서버는 클라이언트의 ACK 패킷에 포함된 쿠키를 검증하여 유효한 경우 연결을 설정합니다.

SYN 쿠키 활성화 방법:

# 현재 SYN 쿠키 설정 확인
sysctl net.ipv4.tcp_syncookies

# SYN 쿠키 활성화
sudo sysctl -w net.ipv4.tcp_syncookies=1

이 설정을 영구적으로 유지하려면 /etc/sysctl.conf 파일에 다음 라인을 추가합니다:

net.ipv4.tcp_syncookies=1

예시

  1. 백로그 큐 크기 조정:

    sudo sysctl -w net.ipv4.tcp_max_syn_backlog=2048
    echo "net.ipv4.tcp_max_syn_backlog=2048" | sudo tee -a /etc/sysctl.conf
  2. SYN 쿠키 활성화:

    sudo sysctl -w net.ipv4.tcp_syncookies=1
    echo "net.ipv4.tcp_syncookies=1" | sudo tee -a /etc/sysctl.conf

결론

TCP SYN 플러딩 공격에 대응하기 위해 백로그 큐 크기를 조정하고 SYN 쿠키를 활성화하는 것은 매우 효과적인 방법입니다. 백로그 큐 크기를 늘리면 더 많은 연결 요청을 처리할 수 있고, SYN 쿠키를 사용하면 백로그 큐가 가득 찼을 때도 정상적인 연결 요청을 처리할 수 있습니다. 이 두 가지 방법을 통해 서버를 SYN 플러딩 공격으로부터 보호하고 안정적인 네트워크 서비스를 제공할 수 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글