Apache-2.2

Apache 中的伺服器簽名

  • July 31, 2014

我正在 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 標誌……)很難隱藏,很容易指紋。

引用自:https://serverfault.com/questions/616396