安裝了Apache後,總是要注意安全設定,而每次重灌後,總是容易忘東忘西...,所以就把一些基礎的筆記紀錄一下。
這次要設定的是標頭(Header)資訊,為了不讓別人知道自己伺服器資訊,至少要把Header中與伺服器相關的資訊關閉或是不顯示詳細資訊。
要如何知道自己傳送出去的Header呢?
以下用php簡單寫了一個範例程式
這樣就可以取得header資訊 :P。(curl_setopt詳細內容)
如果不想寫程式,當然有現成的工具可測試。
http://www.webconfs.com/http-header-check.php
一般預設的顯示資料如下(以目前使用的伺服器為範例)
設定完Apache設定檔後顯示的資料如下。
很明顯的在Server這裡Apache少了詳細資訊,只保留Apache。
要怎樣才能做到呢?
請在Apache設定檔加入以下幾個資訊,或是修改值。
ServerTokens - 回傳標頭資訊時,Apache顯示方式,根據官方範例(上面是設定,下面是顯示結果)
ServerSignature - 是否在產生錯誤頁面或其他資訊時,顯示Apache版本。(不過在Apache 2.0.44版本後,都是由ServerTokens控制。)
TraceEnable - 預設是開啟,允許 Trace request (RFC 2616)。關閉後只會造成405 error(找不到內容)
如果還想要進一步去設定Header資訊,可以參考mod_headers
附註:如果有顯示PHP的資訊,可以在PHP的設定檔加入expose_php = Off,就不會顯示PHP的資訊囉!
這次要設定的是標頭(Header)資訊,為了不讓別人知道自己伺服器資訊,至少要把Header中與伺服器相關的資訊關閉或是不顯示詳細資訊。
要如何知道自己傳送出去的Header呢?
以下用php簡單寫了一個範例程式
<?php //要測試的網址
$url = 'www.google.com'; $timeout = 5; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $header = curl_exec($ch); curl_close($ch); echo $header; ?>
這樣就可以取得header資訊 :P。(curl_setopt詳細內容)
如果不想寫程式,當然有現成的工具可測試。
http://www.webconfs.com/http-header-check.php
一般預設的顯示資料如下(以目前使用的伺服器為範例)
Date: Fri, 22 Feb 2013 12:15:03 GMT Server: Apache/2.2.15 (CentOS) Location: index.v Content-Length: 0 Content-Type: text/html; charset=UTF-8
設定完Apache設定檔後顯示的資料如下。
Date: Fri, 22 Feb 2013 12:17:29 GMT Server: Apache Location: index.v Content-Length: 0 Content-Type: text/html; charset=UTF-8
很明顯的在Server這裡Apache少了詳細資訊,只保留Apache。
要怎樣才能做到呢?
請在Apache設定檔加入以下幾個資訊,或是修改值。
ServerTokens Prod
ServerSignature Off TraceEnable Off
ServerTokens - 回傳標頭資訊時,Apache顯示方式,根據官方範例(上面是設定,下面是顯示結果)
ServerTokens Prod[uctOnly] Server sends (e.g.): Server: Apache ServerTokens Major Server sends (e.g.): Server: Apache/2 ServerTokens Minor Server sends (e.g.): Server: Apache/2.0 ServerTokens Min[imal] Server sends (e.g.): Server: Apache/2.0.41 ServerTokens OS Server sends (e.g.): Server: Apache/2.0.41 (Unix) ServerTokens Full (or not specified) Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
ServerSignature - 是否在產生錯誤頁面或其他資訊時,顯示Apache版本。(不過在Apache 2.0.44版本後,都是由ServerTokens控制。)
TraceEnable - 預設是開啟,允許 Trace request (RFC 2616)。關閉後只會造成405 error(找不到內容)
如果還想要進一步去設定Header資訊,可以參考mod_headers
附註:如果有顯示PHP的資訊,可以在PHP的設定檔加入expose_php = Off,就不會顯示PHP的資訊囉!
留言
張貼留言