当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Apache简介及安全配置方案

    栏目:Linux/apache问题 时间:2018-11-29 13:47

    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

    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">