当前位置 主页 > 服务器问题 > Linux/apache问题 >
0×00 测试环境
centos6.5+apache2.2.15+php5.3.3
0×01 php的运行模式介绍
php的运行模式分四种:
1. CGI通用网关接口
2. fast-cgi常驻型的CGI
3. cli命令行运行
4. web模块模式
一般情况下,apache使用web模块模式运行php
0×02 Apache运行原理介绍
Apache是基于模块化设计的,各个模块在系统启动的时候按需载入。Apache对于php的解析,就是通过众多Module中的php Module来完成的。
所以,php加载成为了apache的一个模块,可以把apache和php当成一个整体看待。
当浏览器请求一个php文件时,我们可以理解为apache直接处理返回给浏览器结果,服务器上也只会有httpd进程,而不会有php进程。
apache的一些配置主要是通过httpd.conf来实现的,但是可以在httpd.conf中开启对.htaccess的支持,然后 在.htaccess中进行配置。不过一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。.htaccess文件应该被用 在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通 过.htaccess文件自己修改配置。
0×03 Apache安全配置方案
1. 选择漏洞较少的apache版本,并打上安全补丁
查看apache版本号:httpd -v
然后在sebug上搜索该版本号有什么漏洞,可根据提示提升版本或者打上补丁
2. 关闭一些不使用的模块及功能
可在LoadModule前加#,来注释掉一些不使用的模块
3. 隐藏banner信息
ServerTokens OS 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On 修改为:ServerSignature Off(不回显apache版本信息)
4. 删除默认网站及页面
删除默认的页面,防止泄露服务器信息
5. 可修改banner信息
6. 配置httpd.conf禁止目录浏览
将Options Indexes FollowSymLinks改为Options -Indexes FollowSymLinks
7. 配置httpd.conf设置默认文档
DirectoryIndex index.html
8. 合理配置apache的运行账户
为apache单独建立一个运行账户及账户组,并在httpd.conf配置
User apache
Group apache
9. 合理控制apache运行账户对磁盘的写入,执行权限
取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限
10. 合理控制apache运行账户对sh等的执行权限
取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令
11. 配置httpd.conf取消对上传目录的php执行权限
<Directory "/var/www/html/aaa">
<FilesMatch ".(php|php5)$">
Deny from all
</FilesMatch>
</Directory>
12. 配置httpd.conf限制禁止访问的文件夹,例如后台目录
<Directory "/var/www/html/aaa">