檢視Apache的併發請求數及其TCP連線狀態

2021-06-18 12:33:47 字數 3444 閱讀 6533

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