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
原文地址:https://www.cnblogs.com/LukeSteven/p/13405425.html