tcp syn cookies backlog queue

agnusdei·2024년 7월 20일
0

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 ⚙️ + CTF🚩

0개의 댓글