next up previous contents
Next: 確認 apache 用戶無權限寫入 Up: 安全 Apache 2.4 網站 Previous: 限制網頁根目錄外的存取   Contents

關閉目錄瀏覽

  1. 建立測試目錄 dirtest,目錄內有三個檔案。
    [root@kvm3 ~]# cd /var/www/html/
    [root@kvm3 html]# mkdir dirtest
    [root@kvm3 html]# echo 'aaa' > dirtest/aaa
    [root@kvm3 html]# echo 'bbb' > dirtest/bbb
    [root@kvm3 html]# echo 'ccc' > dirtest/ccc
    
  2. 編輯 httpd 主設定檔,加入 dirtest 目錄的設定。
    [root@kvm3 html]# vim /etc/httpd/conf/httpd.conf 
    [root@kvm3 html]# grep dirtest -A4 /etc/httpd/conf/httpd.conf 
    <Directory "/var/www/html/dirtest">
        AllowOverride None
        Options Indexes
        Require all granted
    </Directory>
    
  3. 重新啟動 httpd 服務。
    [root@kvm3 html]# systemctl restart httpd.service
    
  4. httpd 沒限制列出目錄設定時,當連結到該網頁又沒有預設的 index.html 或 index.php 等檔案時,就會列出 http 伺服器目錄下的檔案如下圖。
    Image dirtest
  5. 用戶可以看光網站內的所有檔案,對網站安全威脅很大,所以如果不是要架設一個類似 ftp 伺服器,提供一般用戶下載檔案用,最好還是在 httpd.conf 指定的網頁目錄加上 Options -Indexes,取消列出目錄檔案。
    [root@kvm3 html]# vim /etc/httpd/conf/httpd.conf 
    [root@kvm3 html]# grep dirtest -A4 /etc/httpd/conf/httpd.conf 
    <Directory "/var/www/html/dirtest">
        AllowOverride None
        Options -Indexes
        Require all granted
    </Directory>
    
  6. 重新啟動 httpd 服務。
    [root@kvm3 html]# systemctl restart httpd.service
    
  7. httpd 限制列出目錄,再連結網址已無法存取。
    Image dirtest1
    [root@kvm3 html]# curl http://kvm3.deyu.wang/dirtest/
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access /dirtest/
    on this server.</p>
    <hr>
    <address>Apache Server at kvm3.deyu.wang Port 80</address>
    </body></html>
    
  8. 如果 /var/www/html 目錄下有些目錄必須開放瀏覽,例如 repo server的目錄,因此無法以 -Indexes 選項限制整個根目錄不列出目錄,但在 /var/www/html 的某些目錄卻又不希望列出目錄,此狀況可以在該目錄下產生一個空的 index.html,則只要連到該目錄就會以空白頁出現。下面例子是在 abc 目錄下產生空白 index.html,則在使用 Indexes 選項下,連到 http://kvm8.deyu.wang/abc 就會出現空白頁。
    [root@kvm3 ~]# cd /var/www/html/abc
    [root@kvm3 abc]# touch index.html
    
  9. 另一種方法還是在 httpd.conf 指定的網頁目錄加上 Options -Indexes,取消列出目錄檔案。在 httpd.conf 中將開放瀏覽的目錄獨立設定 Indexes,則連到 http://kvm3.deyu.wang/abc 時就會到出目錄中的檔案。
    [root@kvm3 ~]# vim /etc/httpd/conf/httpd.conf 
    <Directory "/var/www/html/abc">
        Options Indexes
        AllowOverride None
        Require all granted
    </Directory>
    



2018-06-16