/proc/sys/net/ipv4/tcp_syncookies
所謂的阻斷式服務(DoS)攻擊法中的一種方式,就是利用tcp數據包SYN的3次握手原理實現的,這種方式稱為SYN Flooding,如何預防這種方式的攻擊,我們可以啟用內核的SYN Cookie模塊。這個SYN Cookie模塊可以在系統用來啟動隨機聯機的端口(1024:65535)即將用完時自動啟動
當啟動SYN Cookie時,主機在發送SYN/ACK確認數據包前,會要求Client端在短時間內回復一個序號,這個序號包含許多原SYN數據包內的信息,包括IP、port等,若Client端可以回復正確的序號,那麼主機就確定該數據包為可信的,因此會發送SYN/ACK數據包,否則就不理會此數據包
通過此機制可以大大降低無效的SYN等待端口,避免SYN Flooding的DoS攻擊:
# echo "1" > /proc/sys/net/ipv4/tcp_syncookies
這個設置值由於違反了TCP的3次握手(因為主機在發送SYN/ACK之前需要先等待Client的序號響應)所以可能會造成某些服務的延遲現象,例如SMTP(mail server),不過總的來說,這個設置還是不錯的,只是不適合用在負載已經很高的服務器內,因為負載太高的主機有時會讓內核誤判遭受SYN Flooding攻擊內核取消ping響應的設置有兩個:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts和/proc/sys/net/ipv4/icmp_echo_ignore_all