• 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
    
  • 相关阅读:
    ZD ZDC数据类型 sort
    常识
    面试
    无锡
    sqlldr return code
    025:为什么需要将Logger对象声明为private static final类型的
    中级职称
    《宪法》关于全国人民代表大会的规定
    python打包成exe
    请问.AE和PR有什么区别?
  • 原文地址:https://www.cnblogs.com/LukeSteven/p/13405425.html
Copyright © 2020-2023  润新知