發表文章

目前顯示的是有「Apache」標籤的文章

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...

htaccess 的 Order allow,deny 迷思 [簡易版]

近日再做htaccess,發現自己也遺忘了許多,本文不會做多高深的討論htaccess能做甚麼,只是簡單的再說明一下,htaccess裡面 Order allow,deny的邏輯思維。 首先在httpd.conf中,要先把AllowOverride設成all(或你想要的權限),這樣htaccess才有權力去做細部管理。 大家都知道.htaccess可以細部調節網站內每個目錄的細部權限,其中有一個很受歡迎的做法,就是Block IP 或 Block Region。一般做法像這樣.. order allow,deny deny from 123.123.123.123 allow from all 意思是允許所有人訪問,除了123.123.123.123的訪問。 所以當有一個來自111.123.111.112的 IP 訪問網站,他會匹配到 allow from all ,並且沒deny,予以通行。 其實 .htaccess裡面 共沒有上下順序這東西,allow與deny的順序是由order來決定,而後者會比前者的權限來的高(觀念上是這樣啦),所以如果有一個訪問附合allow與deny兩條rule,以上面的order來說,最後會跑deny的rule。 例: order deny,allow deny from 192.168.100.0/24 allow from 192.168.100.100 這例子有點古怪,不過可以表達我的邏輯。如果有一個訪問是從192.168.100.100過來,他會匹配到deny from 192.168.100.0/24和allow from 192.168.100.100兩條rule,他會先檢查deny, 禁止訪問,再檢查allow,予以通行,即192.168.100.100最後是可以訪問的。而另外還有一個210.47.84.234的外部IP來訪問的話,他到底匹配了甚麼呢? 答案是兩條都不匹配,結果會是...予以通行。 因為如果deny與allow都不匹配的話,會以order的最後順序來決定訪問權,即是上例的allow。 好,到目前為止應該尚算清楚。以下是一條我實際操作過的疑團(本身沒那麼謎的,是搞神秘而已) order deny,allow deny from 192.168.100....