上一篇文章里面提到提到了一个基本的框架,代码层面主要涉及到了两个组件:ztserver 和 ztgw。 其中,ztserver主要有chrome插件和web管理端两个部分, ztgw主要用来做网关的功能,实现策略的检测。 ztserver实现用户和资源的管理,包括网关的主要数据配置(通过redis数据交互)。chrome插件会将用户的token置入到特定的资源请求中,实现用户在网关的认证。ztgw 根据token识别出用户,会查询redis中的用户权限数据,判断用户是否有请求该资源的权限。可以延伸一下,通过定制浏览器来替代插件,也能扩展到移动端上,也可以加入证书实现双认证,实现更多的功能,提高用户侧安全等级。
ztserver开放了一个websocket跟用户端的插件进行通信,必须在ztserver的ws之前搭建一个web网关,客户端的IP是通过x-forwarded-for头部取值,其他无效。
ztgw和ztserver通过redis进行数据通信,ztserver会将配置数据写入redis。
ztgw和ztserver都会将日志写入elasticsearch(7.x),ztserver会查询elasticsearch中的数据。
ztserver依赖ztgw网关的firewalld-cmd 将允许访问ztgw的客户端IP写入ipset,比如:
rule family="ipv4" source ipset="test" port port="8080" protocol="tcp" accept rule family="ipv4" source ipset="test" port port="8443" protocol="tcp" accept
上面的ipset的名称即为test, 端口和协议通过rich-rule进行指定。测试环境centos8通过
. 用户总数,代表ztserver管理的用户数。
. 活跃用户,代表已经连接到websocket的用户数量。
. 资源总数,代表资源的数量(域名的数量)。
. 在线用户统计是一周之内访问ztgw的用户,即实际访问过资源的数量,目前只统计了一周之内每天的登陆的用户数。
. 新增用户,即添加用户,需要填写正确的邮箱,目前主要以邮箱识别用户
. 配置资源,即给用户添加可以访问的资源/域名
. 初始化,后台会给用户的邮箱发送一个token(每次访问ztgw都会带这个token,通过token识别这个用户),经过对称加密,这个token需要配置到chrome插件。
主要用来管理域名和资源的关系。
目前只有配置邮箱,发送token的作用,一定要准确。
目前不支持通配符,配置ztgw的证书和代理
分别记录了连接websocket的信息和访问ztgw的信息
网关的日志会写入rsyslog,通过定制rsyslog实现转发。
支持kafka消息通信,可以写入kafka进行转发。
其他细节说明,可以参考具体得doc文档,都有说明。
实现模型比较简单,后面会持续更新,欢迎issue 和 star。
问题讨论 Q群: 254210748。
本文作者:技信达科技
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/168898.html