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表示处理
完毕,等待超时结束的请求数。

Apache Server Status主机状态查看的更多相关文章

  1. 开启Apache Server Status

    开启Apache Server Status 发布时间:August 1, 2008 分类:Apache <DdZend工具提供下载> <PHP中MD5函数效率> Apache ...

  2. Apache Server Status详解

    Apache的日志如果靠分析日志或者查看服务器进程来监视Apache运行状态的话,比较繁冗.不过在Apache 1.3.2及以后的版本中就自带一个查看Apache状态的功能模块server-statu ...

  3. Linux下apache日志分析与状态查看方法

    假设apache日志格式为:118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 30 ...

  4. Linux 下 apache 日志分析与状态查看[转]

    假设apache日志格式为: 118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 3 ...

  5. apache配置apache server status,监控服务器访问情况

    在apache配置文件中添加开启代码, 1.如果你的Apache配置文件httpd.conf或者extra/httpd-info.conf中有LoadModule status_module modu ...

  6. ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析

    我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的.在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表 ...

  7. Apache开启状态查看页面(原创贴-转载请注明出处)

    =================写在前面的话================== 场景描述:有时候我们需要查看apache的运行状态,只需要开启apache的status功能就可以实现,但是stat ...

  8. Host status showing red icon in chronograph, Chronograf主机列表页显示主机状态为红色标志

    刚开始全部装好的时候主机显示的状态是绿色的,过了些日子我再打开看的时候就变成红色的了,点击主机进去查看的时候没有了图表数据,大概是这样子的, 在influxdb数据库主机上执行命令curl " ...

  9. Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面

    Httpd服务入门知识-Httpd服务常见配置案例之Apache的工作做状态status页面 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.status功能概述 status页 ...

随机推荐

  1. python——初识django的template

    这周听了老师讲关于django的框架问题,第一次比较透彻的了解了mtv框架.也是第一次接触模板的概念,研究了一下,现在就记录下来好嘞... 首先要介绍一点关于django的模板:我们为什么要使用模板呢 ...

  2. 使用scrapy创建工程

    前提:先创建一个文件夹用来存放爬虫工程 创建项目命令: scrapy startproject <project_name> 例子: scrapy startproject myproje ...

  3. HTML/CSS总结1

    1.定义网页背景颜色 <body bgcolor="背景色"> 颜色可以用2种方式表示:1. 直接指定颜色名称,如blue.2.使用十六进制数据表示如#RRGGBB,分 ...

  4. Dns 类

    Dns 类型公开以下成员. 方法       名称 说明 BeginGetHostAddresses 异步返回指定主机的 Internet 协议 (IP) 地址. BeginGetHostByName ...

  5. 每天一个percona 工具 --- pt-kill

    主要用途:pt-kill是用来kill MySQL连接的一个工具,在MySQL中因为空闲连接较多导致超过最大连接数,或某个有问题的sql导致mysql负载很高时,需要将其KILL掉来保证服务器正常运行 ...

  6. angularJs,ionic字符串操作

    1.首先我们需要把一段"文本或字符串"中的我们想进行操作的"字符串","字"筛选出来,代码如下: app.filter('replaceCo ...

  7. RPM

    1.安装RPM 使用-ivh选项即可,能查看安装信息和进度. 例如: #RPM -ivh XXX.rpm RPM升级与更新,使用-Uvh选项或者-Fvh选项,两者略有区别. -Uvh选项:后面接的软件 ...

  8. Leetcode 详解(Valid Number)

    Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...

  9. Dom4j解析xml

    public class Dom4jTest { // Dom4j解析xml // 因为所有的方法都需要Dom树 static Document document = null; static Ele ...

  10. java动手动脑和课后实验型问题第四讲

    1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...