Apache Server Status主機狀態查看


10月30日,國外安全研究人員發現由於對apache設置不嚴,導致服務器狀態暴露於公網。本來apache有一個叫server-status 的功能,為方便管理員檢查服務器運行狀態的。它是一個HTML頁面,可以顯示正在工作的進程數量,每個請求的狀態,訪問網站的客戶端ip地址,正在被請求 的頁面。

但是如果這個頁面對公網開放,就會存在一些安全隱患,例如任何人口可以看到誰在訪問網站,甚至包括一些本來隱藏的管理頁面。

 

如果沒有加載這個模塊,如果您是linux服務器,那么就需要您重新編譯apache了,編譯的時候加上參數--enable-module=so即可, 如果你是windows系統的話,無需任何編譯,只要把剛才時候說的LoadModule status_module modules/mod_status.so這句加上,如果前面有帶#號,開啟的話,需要將#去除。

http://192.168.99.99/Server-status?refresh=N將表示訪問狀態頁面可以每N秒自動刷新一次;

在httpd.conf 增加

#-Apache Server Status--------------

ExtendedStatus On

<Location /Server-status>

SetHandler Server-status

Order deny,allow

Deny from all

Allow from 192.168.99.99

</Location>

##--Apache Server Status--end---------

Deny from表示禁止的訪問地址,如果訪問報錯可將此行注釋,但是安全性會降低;

Allow from表示允許的地址訪問。這里應該寫允許的客戶端IP,似乎不應該是域名

ExtendedStatus On表示的是待會訪問的時候能看到詳細的請求信息,另外該設置僅能用於全局設置,不能在特定的虛擬主機中打開或關閉。啟用擴展狀態信息將會導致服務器運行效率降低。

http://192.168.99.99/Server-status

默認為查看第一個虛擬主機的信息。。。

 

Apache Server Status for aa.bb.com
Server Version: Apache
Server Built: Apr 4 2010 17:19:54
Current Time: Friday, 30-Jul-2010 14:58:01 CST
Restart Time: Friday, 30-Jul-2010 14:57:38 CST
Parent Server Generation: 0
Server uptime: 23 seconds
Total accesses: 1 - Total Traffic: 1 kB
CPU Usage: u0 s0 cu0 cs0
.0435 requests/sec - 44 B/second - 1024 B/request
1 requests currently being processed, 9 idle workers
Scoreboard Key:
"
_
" Waiting for Connection, "
S
" Starting up, "
R
" Reading Request,
"
W
" Sending Reply, "
K
" Keepalive (read), "
D
" DNS Lookup,
"
C
" Closing connection, "
L
" Logging, "
G
" Gracefully finishing,
"
I
" Idle cleanup of worker, "
.
" Open slot with no current process
Srv 	PID 	Acc 	M 	CPU 	SS 	Req 	Conn 	Child 	Slot 	Client 	VHost 	Request
0-0 	9297 	0/1/1 	_ 	0.00 	11 	134 	0.0 	0.00 	0.00 	114.92.*.222 	aa.bb.com 	GET /SEC HTTP/1.1
1-0 	9306 	0/0/0 	W 	0.00 	0 	0 	0.0 	0.00 	0.00 	114.92.*.222 	aa.bb.com 	GET /Server-status HTTP/1.1
Srv 	Child Server number - generation
PID 	OS process ID
Acc 	Number of accesses this connection / this child / this slot
M 	Mode of operation
CPU 	CPU usage, number of seconds
SS 	Seconds since beginning of most recent request
Req 	Milliseconds required to process most recent request
Conn 	Kilobytes transferred this connection
Child 	Megabytes transferred this child
Slot 	Total megabytes transferred this slot
Apache Server at aa.bb.com Port 80

 

 

server-status 的輸出中每個字段所代表的意義如下:
字段                       說明
Server Version       Apache 服務器的版本。
Server Built            Apache 服務器編譯安裝的時間。
Current Time          目前的系統時間。
Restart Time           Apache 重新啟動的時間。
Parent Server Generation       Apache 父程序 (parent process) 的世代編號,就是 httpd 接收到 SIGHUP 而重新啟動的次數。
Server uptime         Apache 啟動后到現在經過的時間。
Total accesses        到目前為此 Apache 接收的聯機數量及傳輸的數據量。
CPU Usage            目前 CPU 的使用情形。
_SWSS....       所有 Apache process 目前的狀態。每一個字符表示一個程序,最多可以顯示 256 個程序的狀態。
Scoreboard Key       上述狀態的說明。以下為每一個字符符號所表示的意義:
 
* _:等待連結中。
* S:啟動中。
* R: 正在讀取要求。
* W:正在送出回應。
* K:處於保持聯機的狀態。
* D:正在查找 DNS。
* C:正在關閉連結。
* L:正在寫入記錄文件。
* G:進入正常結束程序中。
* I:處理閑置。
* .:尚無此程序。
 
Srv       本程序與其父程序的世代編號。
PID       本程序的 process id。
Acc       分別表示本次聯機、本程序所處理的存取次數。
M       該程序目前的狀態。
CPU       該程序所耗用的 CPU 資源。
SS       距離上次處理要求的時間。
Req       最后一次處理要求所耗費的時間,以千分之一秒為單位。
Conn       本次聯機所傳送的數據量。
Child       由該子程序所傳送的數據量。
Slot       由該 Slot 所傳送的數據量。
Client       客戶端的地址。
VHost       屬於哪一個虛擬主機或本主機的 IP。
Request       聯機所提出的要求信息。
 
查看Apache的請求數和開啟Apache Server Status 
在Linux下查看Apache的負載情況,最簡單有有效的方式就是查看Apache Server Status,在沒有開啟Apache Server Status的情況下,或安裝的是其他的Web Server,比如Nginx的時候,下面的命令就體現出作用了。
ps -ef|grep httpd|wc -l命令
#ps -ef|grep httpd|wc -l
1388
統計httpd進程數,連個請求會啟動一個進程,使用於Apache服務器。
表示Apache能夠處理1388個並發請求,這個值Apache可根據負載情況自動調整,我這組服務器中每台的峰值曾達到過2002。
 
netstat -nat|grep -i “80″|wc -l命令
#netstat -nat|grep -i “80″|wc -l
4341
netstat -an會打印系統當前網絡鏈接狀態,而grep -i “80″是用來提取與80端口有關的連接的, wc -l進行連接數統計。
最終返回的數字就是當前所有80端口的請求總數。
 
netstat -na|grep ESTABLISHED|wc -l命令
#netstat -na|grep ESTABLISHED|wc -l         ---------個人測試此命令比較准確
376
netstat -an會打印系統當前網絡鏈接狀態,而grep ESTABLISHED 提取出已建立連接的信息。 然后wc -l統計。
最終返回的數字就是當前所有80端口的已建立連接的總數。
 
netstat -nat||grep ESTABLISHED|wc -   可查看所有建立連接的詳細記錄
 
查看Apache的並發請求數及其TCP連接狀態:
Linux命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(這條語句非常不錯)
返回結果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數;ESTABLISHED表示正常數據傳輸狀態;TIME_WAIT表示處理
完畢,等待超時結束的請求數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM