跳轉到

Paloalto防火牆在沒有Panorama情況下定期備份設定檔案

2025-08-22 | Paloalto

由於Paloalto防火牆沒有提供定期備份設定檔方式,故這邊紀錄使用Curl指令搭配XML API備份設定檔案,並使用Windows工作排程搭配Script方式達成目的

目錄

1. 環境說明#

  • 防火牆型號:PA-820
  • 防火牆版本: 10.1.14
  • 執行備份任務腳本電腦作業系統版本: Windows Server 2019

2. 設定#

Warning

防火牆變更後記得要commit,設定才會生效

2.1. 新增Admin Roles#

建立一個新的Admin Roles僅具有使用XML API Export功能,其餘均禁止以達到權限最小化原則

Add Admin Roles
Figure 1: Add Admin Roles

設定Admin Role Profile Name
Figure 2: 設定Admin Role Profile Name

編號 欄位名稱 欄位描述
1 Name 名稱,可自定義

禁止使用Web UI所有功能
Figure 3: 禁止使用Web UI所有功能

XML API除Export外其餘均禁止
Figure 4: XML API除Export外其餘均禁止

不賦予Command Line權限
Figure 5: 不賦予Command Line權限

禁止使用REST API所有功能
Figure 6: 禁止使用REST API所有功能

2.2. 建立管理者帳號#

Add Administrators
Figure 7: Add Administrators

Add Administrators
Figure 8: Add Administrators

編號 欄位名稱 欄位描述
1 Name 名稱,可自定義
2 Password 密碼,可自定義
3 Confirm Password 密碼確認
4 Administrator Type 管理員權限賦予方式
- Dynamic:使用內建的管理員角色
- Role Based:使用自定義的管理員角色
5 Profile 選擇此帳號的權限設定檔

2.3. 取得帳號API Key#

使用瀏覽器開啟以下網址,其中<firewall-ip>為防火牆IP,<username>為剛建立的管理者帳號,<password>為剛建立的管理員密碼

https://<firewall-ip>/api/?type=keygen&user=<username>&password=<password>

Get API Key
Figure 9: Get API Key

Info

API Key預設不會逾期故管理員密碼變更也不需要重新取得API Key,若要使API Key失效或者要設定有效期間需至Device -> Setup -> Management -> Authentication Settings變更

2.4. 新增 Batch Script#

主要執行備份的語法為

 curl -kG "https://<firewall-ip>/api/?type=export&category=configuration&key=<api_key>" > running-config.xml`

為達到可自動依日期儲存及紀錄錯誤可拓展為以下Batch Script,此部分可以需求自行修改存檔命名方式及檢查邏輯並將此Batch Script放置於要執行備份的電腦內

backup.bat
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@echo off
:: 設定備份目的地,依實際狀況修改
set "backup_dir=C:\backup"
:: 設定防火牆IP,依實際狀況修改
set "api_ip=192.168.1.254"
:: 設定API Key,依實際狀況修改
set "api_key=LUFRa1F0SQ=="

:: 獲取日期時間,並將 Year, Month, Day, Hour, Minute, Second 設置為環境變數
for /f %%i in ('WMIC Path Win32_LocalTime Get /Format:value') do @for /f %%j in ("%%i") do @set %%j

:: 補零處理(若為個位數則補零)
set Month=0%Month%
set Month=%Month:~-2%
set Day=0%Day%
set Day=%Day:~-2%
set Hour=0%Hour%
set Hour=%Hour:~-2%
set Minute=0%Minute%
set Minute=%Minute:~-2%

:: 格式化日期和時間為 YYYY-MM-DD_HH-MM
set "date_str=%Year%-%Month%-%Day%"
set "time_str=%Hour%-%Minute%"

:: 設定備份檔案名稱
set "backup_file=fw1-config_%date_str%_%time_str%.xml"
set "log_file=%backup_dir%\backup_log.txt"

:: 檢查 backup 資料夾是否存在,若不存在則建立
if not exist "%backup_dir%" (
    mkdir "%backup_dir%"
)

:: 執行 curl,並將標準輸出寫入到備份檔案中,錯誤訊息寫入日誌檔案
curl -s -kG "https://%api_ip%/api/?type=export&category=configuration&key=%api_key%" > "%backup_dir%\%backup_file%" 2>> "%log_file%"

:: 檢查 curl 是否成功執行,若失敗則刪除可能已經創建的文件,並記錄錯誤
if %errorlevel% neq 0 (
    del "%backup_dir%\%backup_file%" >nul 2>&1
    echo [%date_str% %time_str%] [ERROR] 備份失敗,curl錯誤:%errorlevel% >> "%log_file%"
    exit /b 1
)

2.5. 建立工作排程#

建立工作排程
Figure 10: 建立工作排程

建立工作排程
Figure 11: 建立工作排程

建立工作排程
Figure 12: 建立工作排程

建立工作排程
Figure 13: 建立工作排程

建立工作排程
Figure 14: 建立工作排程

建立工作排程
Figure 15: 建立工作排程

建立工作排程
Figure 16: 建立工作排程

2.6. 測試執行情形#

測試執行情形
Figure 17: 測試執行情形

測試執行情形
Figure 18: 測試執行情形

參考資料

留言