標籤:伺服器安全 web伺服器
一、隱藏nginx頭資訊
什麼是header資訊?header資訊是訪客訪問你的網站時,web服務返回給用戶端的一段資訊,包含了網頁的一些基本情況。那麼為什麼要修改 header資訊呢?主要是為了防止被居心不良的人利用來擷取漏洞資訊,例如:通過最最簡單的擷取header資訊發現你的web伺服器版本是 nginx/0.7.60,現在又已知這個版本的nginx有某個漏洞,那麼就可以利用這個漏洞來攻擊你了。互連網資訊更新非常快,web服務程式的更新 也是很頻繁,我們很多時候由於種種原因不能及時打上補丁,對伺服器安全很不利,如果修改header資訊達到隱藏web伺服器版本的效果,就可以在某種程 度上消除一些隱患。
nginx的header資訊修改需要修改源碼,因此必須在編譯前作修改,如果已經編譯了,只能修改源碼後重新編譯。
1、修改src/core/nginx.h,將
#define NGINX_VERSION "1.1.1"
#define NGINX_VER "apache/" NGINX_VERSION中的資訊修改掉。
2、修改src/http/ngx_http_header_filter_module.c,將
static char ngx_http_server_string[] = "
Server: apache" CRLF;
static char ngx_http_server_full_string[] = "
Server: " NGINX_VER CRLF;中的資訊修改掉。
3、修改nginx-0.7.30/src/http/ngx_http_special_response.c
static u_char ngx_http_error_full_tail[] =
"<center> "NGINX_VER" </center>" CRLF
"<hr><center>****http://www.linuxtone.org****</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
static u_char ngx_http_error_tail[] =
"<hr><center>
LTWS</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
如果要修改探針中顯示的web服務軟體資訊,就修改nginx安裝目錄中conf/fcgi.conf,將
fastcgi_param SERVER_SOFTWARE nginx;中的資訊修改掉。這個是設定檔,是在編譯之後修改的。
我寫了幾句命令,可以直接在shell裡運行修改掉檔案:
sed -i ‘s:#define NGINX_VERSION "0.7.64":#define NGINX_VERSION "1.0":g‘ /usr/local/src/nginx-0.7.64/src/core/nginx.h
sed -i ‘s:#define NGINX_VER "nginx/" NGINX_VERSION:#define NGINX_VER "XXXserver/" NGINX_VERSION:g‘ /usr/local/src/nginx-0.7.64/src/core/nginx.h
sed -i ‘s#"Server: nginx"#"Server: XXXserver"#‘ /usr/local/src/nginx-0.7.64/src/http/ngx_http_header_filter_module.c
改的就是上面說的三個地方,將nginx/0.7.64改成XXXserver/1.0,要用的話需要自己修改源碼包存放路徑、安裝後檔案的路徑和要替換的nginx版本號碼。
2、隱藏php版本資訊
下面對php的設定檔php.ini進行配置
預設情況下
expose_php = On
將其改為
expose_php = Off
為什麼,可以看這段解釋
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
然後禁止一些涉及php安全的函數
disable_functions = phpinfo, get_cfg_var //禁止phpinfo和get_cfg_var等函數
display_errors = Off //禁止爆出錯誤
allow_url_fopen = Off //這個關閉,就沒有辦法取遠程內容了,但是可以用變通,用curl遠程讀取的方法做到
safe_mode = On //開啟安全模式,這個開了,可能會有些php功能沒辦法使用了無論如何,還是要我們的程式設計的完美,一般來說,單純更具對系統攻擊很難,如果是程式有漏洞,那攻擊就簡單了。
本文出自 “nirvana” 部落格,請務必保留此出處http://ja5on.blog.51cto.com/8521911/1407716