C1imber's Blog

Apache安全加固

字数统计: 1k阅读时长: 3 min
2018/05/19 Share

Apache安全加固

这篇文章记录了针对apache几种安全问题所进行的安全加固手段,环境为Centos

服务器banner信息隐藏

404页面以及http响应头信息泄露

如果对服务器一个不存在的资源进行访问,网站返回的404页面将会泄露apache版本,服务器操作系统类型等信息
mark
可以看到404错误页面显示了apache的版本、服务器的操作系统类型、ip和端口

还有就是在http的响应头中,也会泄露有关服务器的一些信息
mark
http响应头的Server中泄露了apache的版本和服务器操作系统类型

加固方案:需要修改apache配置文件的两个地方,配置文件位置:/etc/httpd/conf/httpd.conf,将对应的参数修改成下面的值

ServerTokens Prod
ServerSignature Off

mark

mark
修改完后重启服务,就可以修复了,可以看到这些信息不再出现
mark

http响应头泄露php版本信息

http响应头中的X-Powered-By泄露了php版本信息
mark
加固方案:修改php配置文件,配置文件位置:/etc/php.ini,修改参数

expose_php=Off

mark
修改完成后,重启apache服务,php版本信息不再显示
mark

修改apache默认主页

apache默认主页信息泄露

当apache安装完成后,apache的默认主页会泄露服务器的一些信息

mark
可以看到apache默认页面泄露了网站的根目录和某配置文件

加固方案:修改apache配置文件中的DirectoryIndex,并在网站根目录自定义index.html或者index.php
mark
mark
修改完成后不再显示默认页
mark

自定义404页面

为了安全考虑和与网站用户的友好交互,自定义404页面也是件必要的事情

加固方法:在网上寻找404页面模板上传至服务器网站根目录,修改apache配置文件,找到ErrorDocument 404,将自定义的404页面路径添加上去

ErrorDocument 404 /404page/index.html

mark
同时修改404的html文件,修改css,js文件的加载路径,不然css和js会因为请求不到资源而加载失败
mark

mark
重启apache服务

修改前的404页面
mark
修改后的404页面
mark

防止列目录泄露敏感信息

网站允许列目录是个很严重的安全问题,有时由于列目录可能会导致一些配置文件或者一些重要敏感信息泄露
mark
加固方案:其中一种加固方案就是在每个目录下都设置一个默认页(index.html或者index.php),这样可以防止列目录,但是会比较麻烦.另外一种方式就是修改apache的配置文件,将网站根目录/var/www/html下的Options Indexes FollowSymLinks改为Options FollowSymLinks,将indexes参数去掉

mark
修改完成后重启服务,再次访问目录就会出现403禁止访问的页面,但是目录下的页面还是可以照常访问,只是禁止了列目录的操作
mark
mark

禁用php危险函数

php有些函数如果开启的话,当黑客拿下一个webshell就会利用函数取执行一些危险命令,所以可以把一些危险函数禁用掉,以phpinfo为例,修改php配置文件/etc/php.ini,查找disable_funcions,配置

disable_funcions=phpinfo

mark
修改前
mark
修改后
mark

指定目录禁止php解析

通常,向一些上传图片的目录,如果代码层对文件上传没有做好限制,导致黑客上传php代码getshell,所以对指定目录禁止php解析是很有必要的

比如网站上传目录被上传了一个webshell
mark
mark
可以连接webshell,这是很严重的
mark

加固方案,修改apache配置文件,设置指定目录没有执行php的权限,在配置文件中添加

<Directory "/var/www/html/uploads">
    php_flag engine off
</Directory>

mark
重启服务,可以看到由于uploads目录下禁止解析php脚本了,所以此时webshell就不能连接了
mark

CATALOG
  1. 1. Apache安全加固
    1. 1.1. 服务器banner信息隐藏
      1. 1.1.1. 404页面以及http响应头信息泄露
      2. 1.1.2. http响应头泄露php版本信息
    2. 1.2. 修改apache默认主页
      1. 1.2.1. apache默认主页信息泄露
    3. 1.3. 自定义404页面
    4. 1.4. 防止列目录泄露敏感信息
    5. 1.5. 禁用php危险函数
    6. 1.6. 指定目录禁止php解析