檢視httpd程序數(即prefork模式下apache能夠處理的併發請求數):
linux命令:
返回結果示例:
1388
表示apache能夠處理1388個併發請求,這個值apache可根據負載情況自動調整,我這組伺服器中每台的峰值曾達到過2002。
檢視apache的併發請求數及其tcp連線狀態:
linux命令:
netstat -n | awk '/^tcp/ end '
返回結果示例:
last_ack 5
syn_recv 30
established 1597
fin_wait1 51
fin_wait2 504
time_wait 1057
其中的syn_recv表示正在等待處理的請求數;established表示正常資料傳輸狀態;time_wait表示處理完畢,等待超時結束的請求數。
關於tcp狀態的變遷,可以從下圖形象地看出:
狀態:描述
closed:無連線是活動的或正在進行
listen:伺服器在等待進入呼叫
syn_recv:乙個連線請求已經到達,等待確認
syn_sent:應用已經開始,開啟乙個連線
established:正常資料傳輸狀態
fin_wait1:應用說它已經完成
fin_wait2:另一邊已同意釋放
itmed_wait:等待所有分組死掉
closing:兩邊同時嘗試關閉
time_wait:另一邊已初始化乙個釋放
last_ack:等待所有分組死掉
netstat 工具來檢測syn攻擊
# netstat -n -p -t
tcp0 0 10.11.11.11:23124.173.152.8:25882 syn_recv-
tcp0 0 10.11.11.11:23236.15.133.204:2577 syn_recv-
tcp0 0 10.11.11.11:23127.160.6.129:51748 syn_recv-
...linux系統中看到的,很多連線處於syn_recv狀態(在windows系統中是syn_received狀態),
源ip位址都是隨機的,表明這是一種帶有ip欺騙的syn攻擊。
# netstat -n -p -t | grep syn_recv | grep :80 | wc -l
324檢視在linux環境下某個端囗的未連線佇列的條目數,顯示tcp端囗22的未連線數有324個,
雖然還遠達不到系統極限,但應該引起管理員的注意。
[root@pub wxjsr]# netstat -na | grep syn_recv
tcp 0 0 58.193.192.20:80 221.0.108.162:32383 syn_recv
tcp 0 0 58.193.192.20:80 125.85.118.231:2601 syn_recv
tcp 0 0 58.193.192.20:80 222.242.171.215:2696 syn_recv
tcp 0 0 58.193.192.20:80 116.52.10.51:2629 syn_recv
tcp 0 0 58.193.192.20:80 218.171.175.157:1117
[root@pub wxjsr]# netstat -na | grep syn_recv |wc
11 66 979
檢視系統syn相關的配置
[root@metc apache2]# /sbin/sysctl -a | grep syn
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.eth0.max_desync_factor = 600
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.tcp_max_syn_backlog = 1280
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
fs.quota.syncs = 18
防範syn攻擊設定
iptables -a forward -p tcp --syn -m limit --limit 1/s -j accept
iptables -a input -i eth0 -m limit --limit 1/sec --limit-burst 5 -j accept
#每秒 最多3個 syn 封包 進入 表達為 :
iptables -n syn-flood
iptables -a input -p tcp --syn -j syn-flood
iptables -a syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j return
iptables -a syn-flood -j reject
#設定syncookies:
sysctl -w net.ipv4.tcp_syncookies=1
/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000
/sbin/sysctl -w net.ipv4.tcp_synack_retries=1
/sbin/sysctl -w net.ipv4.tcp_syn_retries=1
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.forwarding=0
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
/sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由選項
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping廣播包,應開啟
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping資料,覆蓋上一項
[**]
檢視Apache併發請求數及其TCP連線狀態
prefork mpm startservers number of server processes to start minspareservers minimum number of server processes which are kept spare maxspareservers m...
檢視Apache併發請求數及其TCP連線狀態
這兩天搭建了一組apache伺服器,每台伺服器4g記憶體,採用的是prefork模式,一開始設定的連線數太少了,需要較長的時間去響應使用者的請求,後來修改了一下apache 2.0.59的配置檔案httpd.conf 引用 prefork mpm startservers number of ser...
檢視Apache併發請求數及其TCP連線狀態
這兩天搭建了一組apache伺服器,每台伺服器4g記憶體,採用的是prefork模式,一開始設定的連線數太少了,需要較長的時間去響應使用者的請求,後來修改了一下apache 2.0.59的配置檔案httpd.conf prefork mpm startservers number of server...