Nginx 只允許內部IP訪問,禁止外部訪問。

某些服務須禁止對外訪問,僅限定內網訪問。把常用的兩個方法列出,雖然可利用防火牆配置,但避免意外產生時無法控管風險,會再額外限制一層增加攻擊者的困難度。

完整配置清單

方法一

把限制內容直接填入區塊最簡單的方式,適合用在單一站台。

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

注意事項:

  1. 當要更詳細的縮限 allow List 須包含所有會訪問的IP,舉例:對外IP。
  2. deny 前一定要加一個ip,否則直接跳轉到403,不往下執行了;如果403默認頁是同一域名下,會造成死循環訪問。
  3. 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
  4. deny all 結尾表示除了上面allow的其他都禁止。

參考來源

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *