相信很多人都熟悉iptables。
kangle的访问控制理念来自linux的iptables防火墙,kangle拥有功能最小化的匹配模块和标记模块,通过组合,反转等可以实现用户最复杂的需求;
最小化的匹配模块和标记模块犹如最小块的积木,独具匠心的玩家,总是能用小积木搭建出千变万化的造形。
Kangle的访问控制分为请求控制和回应控制
请求控制在最前面,用户发送请求过来时即进行请求控制。
回应控制发生在数据发送给用户之前,即进行回应控制。
Kangle详细数据流向图请查看:http://www.kanglesoft.com/thread-7224-1-1.html
每个控制由一张或多张表加一个默认目标组成,其中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 |
请求控制 |
控制关闭长连接 |
|