隱藏服務器header與web軟件版本信息


引入

   每次當瀏覽器向Web服務器發起一個請求的時,都會伴隨着一些HTTP頭的發送.而這些HTTP頭是用於給Web服務器提供一些額外信息以便於處理請求。比如說吧。如果瀏覽器支持壓縮功能,則瀏覽器會發送Accept-Encoding HTTP頭,這樣一來服務器便知道瀏覽器可以使用哪種壓縮算法。還有任何在上一次傳輸中服務端設置的cookies也會通過Cookies HTTP頭來回傳到服務器,瀏覽器還會發送用於讓服務端知道客戶使用的是何種瀏覽器(IE,火狐,Safari等),瀏覽器版本,操作系統以及其他相關信息的User-Agent HTTP頭。

    同樣,Web服務器也會在發送回客戶端時伴隨着一些HTTP頭,這些HTTP頭可以通知瀏覽器如何生成相應的內容和緩存內容的時間,Web服務器也會發送自身的識別信息,這很像User-Agent HTTP頭,這些頭信息包括Web服務器的版本以及當前使用的ASP.Net的版本.

    在某些情況下一些HTTP頭是必須的,然而Web服務器的自身識別頭信息卻並不是那么必要,這些信息會讓每次的傳輸多出100字節左右。好吧,我同意100字節單獨來說並不是一個很大的數字,但在傳輸成千上萬次時,這些信息也不可小覷。此外,提供服務器信息也會導致安全問題,有些攻擊者很了解特定的服務器以及特定的Asp.net版本所包含的漏洞,他們會掃描大量服務器然后選擇特定的服務器(譯者按:比如IIS和Asp.net 2.0.50727)來作為他們的攻擊目標。

對於黑客來說,入侵第一步,一般都是先掃描,這些掃描包括服務器的類型,提供服務的軟件和版本號以及端口,然后針對這些系統或軟件的相應漏洞進行入侵。那么如何來隱藏這些信息呢?這就是今天的技術內容。
1、隱藏服務器系統信息

在缺省情況下,當你登陸到linux系統,它會告訴你該linux發行版的名稱、版本、內核版本、服務器的名稱。為了不讓這些默認的信息泄露出來,我們要進行下面的操作,讓它只顯示一個"login:"提示符。
刪除/etc/issue和/etc/issue.net這兩個文件。
本地登陸輸入用戶名和密碼前顯示的信息寫在/etc/issue,當然,在這個文件你也可以寫入其他的信息。
而/etc/issue.net是供telnet這個遠端登入顯示的信息,默認里面內容與/etc/issue是一樣的。不過,這個現在好像沒有什么人在用吧!
下面我就簡單的了解一下issue文件中的一些代碼含義

\d 本地端時間的日期;
\l 顯示第幾個終端機介面;
\m 顯示硬體的等級 (i386/i486/i586/i686...);
\n 顯示主機的網路名稱;
\o 顯示 domain name;
\r 作業系統的版本 (相當於 uname -r)
\t 顯示本地端時間的時間;
\s 作業系統的名稱;
\v 作業系統的版本。

在這里順便說一下,登陸系統后顯示的信息修改方法(PS:如果系統真到了這一步,那已經說明成為了別人的肉機了啊!)。

登陸系統后的信息是寫在/etc/motd文件中,默認是空的,你可以在這里面寫你想顯示的信息。
2、常用的服務軟件版本信息屏蔽


上面講了如何把服務器的信息屏蔽,那么我在服務器上提供服務的軟件版本信息如何隱藏呢?下面介紹目前幾個常用的服務軟件版本信息屏蔽。

先來介紹一個命令。

curl --head http://localhost
查看服務器提供HTTP服務的相關信息
這里會顯示你的HTTP是什么程序,哪個版本如
Server: nginx/0.8.36
還有PHP的相關信息
X-Powered-By: PHP/5.2.14

下面就是如何來隱藏這些信息了

隱藏apache版本信息:

開啟 httpd.conf,加入以下兩行:
ServerTokens ProductOnly
ServerSignature Off

隱藏Nginx版本信息:

開啟 nginx.conf,在http { }里加上:
server_tokens off;

不過還有一個地方感覺需要稍作修改  當在 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;

還有個更厲害的東西 叫做 Nginx Http Headers More Module 可以讓你隨便亂改http://wiki.nginx.org/NginxHttpHeadersMoreModule

隱藏php-fpm版本信息:

開啟php-fpm配置文件,找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改為:
fastcgi_param SERVER_SOFTWARE nginx0.0.0; #(這個nginx0.0.0就是顯示的內容)

隱藏PHP版本信息:

開啟php.ini,加入:
expose_php = Off

完成以上設定后,重新啟動 Apache/Nginx 即可。
3、移除IIS默認的響應頭

在IIS+ASP.NET的運行環境,默認情況下會輸出以下的響應頭(Response Headers):

IIS默認響應頭

那如何移除這些響應頭呢?下面我們來一個一個移除。

1. 移除Server

借助IIS URL Rewrite Module,添加如下的重寫規則:

復制代碼

<rewrite>
        <allowedServerVariables>
            <add name="REMOTE_ADDR" />
        </allowedServerVariables>            
        <outboundRules>
            <rule name="REMOVE_RESPONSE_SERVER">
                <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                <action type="Rewrite" />
            </rule>
        </outboundRules>
</rewrite>

復制代碼

重寫規則存放在C:\Windows\System32\inetsrv\config\applicationHost.config中。

2. 移除X-AspNet-Version

在web.config的<httpRuntime>中添加enableVersionHeader="false":

<httpRuntime enableVersionHeader="false" />

3. 移除X-AspNetMvc-Version

在 Application_Start() 中添加如下代碼:

protected void Application_Start()
{
    MvcHandler.DisableMvcResponseHeader = true;
}

4. 移除X-Powered-By

在IIS Manager的HTTP Response Headers中移除X-Powered-By:

響應頭信息原始頭信息

Cache-Control: private
Content-Length: 78457
Content-Type: text/HTML; charset=utf-8
Date: Fri, 25 Apr 2014 06:19:18 GMT
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

修改Server:

方法一:安裝UrlScan(放這個是微軟官方出的東西),(注意系統是32位(x86),還是64位(x64))
下載地址:http://www.microsoft.com/en-us/search/DownloadResults.aspx?q=URLScan

修改 URLScan.ini 文件

URLScan 的所有配置都是通過 URLScan.ini 文件執行的,此文件位於 %WINDIR%\System32\Inetsrv\URLscan 文件夾中。要配置 URLScan,請在文本編輯器(如記事本)中打開此文件,進行相應的更改,然后保存此文件。

注意:要使更改生效,必須重新啟動 Internet 信息服務 (IIS)。一種快速的實現方法是在命令提示符處運行 IISRESET。

把RemoveServerHeader=1 ; 若為1,則移除IIS的server標頭。保存,打開頁頁就看不到Server這個請求頭信息了

方法二:安裝rewrite模塊。
rewirte下載地址:
https://www.iis.net/downloads/microsoft/url-rewrite

修改配置文件(C:\Windows\System32\inetsrv\config\applicationHost.config)。

<rewrite>
            <allowedServerVariables>
                    <add name="REMOTE_ADDR" />
            </allowedServerVariables>            
            <outboundRules>
                    <rule name="REMOVE_RESPONSE_SERVER">
                        <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                        <action type="Rewrite" />
                    </rule>
            </outboundRules>
    </rewrite>
修改X-AspNet-Version
在web.config的<system.web>結點下添加
修改X-Powered-By
打開IIS,點一個站點,再點HTTP響應標頭.雙擊你要修改的如“X-Powered-By”雙擊,修改成你想要的數據,也可以直接刪除。

【參考資料】

1、在ASP.Net和IIS中刪除不必要的HTTP響應頭 http://blog.chinaunix.net/uid-11898547-id-4078107.html
————————————————
版權聲明:本文為CSDN博主「天府雲創」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/enweitech/article/details/86488403


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM