某些服務須禁止對外訪問,僅限定內網訪問。把常用的兩個方法列出,雖然可利用防火牆配置,但避免意外產生時無法控管風險,會再額外限制一層增加攻擊者的困難度。
完整配置清單
方法一
把限制內容直接填入區塊最簡單的方式,適合用在單一站台。
Nginx 配置location / { #下方為允許連線的列表 deny 192.168.1.1; allow 127.0.0.0/24; allow 192.168.0.0/16; allow 10.10.0.0/16; #除上方列舉IP其他皆拒絕 deny all; root /var/www/html/; index index.php; }
方法二
適合使用在平衡附載LB 上或是多個站台需的配置的服務上。
新增一個檔案 舉例:
建立及編輯設定檔vi /etc/nginx/conf/Internal_acc.conf
檔案填入以下內容#只允許內部訪問IP清單 #下方為允許連線的列表 deny 192.168.1.1; allow 127.0.0.0/24; allow 192.168.0.0/16; allow 10.10.0.0/16; #除上方列舉IP其他皆拒絕 deny all;
接下來只在需要的地方 include 進設定檔即可,用方法一做為例子。
nginx 配置location / { #只允許內部訪問IP清單 include conf/Internal_acc.conf root /var/www/html/; index index.php; }
未來有額外站台需限制時只要添加 include 就可達成目標,修改訪問來源只需維護單一檔案即可。
include conf/Internal_acc.conf
注意事項:
- 當要更詳細的縮限 allow List 須包含所有會訪問的IP,舉例:對外IP。
- deny 前一定要加一個ip,否則直接跳轉到403,不往下執行了;如果403默認頁是同一域名下,會造成死循環訪問。
- allow的IP網段從小子網路遮罩到大子網路遮罩排列。
如127.0.0.0/24,下面才能是10.10.0.0/16。
24表示子網路遮罩:255.255.255.0
16表示子網路遮罩:255.255.0.0
8表示子網路遮罩:255.0.0.0 - deny all 結尾表示除了上面allow的其他都禁止。