Apache的一些安全性設定


  • 設定限制目錄瀏覽的方法
很多人設定Apache都會碰到的問題之一,就是該怎麼限制別人瀏覽自己網站的目錄。如果沒限制,目錄內所有檔案〈包含有更新但還未公開〉的位置都會被看到。

有幾種方式可以達成此目的:
1.在不想公開給外面看到的每個目錄下,都放一個內容空白的index.html,讀取該目錄就會出現空白或是你寫在該檔案裡的設定轉址頁面,但這僅適合用在免費網頁空間,一般不建議這樣使用。
2.使用.htaccess檔案,藉由規則來限定存取範圍,但設定上還是頗麻煩。
3.修改apache的設定檔httpd.conf
[root@testuse ~]# vim /etc/httpd/conf/httpd.conf
# line 144
Options Indexes FollowSymLinks

# 移除Indexes
Options FollowSymLinks    # 可加選項MultiViews

# 重啟apache
[root@testuse ~]# systemctl restart httpd

之所以去掉Indexes這個功能,是讓Apache不自動產生目錄的索引,就不會出現網站某一個文件目錄列出目錄頁面的情形。如果將Indexes拿掉,點選連結目錄就不會秀出目錄來,會改成顯示403 forbidden的訊息頁面,而這403 forbidden的訊息頁面內容是可自訂的,可以參考本站的自訂Apache錯誤訊息頁面

1.MultiViews,這是可以讓Apache送出多國語言支援的頁面。
2.FollowSymLinks,是讓Apache能夠連到其它的目錄去執行,如果是Windows系統的使用者,建議將這個功能拿掉。
  • 關閉相關模組版本
修改apache的設定檔httpd.conf
[root@testuse ~]# vim /etc/httpd/conf/httpd.conf
# 在置底處新增
ServerTokens Prod    # 告知Apache在回傳標頭資訊時,只要標示產品名稱"Apache"即可
ServerSignature Off    # 告知Apache在產生錯誤頁面或其他訊息時,不顯示Apache版本

TraceEnable Off    # 用途為除錯,預設開啟,建議關閉

# 重啟apache
[root@testuse ~]# systemctl restart httpd

ServerTokens
參數有 Min[imal]、OS、Prod[uctOnly]、Full。
ServerTokens Full
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b PHP/4.1.2

ServerTokens OS
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

ServerTokens Min
Server: Apache/1.3.27

ServerTokens Prod
Server: Apache

ServerSignature
用來選擇,當 Apache/2 遇到如錯誤訊息等情形而產生一份告知使用者目前情形的網頁時,是否要附加上一些提示使用者的資訊。參數有On、Off、Email。
如果設定為 "Off":就是除了內定告知使用者的資訊以外,不再附加其他資訊。
如果設定為 "On":則表示在該網頁加上 ServerName 指令所指定的伺服器名稱。
如果設定為 "Email":則在該告知網頁上,附加 ServerAdmin 後面所指定的電子郵件位址。

TraceEnable
HTTP TRACE 是一個 HTTP request method,主要是用來做 debug,此方法會回傳 client 的 HTTP request 內容,並放置於 TRACE response 中的 entity body。因此,惡意攻擊者可利用此方法取得敏感的伺服器資訊,例如 cookies 或表頭中的認證資料。此方法預設為打開,但為了安全方面的考量,最好將此方法給關閉。用此方法必須開啟 mod_rewrite 的功能。
  • 關閉PHP版本 
如果有使用 php 的話,建議再修改 php.ini
[root@testuse ~]# vim /etc/php.ini
# line 375
expose_php = On

# 將On改成Off
expose_php = Off    # 告知Apache不顯示PHP相關訊息


留言

這個網誌中的熱門文章

Centos 7:安裝openldap servers + clients

自訂Apache錯誤訊息頁面