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

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

完整配置清單

方法一

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

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

注意事項:

  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的其他都禁止。

參考來源

發佈留言

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