如何隐藏服务器信息 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pangtianyu
V2EX    NGINX

如何隐藏服务器信息

  •  
  •   pangtianyu 2015-05-23 22:26:55 +08:00 6399 次点击
    这是一个创建于 3864 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如说我不想让别人知道我的站点是用了 nginx 的。Google 了一下发现大多数都只说了怎么隐藏 nginx 的版本号,而不是彻底隐藏整个 nginx 的(我的意思是不让人知道用的是 nginx)。

    第 1 条附言    2015-05-24 10:17:29 +08:00
    @sanddudu 先生的 fake - IIS 感觉不错 感谢

    不过还有一个地方感觉需要稍作修改

    当在 nginx.conf 文件里 添加 server_tokens off; 时 使用 curl 仍会显示出 nginx 服务器

    所以要在编译前多修改一处地方:src/http/ngx_http_header_filter_module.c

    将 static char ngx_http_server_string[] = "Server: nginx" CRLF;

    替换为 static char ngx_http_server_string[] = "Server: Microsoft-IIS" CRLF;

    请指教

    以上
    第 2 条附言    2015-05-24 10:23:42 +08:00
    好像还有个更厉害的东西 叫做 Nginx Http Headers More Module 可以让你随便乱改

    http://wiki.nginx.org/NginxHttpHeadersMoreModule
    15 条回复    2015-05-25 05:05:57 +08:00
    babyname
        1
    babyname  
       2015-05-23 22:43:42 +08:00 via iPhone
    不要用nginx
    babytomas
        2
    babytomas  
       2015-05-23 22:46:38 +08:00   1
    编译的时候修改点东西,参考: http://www.zntec.cn/archives/nginx-change-tengine-151.html

    然后把错误页改改 。。。估计差不多可以隐藏了
    viko16
        3
    viko16  
       2015-05-23 22:48:56 +08:00   1
    nginx 源码修改

    #define NGINX_VAR

    然后编译安装之
    Septembers
        4
    Septembers  
       2015-05-23 22:49:04 +08:00
    自己做一个"like nginx"
    sanddudu
        5
    sanddudu  
       2015-05-23 22:49:42 +08:00   1
    https://github.com/sanddudu/fake-iis

    只是用来参考,然后改源代码,不要直接用
    vimutt
        6
    vimutt  
       2015-05-23 22:56:33 +08:00   1
    需要改源码然后重新编译nginx吧
    cevincheung
        7
    cevincheung  
       2015-05-23 23:08:12 +08:00   1
    tengine
    服务器配置:

    server_token off;
    server_tag 自己随便写;
    rhwood
        8
    rhwood  
       2015-05-24 11:15:35 +08:00
    nginx前面放一个varnish
    sub vcl_fetch {
    set beresp.http.Server = "爱写什么写什么";
    }
    shakoon
        9
    shakoon  
       2015-05-24 11:16:28 +08:00
    记得把默认的错误页面都换掉,不然随便一个404就知道你是什么了
    holulu
        10
    holulu  
       2015-05-24 11:44:05 +08:00
    除了用 Headers More 来修改 http header 之外,再用 Echo 来改写错误页的内容就 OK 了
    johnsmith123
        11
    johnsmith123  
       2015-05-24 14:14:01 +08:00
    高中狗就好好读书,没事别想这想那的=。=
    ihciah
        12
    ihciah  
       2015-05-24 21:40:20 +08:00
    故意搞一个IIS的出错页面,改源码再编译之类的。不过还是可能被nmap等指纹检测出来的。
    不明白为何用Nginx要藏着...安全问题其实大部分是出在自己的应用代码上
    pangtianyu
        13
    pangtianyu  
    OP
       2015-05-24 23:32:48 +08:00
    @ihciah 不觉得很好玩嘛?安全什么的才不去管呢
    pangtianyu
        14
    pangtianyu  
    OP
       2015-05-24 23:33:21 +08:00
    @johnsmith123 抱歉……我不是高中生……
    orzfly
        15
    orzfly  
       2015-05-25 05:05:57 +08:00   1
    _(:з」∠)_想伪装 IIS 的可以注意一下这个差异,IIS 在遇到无效 HTP 请求的时候返回的 Server 头不是 IIS 而是 Microsoft-HTTPAPI/2.0,而且 400 里会有为什么是无效的请求……

    漏了 Host 的请求:

    -- snip --
    #echo "GET / HTTP/1.1\n\n" | nc 192.168.43.177 80 01
    HTTP/1.1 400 Bad Request
    Content-Type: text/html; charset=us-ascii
    Server: Microsoft-HTTPAPI/2.0
    Date: Sun, 24 May 2015 21:02:37 GMT
    Connection: close
    Content-Length: 334

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML><HEAD><TITLE>Bad Request</TITLE>
    <META HTTP-EQUIV="Content-Type" COntent="text/html; charset=us-ascii"></HEAD>
    <BODY><h2>Bad Request - Invalid Hostname</h2>
    <hr><p>HTTP Error 400. The request hostname is invalid.</p>
    </BODY></HTML>
    -- snip --

    根本就不是 HTTP 的请求:

    -- snip --
    #echo "WHAT THE FUCK\n\n" | nc 192.168.43.177 80
    HTTP/1.1 400 Bad Request
    Content-Type: text/html; charset=us-ascii
    Server: Microsoft-HTTPAPI/2.0
    Date: Sun, 24 May 2015 21:04:14 GMT
    Connection: close
    Content-Length: 311

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML><HEAD><TITLE>Bad Request</TITLE>
    <META HTTP-EQUIV="Content-Type" COntent="text/html; charset=us-ascii"></HEAD>
    <BODY><h2>Bad Request</h2>
    <hr><p>HTTP Error 400. The request is badly formed.</p>
    </BODY></HTML>
    -- snip --

    好像是个正常的 HTTP 请求(相应内容被省去了):

    -- snip --
    #echo "GET / HTTP/1.1\nHost: 192.168.43.177\n" | nc 192.168.43.177 80
    HTTP/1.1 200 OK
    Content-Type: text/html
    Last-Modified: Tue, 04 Nov 2014 07:02:27 GMT
    Accept-Ranges: bytes
    ETag: "7b6a334bfdf7cf1:0"
    Server: Microsoft-IIS/8.5
    X-Powered-By: ASP.NET
    Date: Sun, 24 May 2015 21:02:54 GMT
    Content-Length: 701
    -- snip --
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2470 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 05:09 PVG 13:09 LAX 21:09 JFK 00:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86