用户
搜索

[web安全] Apache安全加固

  • TA的每日心情
    开心
    2020-11-8 10:51
  • 签到天数: 119 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    25

    主题

    220

    帖子

    780

    魔法币
    收听
    2
    粉丝
    3
    注册时间
    2017-9-14

    春秋游侠i春秋签约作者热心助人奖春秋文阁幽默灌水王

    发表于 2020-11-9 22:39:35 45050
    本帖最后由 aoe 于 2020-11-11 18:23 编辑

    本文章首发i春秋,转载请注明出处。

    实验环境

    root@NF:~# apache2 -version
    Server version: Apache/2.4.29 (Ubuntu)
    Server built:   2020-03-13T12:26:16
    root@NF:~# cat /etc/issue
    Ubuntu 18.04.3 LTS \n \l

    关注官网更新公告

    https://httpd.apache.org/security_report.html

    以最小权限运行Apache进程

    注意:本环境下的Apache默认就是以www-data用户运行,默认符合要求。

    1. 根据需要,为 Apache 服务创建用户及用户组。如果没有设置用户和组,则新建用户,并在 Apache 配置文件中进行指定。

      1. 创建 Apache 用户组。

        groupadd apache

      2. 创建 Apache 用户并加入 Apache 用户组。

        useradd apache –g apache

      3. 将下面两行设置参数加入 Apache 配置文件 apache2.conf 中:

        User apache
        Group apache
    2. 检查 apache2.conf 配置文件中是否允许使用非专用账户(如 root 用户)运行 Apache 服务。

      默认设置一般即符合要求。Linux 系统中默认使用 apache 或者 nobody 用户,Unix 系统默认使用 daemon 用户。

    1585551312747

    加固作用:

    • 以最小权限运行中间件服务,即使网站被getshell,也能减少影响程度。

    扩展阅读:

    查看和修改运行 Apache 的用户与用户组 - 荒原之梦

    linux 下修改 apache 启动的所属用户和组 - 天涯雪

    apache2为什么有多个进程? - muru

    禁用目录浏览功能

    编辑配置文件apache2.conf,指定网站根目录添加Options FollowSymLinks参数。

    <Directory /var/www/html>
            Options  FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>

    若要启用目录浏览功能,则是Options Indexes FollowSymLinks,同样禁止目录浏览功能除了删除Indexes也可以在前面加个减号,即Options -Indexes FollowSymLinks来表示。

    1588057988595

    加固作用:

    • 不展示目录结构信息,防止敏感文件泄露。

    扩展阅读:

    Apache Options Indexes FollowSymLinks详解 - callie

    AllowOverride参数详解 - upupw

    Apache的Order Allow,Deny 详解 - 与时俱进

    Apache2.4使用require指令进行访问控制 - leoyu

    启用日志审计

    apache2默认启用了错误日志和访问日志的记录,可看配置文件apache.conf有无以下内容。

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    
    LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %O" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent

    apache默认日志路径:/var/log/apache2

    一条标准的访问日志内容如下:

    192.168.56.1 - - [30/Mar/2020:16:34:56 +0800] "GET /test/index.php HTTP/1.1" 200 277 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    格式 含义
    %h 远端主机(访问网站的客户端地址)
    %l 远端登录名,用了短横代替
    %u 远端用户名,用了短横代替
    %t 时间,包括访问的日期、时间、时区
    %r 请求起始行,包括请求方法、访问的文件路径
    %>s HTTP状态码
    %O 响应包数据大小,单位是字节
    %{Referer}i\ 来源
    %{User-Agent}i\ 远端主机浏览器的UA信息

    加固作用:

    • 记录访问信息,提供溯源证据。
    • 帮助开发者排查问题。

    扩展阅读:

    Apache日志详解 - long9617

    限制特定目录文件执行权限

    编辑配置文件apache2.conf,根据业务需求添加下面内容。

    <Directory "/var/www/html/upload">
            <FilesMatch "\.(php|php3)$">
                    Order allow,deny
                    Deny from all
            </FilesMatch>
    </Directory>

    1588058583430

    加固作用:

    • 通过禁止访问来阻止一些非法文件的执行(恶意攻击者通过任意文件上传漏洞,往往会上传一些可执行文件,如木马文件,从而拿到webshell)。

    扩展阅读:

    apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法(转)

    自定义错误页面

    编辑配置文件apache2.conf,添加下面内容

    ErrorDocument 403 /custom403.html
    ErrorDocument 404 /custom404.html
    ErrorDocument 500 /custom500.html

    其中customxxx.html为要设置的错误页面,需提前写好放网站根目录下。

    root@NF:~# ls -lah /var/www/html/ | grep html
    -rw-r--r--  1 ubuntu ubuntu  688 1月  19 15:00 403.html
    -rw-r--r--  1 ubuntu ubuntu  685 1月  19 14:57 404.html
    -rw-r--r--  1 ubuntu ubuntu  665 1月  19 15:01 500.html

    1588059807819

    加固作用:

    • 防止默认报错页面泄露一些敏感信息(开发框架、数据库语句、物理路径、内网IP等)。

    扩展阅读:

    APACHE_自定义404错误页面 - epsilon1

    隐藏Apache版本号

    编辑配置文件apache2.conf,添加下面内容

    ServerSignature Off
    ServerTokens Prod
    

    1588060732445

    加固作用:

    • 防止中间件版本信息泄露。

    限制和允许特定IP访问

    编辑配置文件apache2.conf,添加下面内容。

    若使用IP白名单,则根据业务需求添加下面内容

    <Directory "/var/www/html/test">
            Options All
            AllowOverride None
            Order Deny,Allow
            Deny From all
            Allow From 192.168.1.0/24 192.168.3.0/24
            Allow From 127.0.0.1
    </Directory>
    

    若使用IP黑名单,则根据业务需求添加下面内容

    <Directory "/var/www/html/test">
            Options All
            AllowOverride None
            Order Deny,Allow
            Deny From 192.168.1.0/24 192.168.3.0/24
            Deny From 192.168.56.1
    </Directory>
    

    1588063242132

    加固作用:

    • 使访问受控。

    扩展阅读:

    Apache中限制和允许特定IP访问 - we will rock you

    扩展阅读

    http://httpd.apache.org/docs/current/zh-cn/

    https://blog.51cto.com/ww123/1639424

    https://www.cnblogs.com/xiaozi/p/10117715.html

    https://www.jianshu.com/p/a8bab3f50c7b

    https://bbs.ichunqiu.com/thread-35736-1-1.html

    http://www.defvul.com/apache/

    https://www.alibabacloud.com/help/zh/faq-detail/52981.htm

    https://blog.csdn.net/my98800/article/details/51740389


    逆向/破解/病毒分析板块  专属QQ交流群:496266893
    发表于 2020-11-9 22:40:42
    逆向/破解/病毒分析板块  专属QQ交流群:496266893
    使用道具 举报 回复
    发表于 2020-11-10 08:25:31
    mark
    使用道具 举报 回复
    发表于 2020-11-10 10:26:30
    已给师傅投票~
    使用道具 举报 回复
    发表于 2020-11-10 21:56:21

    Thanks♪(・ω・)ノ
    逆向/破解/病毒分析板块  专属QQ交流群:496266893
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册