某些服務須禁止對外訪問,僅限定內網訪問。把常用的兩個方法列出,雖然可利用防火牆配置,但避免意外產生時無法控管風險,會再額外限制一層增加攻擊者的困難度。
完整配置清單
方法一
把限制內容直接填入區塊最簡單的方式,適合用在單一站台。
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 進設定檔即可,用方法一做為例子。
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的其他都禁止。