相信很多人都熟悉iptables。 kangle的访问控制理念来自linux的iptables防火墙,kangle拥有功能最小化的匹配模块和标记模块,通过组合,反转等可以实现用户最复杂的需求; 最小化的匹配模块和标记模块犹如最小块的积木,独具匠心的玩家,总是能用小积木搭建出千变万化的造形。 Kangle的访问控制分为请求控制和回应控制 请求控制在最前面,用户发送请求过来时即进行请求控制。
回应控制发生在数据发送给用户之前,即进行回应控制。 每个控制由一张或多张表加一个默认目标组成,其中BEGIN表是系统内建表,所有控制从BEGIN开始。
每张表可以定义若干条“链”,在一张表中控制按顺序从上到下对规则链进行匹配。
规则链由一个目标和任意个匹配模块和任意个标记模块组成。 在表中,用户可以按需要随意添加、删除、编辑或反转规则链。 在"请求控制”内有一个系统表:"BEGIN表"
在"回应控制”内有两个系统表"BEGIN表"和"POSTMAP表" “POSTMAP表”完成url到物理文件的映射。用户使用"POSTMAP表",需要自行创建。 例如:对文件进行管理、禁止文件被下载(日志文件不允许被下载)等可用"POSTMAP表"。 kangle如果发现用户的请求匹配了一个规则链中的匹配模块,则进入标记模块对请求做简单的处理,之后就按该条规则链指定的目标处理。如果目标是继续,则还要进行下一条规则链处理,否则就返回控制,按控制“目标”进行处理。 如果目标是“继续”,则还要进行下一条规则链的处理。 如果目标是“默认”,则控制按默认目标处理(默认目标有:拒绝、回写数据、服务器、虚拟主机等)。
如果目标是“拒绝”,则将对用户的请求拒绝并发送错误信息给用户,之后中断连接。 如果目标是“虚拟主机”,则将对用户请求使用虚拟主机处理。 如果目标是“服务器”,则用户使用的是反代。 如果目标是“回写数据”,则将对用户的请求拒绝,并发送管理员设定的原始数据给用户。 详细Kangle访问控制模块列表及说明: 请求控制的匹配模块 | 模 块 名 称 | 作 用 域 | 模 块 说 明 | url | 请求控制和回应控制 | 匹配用户url网址。网址可以使用正则表达式 | reg_path | 请求控制和回应控制 | 匹配路径。可以使用正则表达式匹配路径(注:路径是以url后面的路径) | reg_param | 请求控制和回应控制 | 可用正则表达式进行url参数匹配 | path | 请求控制和回应控制 | 匹配路径 (注:路径是以url后面的路径) | dst_port | 请求控制和回应控制 | 匹配目标端口 | meth | 请求控制和回应控制 | 匹配http请求方法(如get 、 post ) | file_ext | 请求控制和回应控制 | 匹配一个或多个文件扩展名 | host | 请求控制和回应控制 | 匹配一个或多个主机头 | wide_host | 请求控制和回应控制 | 泛域名匹配 | map_host | 请求控制和回应控制 | 匹配一个或多个主机头
与“host”的区别:map_host是以文件形式来存放主机头进行匹配 | mark | 请求控制和回应控制 | 印记模块 | per_ip | 请求控制 | 匹配每ip连接数 | worker | 请求控制 | 检测队列类型 | header | 请求控制和回应控制 | 匹配http头 | self | 请求控制和回应控制 | 匹配当前连接的服务器ip | selfs | 请求控制和回应控制 | 匹配多个本机ip地址 | sefl_port | 请求控制和回应控制 | 匹配当前连接的服务器端口 | self_ports | 请求控制和回应控制 | 匹配多个本机端口 | src | 请求控制和回应控制 | 匹配源地址(ip或者ip段) | srcs | 请求控制和回应控制 | 多ip段 | time | 请求控制 | 匹配当前时间,格式为:“crontab” | ssl_serial | 请求控制 | 匹配证书序列号 | auth_user | 请求控制 | 匹配http论证的用户 | referer | 请求控制 | url来源 | ip_rate | 请求控制 | ip访问频率 | 请求控制的标记模块 | 模 块 名 称 | 作 用 域 | 模 块 说 明 | speed_limit | 请求控制 | 限速标记 | gspeed_limit | 请求控制 | 分组限速 | flag | 请求控制 | 对用户请求作不缓存、不过滤内容及不防cc攻击标记 | rewrite | 请求控制 | url重写 | redirect | 请求控制 | url重定向 | auth | 请求控制 | http认证 | host_rewrite | 请求控制 | 主机重写 | anti_cc | 请求控制 | 防CC | ip_speed_limit | 请求控制 | 每IP速度限制 | extend_flag | 请求控制和回应控制 | 是否启用扩展卡 | host | 请求控制 | 主机头 | replace_ip | 请求控制 | ip替换 | param | 请求控制 | 参数过滤(GET和POST) | post_file | 请求控制 | 上传文件过滤 | mark | 请求控制和回应控制 | 印记模块 | black_list | 请求控制 | 插入到黑名单 | check_black_list | 请求控制 | 检查黑名单(是黑名单就拒绝 ,一般这个在black_list前面) | flow | 请求控制 | 流量统计 | param_count | 请求控制 | 防hash攻击,原在配置里,现改在这里了 | remove_header | 请求控制 | 删除http头 | remove_param | 请求控制 | 删除参数(比如:提高缓存命中率) | rewritex | 请求控制 | 兼空apache的.htaccess | self_ip | 请求控制 | 指定出口ip | temp_file | 请求控制 | 临时文件(在模块里设置了会优先于全局的设置) | upload_progress | 请求控制 | 上传进度 | url_rewrite | 请求控制 | url重写 | vary | 请求控制 | 会话缓存 | connection_close | 请求控制 | 控制关闭长连接 | 回应控制的匹配模块 | 模 块 名 称 | 作 用 域 | 模 块 说 明 | url | 请求控制和回应控制 | 匹配用户url网址。网址可以使用正则表达式 | reg_path | 请求控制和回应控制 | 匹配路径。可以使用正则表达式匹配路径 | reg_param | 请求控制和回应控制 | 可用正则表达式进行参数匹配 | path | 请求控制和回应控制 | 匹配路径 | dst_port | 请求控制和回应控制 | 匹配目标端口 | meth | 请求控制和回应控制 | 匹配http请求方法 ( 如get 、 post ) | src | 请求控制和回应控制 | 匹配源地址(ip或者ip段) | srcs | 请求控制和回应控制 | 多ip段 | file_ext | 请求控制和回应控制 | 匹配一个或多个文件扩展名 | host | 请求控制和回应控制 | 匹配一个或多个主机头 | wide_host | 请求控制和回应控制 | 泛域名匹配 | map_host | 请求控制和回应控制 | 匹配一个或多个主机头
与“host”的区别:map_host是以文件形式来存放主机头进行匹配 | header | 请求控制和回应控制 | 匹配http头 | self | 请求控制和回应控制 | 匹配当前连接的服务器ip | selfs | 请求控制和回应控制 | 匹配多个本机ip地址 | sefl_port | 请求控制和回应控制 | 匹配当前连接的服务器端口 | self_ports | 请求控制和回应控制 | 匹配多个本机端口 | file | 回应控制 | 匹配一个或多个文件 | filename | 回应控制 | 匹配一个或多个文件名 | dir | 回应控制 | 匹配多个目录下的文件。按目录匹配 | reg_file | 回应控制 | 匹配一个或多个文件。可用正则表达式表示 | reg_filename | 回应控制 | 匹配一个或多个文件名。可用正则表达式表示 | content_length | 回应控制 | 配置内容大小 | mark | 请求控制和回应控制 | 印记模块 | obj_flag | 回应控制 | 检测网页的状态 | status_code | 回应控制 | 状态码 | worker | 回应控制 | 检测队列类型 | 回应控制的标记模块 | 模 块 名 称 | 作 用 域 | 模 块 说 明 | cache_control | 回应控制 | 缓存标记 | content | 回应控制 | 内容过滤(可以使用正则表达式进行内容过滤) | response_flag | 回应控制 | 对回应给用户的请求作标记 | add_header | 回应控制 | 增加自定义头 | remove_header | 回应控制 | 删除http头 | replace_header | 回应控制 | 替换http头 | footer | 回应控制 | 插入内容在前面或者后面 | extend_flag | 请求控制和回应控制 | 是否启用扩展卡 | http_only | 回应控制 | 防xss | mark | 回应控制 | 印记模块 | replace_content | 回应控制 | 替换内容 | connection_close | 请求控制 | 控制关闭长连接
|
|