TCP SYN 플러딩 공격은 대량의 TCP 연결 요청(SYN 패킷)을 보내 서버의 자원을 고갈시키고, 정상적인 연결 요청을 처리하지 못하게 하는 공격입니다. 이를 방지하기 위해 주로 두 가지 방법을 사용합니다:
백로그 큐는 아직 완전히 설정되지 않은 연결 요청을 보관하는 대기열입니다. 백로그 큐가 가득 차면 서버는 새로운 연결 요청을 거부하게 됩니다. 따라서, 백로그 큐의 크기를 늘리면 더 많은 연결 요청을 처리할 수 있습니다.
백로그 큐 크기를 조정하는 방법:
# 현재 백로그 큐 크기 확인
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
SYN 쿠키는 서버가 백로그 큐가 가득 찼을 때도 클라이언트의 연결 요청을 처리할 수 있도록 하는 기술입니다. SYN 쿠키의 원리는 다음과 같습니다:
SYN 쿠키 활성화 방법:
# 현재 SYN 쿠키 설정 확인
sysctl net.ipv4.tcp_syncookies
# SYN 쿠키 활성화
sudo sysctl -w net.ipv4.tcp_syncookies=1
이 설정을 영구적으로 유지하려면 /etc/sysctl.conf 파일에 다음 라인을 추가합니다:
net.ipv4.tcp_syncookies=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
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 플러딩 공격으로부터 보호하고 안정적인 네트워크 서비스를 제공할 수 있습니다.