Apache 安全配置方法

2019-01-17 05:00:57于丽


没作任何设置前,查看web服务器请求文件头

HTTP/1.1 200 OK
Date: Sun, 27 Apr 2008 11:56:46 GMT
Server: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5 with Suhosin-Patch
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "387a5-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

几乎把web服务器详细信息都暴出来了,如果没个版本的apache和php爆出严重漏洞,会给攻击者提供最有攻击价值的安全信息,这是非常危险的

将apache的配置文件加上两行

ServerTokens ProductOnly
ServerSignature Off
重启apache让设置生效
再次发出apache头信息请求

HTTP/1.1 200 OK
Date: Sun, 27 Apr 2008 11:57:40 GMT
Server: Apache
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "387a5-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

可以看到apache版本号于已经没有了

做到这点,我们还可以改变apache的版本,这就要修改apache的源代码了,在apache的源码包中找到ap_release.h 将#define AP_SERVER_BASEPRODUCT "Apache" 修改为#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/5.0”
或者#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/6.0”

然后找到os/unix下的os.h文件,将其#define PLATFORM "Unix"修改为#define PLATFORM "Win32"

然后重新编译,安装apache。
最后修改httpd.conf配置文件,添加两行ServerTokens Prod
ServerSignature Off
在发送头请求,会有什么,就不用我说了吧,嘿嘿,这叫偷天换日,从这点来说,php也是一样,同样可以通过这种方式改变一些系统信息,不过根据GPL开源的精神,这样做貌似不太好,还是保留apache和php版权信息吧。

附:
ServerSignature 三个选项
On|Off|EMai 主要起开关作用

ServerTokens 四个选项
Minimal|ProductOnly|OS|Full 四个选项隐藏信息依次增加

下面对php的配置文件php.ini进行配置

默认情况下expose_php = On
将其改为 expose_php = Off

为什么,可以看这段解释

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.

然后禁止一些涉及php安全的函数

disable_functions = phpinfo, get_cfg_var //禁止phpinfo和get_cfg_var等函数
display_errors = Off //禁止爆出错误
allow_url_fopen = Off //这个关闭,就没有办法取远程内容了,但是可以用变通,用curl远程读取的方法做到
safe_mode = On //开启安全模式,这个开了,可能会有些php功能没办法使用了

无论如何,还是要我们的程序设计的完美,一般来说,单纯更具对系统攻击很难,如果是程序有漏洞,那攻击就简单了。