zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    智能推荐算法演变及学习笔记(三):CTR预估模型综述
    从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法
    智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)
    (设计模式专题3)模板方法模式
    (设计模式专题2)策略模式
    (设计模式专题1)为什么要使用设计模式?
    关于macOS上常用操作命令(持续更新)
    记录下关于RabbitMQ常用知识点(持续更新)
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
    SpringCloud教程二:Ribbon(Finchley版)
  • 原文地址:https://www.cnblogs.com/LukeSteven/p/13405425.html
Copyright © 2011-2022 走看看