• apache调优隐藏版本信息及404重定向


    本节所讲内容:

    实战:源码编译安装apache及调优技巧

     

    实战环境:

    生产环境中,部署了apache之后,我们应该从安全还是性能角度,在apache服务上线之前,对其做诸多的优化调试才行。

     

    Apache

    实验环境:

    apache版本:httpd-2.2.31

    源码包存放位置:/usr/local/src

    源码包编译安装位置:apache/usr/local/apache2.2-xuegod/

     

    技巧1

    安装apache屏蔽apache版本等敏感信息

     

    查看apache版本信息:

    [root@xuegod63 ~]# curl -Iwww.baidu.com

    。。。

    X-Powered-By: HPHP

    Server: BWS/1.1

    X-UA-Compatible:IE=Edge,chrome=1

    BDPAGETYPE: 1

    BDQID: 0xcfd31d8200026e11

    BDUSERID: 0

     

    测试自己的网站看是什么版本?有没有相应的漏洞

     

    [root@xuegod63 ~]# curl -Iwww.taobao.com

    HTTP/1.1 302 Found

    Server:Tengine  基于nginx做了二次开发

    Date: Tue, 17 Nov 201502:22:06 GMT

    Content-Type: text/html

    Content-Length: 258

    Connection: keep-alive

    Location:https://www.taobao.com/

    彻底让版本等敏感信息消失

    要彻底将版本之类的信息进行改头换面,需要在编译之前修改源码包下include/ap_release.h文件

    [root@xuegod63 httpd-2.2.25]#pwd

    /usr/local/src

    [root@xuegod63 src]# rm -rfhttpd-2.2.25

    [root@xuegod63 src]# tar zxfhttpd-2.2.25.tar.gz

    [root@xuegod63 src]# cdhttpd-2.2.25

    [root@xuegod63 httpd-2.2.25]#vim include/ap_release.h  #修改源码中的版本信息为自己公司的相关信息,隐藏真实版本信息

    改:

    42 #define AP_SERVER_BASEVENDOR"Apache Software Foundation"

     43 #define AP_SERVER_BASEPROJECT "ApacheHTTP Server"

     44 #define AP_SERVER_BASEPRODUCT"Apache"

     45

     46 #define AP_SERVER_MAJORVERSION_NUMBER 2

     47 #define AP_SERVER_MINORVERSION_NUMBER 2

     48 #define AP_SERVER_PATCHLEVEL_NUMBER   25

     49 #define AP_SERVER_DEVBUILD_BOOLEAN    0

    为:

    #defineAP_SERVER_BASEVENDOR "xuegod"

    #defineAP_SERVER_BASEPROJECT " web server"

    #defineAP_SERVER_BASEPRODUCT " xuegod web server"

     

    #defineAP_SERVER_MAJORVERSION_NUMBER 8

    #defineAP_SERVER_MINORVERSION_NUMBER 1

    #defineAP_SERVER_PATCHLEVEL_NUMBER   2

    #defineAP_SERVER_DEVBUILD_BOOLEAN    3

    注释:

    #define AP_SERVER_BASEVENDOR"Apache Software Foundation" #服务的供应商名称

    #define AP_SERVER_BASEPROJECT"Apache HTTP Server"  #服务的项目名称

    #define AP_SERVER_BASEPRODUCT"Apache"        #服务的产品名

    #define AP_SERVER_MAJORVERSION_NUMBER2  #主要版本号

    #defineAP_SERVER_MINORVERSION_NUMBER 4  #小版本号

    #defineAP_SERVER_PATCHLEVEL_NUMBER  6  #补丁级别

    #defineAP_SERVER_DEVBUILD_BOOLEAN  0  #

    注:上述列出的行,大家可以修改成自己想要的,然后编译安装之后,再对httpd-default.conf文件进行修改,对方就彻底不知道你的版本号了。

    源码编译安装apache

    [root@xuegod63 httpd-2.2.11]# yum installopenssl*

    [root@xuegod63 httpd-2.2.25]#./configure --prefix=/usr/local/apache2.2-xuegod --enable-so --enable-rewrite--enable-ssl   --enable-deflate  --enable-expires   #检查安装环境并生成Makefile文件

     

    配置参数用途:

    --prefix=/usr/local/apache2.2   #指定安装路径

    --enable-so  # 支持动态加载模

    --enable-rewrite #支持网站地址重写

    --enable-ssl # 支持ssl加密

    --enable-deflate #支持页面传输前进行压缩

    --enable-expires #支持设置网页缓存的时间

     

    编译安装:make&& make install

     

    查看安装后目录:

    [root@xuegod63 httpd-2.2.25]# ls/usr/local/apache2.2-xuegod/conf/httpd.conf

    /usr/local/apache2.2-xuegod/conf/httpd.conf

    存放网站的根目录:

    [root@xuegod63 httpd-2.2.25]#ls /usr/local/apache2.2-xuegod/htdocs/

    index.html

    修改默认首页内容:

    [root@xuegod63 httpd-2.2.25]# echo apache-xuegod>> /usr/local/apache2.2-xuegod/htdocs/index.html

    启动apache

    配置apache 可以开机启动并且可以使用service 命令启动apache服务器

    [root@xuegod63 httpd-2.2.25]#cp /usr/local/apache2.2-xuegod/bin/apachectl /etc/init.d/apachectl-xuegod

     

    启动apache

    [root@xuegod63httpd-2.2.25]# /etc/init.d/apachectl-xuegod start

    测试:

    测试:隐藏apache版本信息

    [root@xuegod63 ~]# curl -I192.168.1.63   #看不到apache版本相关内容了

    HTTP/1.1 200 OK

    Date: Sat, 29 Aug 201509:43:44 GMT

    Server: xuegod web server/8.1.2-dev (Unix) mod_ssl/8.1.2-devOpenSSL/1.0.0-fips

    Last-Modified: Sat, 29 Aug2015 09:37:36 GMT

    ETag: "6d086-3a-51e6ff35dba19"

    Accept-Ranges: bytes

    Content-Length: 58

    Content-Type: text/html

     

    再次隐藏版本号和系统类型

    接下来再次修改:

     

    [root@xuegod63 ~]#  vim/usr/local/apache2.2-xuegod/conf/httpd.conf

    405 #Includeconf/extra/httpd-default.conf

    为:

    Includeconf/extra/httpd-default.conf

     

    2)打开httpd-default.conf文件,修改如下两个地方

    [root@xuegod63 ~]#  vim/usr/local/apache2.2-xuegod/conf/extra/httpd-default.conf 

    改:

    55 ServerTokens Full

    65 ServerSignature On    signature 签名

    为:

    ServerTokens Prod   #不显示服务器操作系统类型

    ServerSignature Off   #不显示web服务器版本号

     

    apache配置文件生效的方法:

    方法1:重启服务:restart      

    方法2:不重启服务,重新加载配置文件

    reloadnginx

    [root@xuegod63 ~]#/etc/init.d/apachectl-xuegod graceful     优雅的

    测试:

    [root@xuegod63 ~]# curl -I192.168.1.63

    HTTP/1.1 200 OK

    Date: Thu, 14 Jan 201602:31:24 GMT

    Server: xuegod web server

     

    总结:

    1,  安装之前改include/ap_release.h

    2,  Httpd.conf    extra/httpd-default.conf去掉注释

    3,  修改extra/httpd-default.conf

    55 ServerTokens Full

    65 ServerSignature On    signature 签名

    为:

    ServerTokens Prod   #不显示服务器操作系统类型

    ServerSignature Off   #不显示web服务器版本号

     

    2、错误页面优雅显示

    为了提升网站的用户体验,避免404403之类的丑陋的默认错误提示出现。

    http://192.18.1.63/a.html

    方法一:

    [root@xuegod63 ~]# vim/usr/local/apache2.2-xuegod/conf/httpd.conf  #在根目录的标签中添加以下红色标记内容。

    132 <Directory"/usr/local/apache2.2-xuegod/htdocs">

    。。。

    在大约159行,插入:

         ErrorDocument 404 /404.html

    160 </Directory>

    注:#404错误跳转到/usr/local/apache2.2-xuegod/htdocs下的404.html页面上

    注:ErrorDocument的命令格式如下:

    ErrorDocument 错误代码 跳转到的页面链接或文件

     

    创建404测试页:

    [root@xuegod63 ~]# echo"404 go to home" > /usr/local/apache2.2-xuegod/htdocs/404.html

     

    重启:

    [root@xuegod63 ~]# /etc/init.d/apachectl-xuegodrestart

     

    方法2: 出错后,跳转到一个链接

    [root@xuegod63 ~]# vim/usr/local/apache2.2-xuegod/conf/httpd.conf  #在根目录的标签中添加以下红色标记内容。

    132 <Directory"/usr/local/apache2.2-xuegod/htdocs">

    。。。

    在大约159行,插入:

         ErrorDocument 404 http://www.baidu.com

    160 </Directory>

    注:#404错误跳转到http://www.baidu.com

     

    重启:

    [root@xuegod63 ~]#/etc/init.d/apachectl-xuegod restart

     

    总结:ErrorDocument的命令格式如下:

    ErrorDocument 错误代码 跳转到的页面或文件

    另外这里需要注意,你若设置跳转到文件,必须要有这个文件才行。另外文件必须在站点目录内,不然会报错。

     

    终极总结:

    1、  隐藏web服务的版本信息

    2、  出现404错误,给它一个友好的提示


  • 相关阅读:
    ZOJ1450 BZOJ1136 BZOJ1137 HDU3932[最小圆覆盖]
    POJ 1755 Triathlon [半平面交 线性规划]
    POJ 3384 Feng Shui [半平面交]
    POJ 3525 Most Distant Point from the Sea [半平面交 二分]
    POJ 1279 Art Gallery [半平面交]
    POJ3335 POJ3130 POJ1474 [半平面交]
    POJ 3608 Bridge Across Islands [旋转卡壳]
    nginx访问量统计
    PV UV QPS 并发数
    PV、UV、IP之间的区别与联系
  • 原文地址:https://www.cnblogs.com/daozhangblog/p/12446488.html
Copyright © 2020-2023  润新知