Apache 中的伺服器簽名
我正在 CentOS 6.5 上安裝 apache 並嘗試設置一些強化。此過程的一部分是使用
ServerSignature
指令刪除伺服器簽名。由於我希望它能夠在版本升級中存活並遵循其他最佳實踐,因此我試圖在/etc/httpd/conf.d/
目錄中進行所有設置更改。這是我的conf.d/defaults.conf
文件:ServerTokens Prod <Directory /> Options -Indexes FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> ServerSignature Off
除了 ServerSignature 指令外,這很好用。似乎因為它是
/etc/httpd/conf/httpd.conf
預設設置的,所以它的值不能改變。如果我註釋掉該行,/etc/httpd/conf/httpd.conf
則該指令在我的conf.d/defaults.conf
文件中可以正常工作。這是apache配置中的錯誤嗎?我嘗試過的所有其他指令都將覆蓋預設值。如何在不修改行的情況下覆蓋此值/etc/httpd/conf/httpd.conf
?
至於最初的問題-可能是因為該
Include conf.d/*.conf
行在前面ServerSignature On
。因此,該名稱的最新設置會覆蓋預覽設置。關於正確的配置文件管理
編輯起來還不錯
/etc/httpd/conf/httpd.conf
。該文件不會被 yum/rpm 更新覆蓋,而是會創建一個/etc/httpd/conf/httpd.conf.rpmnew
文件,系統管理員(您)應該手動將其與本地配置合併(大部分時間使用vimdiff
)。關於安全性 正如其他人所說——隱藏伺服器版本號不會幫助你提高安全性——對於 CentOS 尤其如此。預設配置下,所有關於自身的 httpd 暴露都是這樣的
Apache/2.2.15
:這個數字在 CentOS 6 生命週期內不會改變。發布 6.0 時是 2.2.15,在 CentOS 6 仍受支持的情況下,它將在接下來的 6 年內保持不變。所以從那個版本號,被攻擊者可以猜測你正在使用來自 CentOS 6 repos 的 httpd - 僅此而已。如果這個想法是完全隱藏使用 Apache 的事實(不僅僅是版本號),那幾乎是不可能的,所有的 Web 伺服器都有一些獨特的特徵(錯誤文件、標題排序、TCP 標誌……)很難隱藏,很容易指紋。