配置完一台服務器后,並不是就可以高枕無憂了,前不久剛剛爆發的PHP 5.3.9版本的漏洞也搞得人心惶惶,所以說經常關注安全公告並及時升級服務器也是必要的。一般來說,黑客攻擊服務器的首要步驟就是收集信息,比如說你的軟件版本,這些將成為下一步有針對性攻擊的依據。所以說一定程度的隱藏這些信息就顯得非常有必要了,本文將簡單介紹如何在網絡上隱藏Nginx版本號以及PHP的版本號。
1.隱藏Nginx版本號,Nginx的版本號主要在兩個地方會有,一個是HTTP header,有個Server:nginx/1.x.x類似會暴露Web服務器所用軟件名稱以及版本號,這個也是大多數Web服務器最容易暴露版本號的地方,第二個地方是Nginx出錯頁面,比如404頁面沒有找到等,這是如果用戶沒有指定頁面的話,那么Nginx自己的頁面會有版本戳記。
不過幸運的是對於這兩個地方的版本號隱藏,Nginx都提供了簡單的辦法一步到位,參考server_tokens。通過在配置文件的http節配置server_tokens off來達到我們目的。
http { # ...省略一些配置 server_tokens off; } |
最后別忘了使用命令nginx -s reload刷新當前配置。完成后你可以查看所有頁面的響應頭或者錯誤頁,看看是不是只看到nginx字樣而看不到版本號?什么?你想連nginx也改掉?呵呵,這個恐怕就麻煩了,需要改動Nginx源代碼然后重新編譯,感興趣的童鞋可以參考《Linux/VPS環境下Nginx安全配置小記(1)》。
2.隱藏PHP的版本號,PHP容易暴露的版本號在什么地方呢?其實也是在HTTP頭,以類似X-Powered-By: PHP/5.2.11這種形式存在,大家可能會想到會不會是Nginx問題,而去到Nginx里面找相關配置,呵呵,其實這個是在PHP的配置文件php.ini里改動,打開php.ini,找到下面敘述:
;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; ; 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. ; http://php.net/expose-php expose_php = On |
將expose_php = On改為expose_php = Off就搞定了,當然,對於Apache服務器還有另外一個方法可以直接嘗試在.htaccess文件中Header unset X-Powered-By,刪除X-Powered-By節,不過我還是建議改動php.ini的expose_php。