OpenWAF學習筆記(四)—— API-接入規則
openwaf_api是openwaf 的子模組,用於控制讀取/修改記憶體中的部分資訊,首先對接入規則這部分進行學習。
接入規則這部分的API有五種操作
首先,接入規則格式如下:
{ "twaf_access_rule": [ "rules": [ -- 注意先後順序 { "ngx_ssl": false, -- nginx 認證的開關 "ngx_ssl_cert": "path", -- nginx 認證所需 PEM 證書地址 "ngx_ssl_key": "path", -- nginx 認證所需 PEM 私鑰地址 "host": "1.1.1.1", -- 域名/IP,正則匹配,WAF地址 "path": "/", -- 路徑,正則匹配 "port": 80, -- 埠,預設 80 "server_ssl": false, -- 後端伺服器 ssl 開關 "forward": "server_5", -- 後端伺服器 upstream 名稱 "forward_addr": "1.1.1.2", -- 後端伺服器ip地址,即需要防護的目標網站地址 "forward_port": "8080", -- 後端伺服器埠號(預設80),即需要防護的目標網站埠 "user": "-", -- 使用者ID "uuid": "access_567b067ff2060", -- 用來標記此規則的 uuid,api 中會用到,要保證全域性唯一 "policy": "policy_uuid" -- 安全策略 ID } ] } }
GET
1.查詢所有使用者下所有接入規則
#(“ | python -m json.tool”可不加,只是為了讓輸出結果看起來友好一點)
curl http://192.168.37.130:61111/api/access_rule | python -m json.tool
2.查詢某使用者下所有接入規則({user}即接入規則中的使用者ID,新增時若不賦值則預設“-”)
curl http://192.168.37.130:61111/api/access_rule/{user} | python -m json.tool
3.查詢某使用者下某條接入規則({user}即接入規則中的使用者ID,新增時若不賦值則預設“-”,{uuid}為接入規則ID)
curl http://192.168.37.130:61111/api/access_rule/{user}/{uuid} | python -m json.tool
POST
1.按索引新增接入規則。若 pos 為空時,表示新增至 user 接入規則最後一條(user 為使用者 ID,pos 為位置索引)
格式:curl http://192.168.37.130:61111/api/access_rule/{user}/{pos}
例如,在使用者 aa 中,新增一條接入規則,且排序為 2,注意要為“host”賦值哦!!
curl http://192.168.37.130:61111/api/access_rule/aa/2 -X POST -d '{"config":{"user":"aa","uuid":"aaa","host":"……"}}'
2.按 uuid 新增接入規則。新增規則會新增至對應 uuid 的下一條規則,若 uuid 為空,則新增至 user 接入規則第一條(user 為使用者 ID,uuid 為接入規則 ID)
格式:curl http://192.168.37.130:61111/api/access_rule/{user}/uuid/{uuid}
例如,在使用者 bb 中,新增一條接入規則,且新增至 uuid 為 bbb 的下一條
curl http://192.168.37.130:61111/api/access_rule/bb/uuid/bbb -X POST -d '{"config":{"user":"bb","uuid":"bbbb","host":"……"}}'
PUT
全量修改已有接入規則配置(user 為使用者 ID, uuid 為接入規則 ID)
格式:http://192.168.37.130:61111/api/access_rule/{user}/{uuid}
例:當前接入規則如下:
{
"twaf_access_rule": {
"rules":[
{"user":"u1","uuid":"id1", "port":88, "host":"a.com","forward":"test"},
{"user":"u2","uuid":"id2", "port":90, "host":"b.com"}
]
}
}
curl http://192.168.37.130:61111/api/access_rule/u1/id1 -X PUT -d '{"config":{"user":"u1","uuid":"id1", "port":80, "host":"a.com"}}'
修改後接入規則如下:
{
"twaf_access_rule": {
"rules":[
{"user":"u1","uuid":"id1", "port":80, "host":"a.com"},
{"user":"u2","uuid":"id2", "port":90, "host":"b.com"}
]
}
}
PATCH
部分修改已有接入規則配置(user 為使用者 ID, uuid 為接入規則 ID)
格式:http://192.168.37.130:61111/api/access_rule/{user}/{uuid}
例:當前接入規則如下:
{
"twaf_access_rule": {
"rules":[
{"user":"u1","uuid":"id1", "port":80, "host":"a.com"},
{"user":"u2","uuid":"id2", "port":90, "host":"b.com"}
]
}
}
curl http://192.168.37.130:61111/api/access_rule/u1/id1 -X PATCH -d '{"config":{"port":88,"forward":"test"}}'
修改後接入規則如下:
{
"twaf_access_rule": {
"rules":[
{"user":"u1","uuid":"id1", "port":88, "host":"a.com","forward":"test"},
{"user":"u2","uuid":"id2", "port":90, "host":"b.com"}
]
}
}
DELETE
刪除接入規則(user 為使用者 ID, uuid 為接入規則 ID)
格式:curl http://192.168.37.130:61111/api/access_rule/{user}/{uuid1}/{uuid2}/...
此操作單獨、批量刪除指定使用者下的規則ID對應的規則資訊
# 刪除使用者 u1 下的 uuid 為 id1 的規則
curl http://192.168.37.130:61111/api/access_rule/u1/id1 -X DELETE