Linux

possible SYN flooding on port 80. Sending cookies 에 대한 대응책(?)

CHOMAN 2015. 6. 12. 11:17

syslog (/var/log/messages)

Jun 24 18:56:35 localhost kernel: possible SYN flooding on port 80. Sending cookies.  

좀 심한 경우라면 아래와 같이 로그가 남을수가 있다....

possible SYN flooding on port 80. Sending cookies.  
TCP: too many of orphaned sockets  
Out of socket memory  

백로그큐 확인 (1024) 적당...

[root@localhost ~]# sysctl -a | grep syn_back  
net.ipv4.tcp\_max_syn_backlog = 1024

SYN 공격시 초당 몇만개의 스푸핑아이피들이 들어오므로 해결방법은 되지 못한다.
접속자가 일시적으로 늘어나는 경우는 1024 값을 조금씩 높여본다

syncookie 기능

[root@localhost ~]# sysctl -a | grep syncookie  
net.ipv4.tcp_syncookies = 1

이 기능이 활성화 되어 있을때 possible SYN flooding on port 80. Sending cookies. 메세지 출력된다고 함

위 기능은 최근 / 최신 커널들에 기본적으로 활성화 되어 있으므로 별신경 안 써도 됨

SYN 관련 도움이 될만한 커널 옵션..

sysctl -w net.ipv4.tcp_max_syn_backlog=16384  
sysctl -w net.ipv4.tcp_syn_retries=3  
sysctl -w net.ipv4.tcp_keepalive_time=30  
sysctl -w net.ipv4.tcp_fin_timeout=30  
sysctl -w net.ipv4.tcp_tw_buckets=720000  
sysctl -w net.ipv4.tcp_keepalive_probes=2  
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

netstat -anlp | wc -l

SYN 갯수는 항상 256개 유지 (한계치일듯)

과도한 SYN 공격이나 접속자 요청시 서버를 요청하는 수에 비례하여 늘려야 한다.