發表文章

目前顯示的是 5月, 2017的文章

SYN_FLOOD Apache 的 SYN_RECV數 最大只有 256 ?

圖片
環境 CentOS 7,Apache 2.4 新安裝的Server,的確如遭遇SYN_FLOOD時,很容易就達到預設的SYN上限256。Google了很多,很多文章都教直接修改 net.ipv4.tcp_max_syn_backlog=128 ,去一個更大的值例如 1024。 但在Kernel2.6之後呢,有些文章指出,Apache的Backlog是依據另一個參數 net.core.somaxconn=128去做Backlog。因為兩個值的預設值都是128,所以可能比較容易混淆。兩個值都設到1024或以上(視乎RAM)是比較好。  我的機器設置了兩個IP,同一個Apache服務器,當其中一個IP受到SYN_FLOOD攻擊時,另一個IP的Virtual Host居然沒受到影響,可見系統資源是遊刃有餘,可是因為SYN_RECV的上限是256,所以過長的隊列讓Virtual Host變得不穩定。 正題,設置 sysctl -w net.core.somaxconn=1024    #修改 httpd.conf vi httpd.conf 增加 ListenBacklog 800  #註: 如果沒加這句,預設值是511,因為ListenBacklog是mpm類,所以我是加到mpm中。如果不設置,他的值就是511,所以不設置也是OK的。 #重啟Apache systemctl stop httpd.service systemctl start httpd.service #測試 輸入指令 ss -lti '( sport = :http )' 得出以下類似結果,注意Send-Q的Listen有你剛剛設置的數值 State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port    LISTEN     0      800       :::http...