苏州IATF16949认证机构

咨询热线:

15850285687

新闻资讯

最新资讯

当前位置:首页 > 新闻资讯 > 最新资讯
AAA认证的开源实现
发布时间:2020-08-27 09:49  文章来源:苏州IATF16949  点击量:

互联网物联网的飞速发展催生了越来越复杂的系统,系统的细微之处,重要之处越来越多,操作授权需要的规则越来越复杂,记录预警审计的需求也越来越重要了。如此构建一个详尽灵活的认证系统越来越强烈。
 
今天我们要讨论的是一个AAA认证系统的开源方式实现。这个系统可以被分成数据传输,数据验证,验证存储,日志审计几个部分。另外,为了应对更大规模的验证需求,可以同时配备负载均衡模块。各个模块之间的关系图如下:
 
数据传输模块我们采用python的pyrad模块来实现。pyrad 模块提供了pyrad.server.Server.Run 方法来实现数据的循环处理,运行起来的Server 采用select 的方式实现多路复用。把单个的验证请求分离到_ProcessInput方法中,进而转到_HandleAuthPacket中。我们需要自行实现_HandleAuthPacket 方法在其中加入我们自己的处理逻辑。模块帮我们做好的逻辑,username 从pkt[1][0]中获得,password 通过pyrad.packet.AuthPacket 获取,其中需要传递给指定host传输的秘钥。拿到用户名,密码我们就可以根据自己的业务逻辑来做判断了。调用CreateReplyPacket 生成基础的packet返回数据,根据不同的判断结果,设置不同的参数返回给调用系统,接受或者拒绝。
 
身份验证模块采用传统的用户名密码验证,安全性系数会大大降低。所以,我们可以采用otp(一次性密码算法)来判断我们的密码正确与否。otp算法可以分为两种totp(基于时间的otp算法)和hotp(基于次数的otp算法)。这两种算法的关键都需要一个种子库。所以我们需要提前创建一个种子数据库,给固定的用户名分配固定的种子。因为算法已经开源,所以,种子库特别重要,一定记得妥善保存。
 
验证完成以后把日志保存到本地的文件中,考虑到统一的日志收集整理,我们可以用rsyslog做日志的转发,把验证的日志转发到远端的syslog。
 
远端的日志中心接收,我们可以用graylog来收集整理,建立不同级别的alert预警。随时观测我们的系统。
 
这样一个简单的AAA系统也就构建完成了。如果你的调用不够大,单一的并发也就可以满足你们的需求了。计算一下成本,需要一个种子服务器单独存储,一台日志服务器做审计,一台pyrad 验证服务器来完成前端的数据接收验证。
 
随着接入AAA验证的系统及网络设备越来越多,以上的结构也就不能满足需求了。这时候我们就要提出新的解决方案。
 
我们先用supervisor 启动几组pyrad 程序,每组完成不同的策略,给不同的系统服务。这样我们就需要一个前端程序进行均衡分发。幸运的是新版本的nginx 提供了stream 模块,可以提供基于udp 协议的均衡代理。通过在stream 中配置几组upstream 接口分别对用后端supervisor 控制的几组程序,通过不同的选路策略,可以完成不同的均衡。同时nginx 中还提供了健康检查,会剔除掉不健康的pyrad进程。经过测试一台4核cpu 8G 内存的机器可以抗住200客户端的并发。
太仓iso9001认证

苏州奥罗曼企业管理咨询有限公司

地址:太仓市科教新城健雄路20号  电话:15850285687

联系人:沈先生  邮编:215400  公司网址:http://www.isoalm.com/  苏ICP备20034301号

版权所有 ©苏州奥罗曼企业管理咨询有限公司专业服务苏州IATF16949,苏州IATF16949认证费用,太仓ISO9001,太仓ISO9001认证咨询机构   网站地图  太仓网站建设
 
QQ在线咨询
咨询热线1
15850285687
咨询热线2
15850285687