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