1. 程式人生 > 其它 >Apache設定禁止訪問檔案/目錄/IP

Apache設定禁止訪問檔案/目錄/IP

起因

系統漏洞掃描,讀到了系統配置檔案中的加密密碼,加密演算法比較簡單,被解密了出來。

本文將詳細介紹如何操作禁止直接訪問apache網站檔案或目錄。

我的apache2配置檔案目錄:/etc/apache2,

approot@ubu-xxxx:/usr/local$ cd /etc/apache2/
approot@ubu-xxxx:/etc/apache2$ ls
apache2.conf conf-available conf-enabled mods-available mods-enabled sites-available sites-enabled

進入apache的配置檔案 apache2.conf :

將Directory標籤中的

Options Indexes FollowSymLinks

修改為:

Options FollowSymLinks

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

其實就是將Indexes去掉,Indexes表示若當前目錄沒有index.html就會顯示目錄結構。去掉後,重啟apache伺服器

sudo systemctl restart apache2

下面就不同的禁止型別分別給出說明。

1. 禁止訪問某些檔案/目錄

增加Files選項來控制,比如要不允許訪問 .inc 副檔名的檔案,保護php類庫:

<Files ~ "\.inc$">
    Order allow,deny
    Deny from all
</Files>

禁止訪問某些指定的目錄:(可以用 <DirectoryMatch> 來進行正則匹配)

<Directory ~ "^/var/www/(.+/)*[0-9]{3}">
    Order allow,deny
    Deny from all
</Directory>

針對URL相對路徑的禁止訪問:

<Location /dir/>
    Order allow,deny
    Deny from all
</Location>

通過檔案匹配來進行禁止,比如禁止所有針對圖片的訪問:

<FilesMatch \.(?i:gif|jpe?g|png)$>
    Order allow,deny
    Deny from all
</FilesMatch>

針對代理方式禁止對某些目標的訪問(<ProxyMatch> 可以用來正則匹配),比如拒絕通過代理訪問xxx.com:

<Proxy http://xxx.com/*>
    Order allow,deny
    Deny from all
</Proxy>

2. 禁止某些IP訪問/只允許某些IP訪問

如果要控制禁止某些非法IP訪問,在Directory選項控制:

<Directory "/var/www/xxx/">
    Order allow,deny
    Allow from all
    Deny from 10.0.0.1 #阻止一個IP
    Deny from 192.168.0.0/24 #阻止一個IP段
</Directory>

只允許某些IP訪問,適合比如就允許內部或者合作公司訪問:

<Directory "/var/www/web/">
    Order deny,allow
    Deny from all
    Allow from example.com #允許某個域名
    Allow from 10.0.0.1 #允許一個iP
    Allow from 10.0.0.1 10.0.0.2 #允許多個iP
    Allow from 10.1.0.0/255.255.0.0 #允許一個IP段,掩碼對
    Allow from 10.0.1 192.168 #允許一個IP段,後面不填寫
    Allow from 192.168.0.0/24 #允許一個IP段,網路號
</Directory>