01 网络安全软件架构设计
1.软件执行框图
网络数据包处理图
网络安全功能处于驱动和网络协议栈之间, 也就是在数据包进入网络协议栈之前由网络安全判别后, 如果是合法的数据包才允许进入协议栈处理, 非法的数据包根据用户的配置是否丢弃还是允许进入协议栈并做日志记录。
网络安全处理功能流图
2.软件实现方式
网络安全功能原型函数示例如下:
static eFrameProcessingResult_t network_secure(
NetworkBufferDescriptor_t * const pxNetworkBuffer )
{
int ret1=eProcessBuffer;
ret1=network_secure_firewall(pxNetworkBuffer);
if(ret1==eReleaseBuffer)
return ret1;
ret1=network_secure_dos(pxNetworkBuffer);
if(ret1==eReleaseBuffer)
return ret1;
ret1=network_secure_acl(pxNetworkBuffer);
if(ret1==eReleaseBuffer)
return ret1;
return eProcessBuffer;
}
功能函数返回值为 eProcessBuffer 代表数据可以返回给协议栈处理, 返回eReleaseBuffer 说明数据包不合法需要过滤丢弃。
3.配置管理
设计一个统一接口, 解析并配置网络安全功能都有对应的配置功能项
注:数据加解密操作在配置接收接口
4.配置保存
FLASH中配置存储方式如下:
5.日志处理
安全日志都会经过日志收集器筛选,根据用户配置决定日志是存储还是通过网络发送到日志服务器。
02 功能设计
1.入侵规则列表
入侵规则需做成配置文件, 可独立更新。 入侵规则的存储应为独立专用区域, 软件及路由文件等的更新不能引起入侵规则的变化 。
根据需要匹配的元素, 可定义入侵规则结构体如下:
2.防火墙
与入侵规则相似
3.DOS
防御 DOS 攻击通常是指被防护的设备(内网 IP) 不被外部某种数据包类型超过预定的阈值被动通信或干扰, 所以我们检测的目标是外部到内部的特定类型(ICMP、 TCP、 UDP) IP数据包在单位时间内计数, 当计数超过设定的阈值时就丢包
当收到数据进入 DOS 策略匹配时, 如果匹配到了策略, 就要查询此数据包的目的 IP 是否被记录统计, 如果没有记录此 IP 相关的数据, 就要创建一个记录。
点击下方二维码关注我微信公众号,更多文章先一步在公众号放出,谢谢!