编程语言
首页 > 编程语言> > suricata 源码分析_01

suricata 源码分析_01

作者:互联网

https://blog.51cto.com/leejia/2457743

Suricata简介

Suricata是一个高性能的IDS、IPS和网络安全监控的引擎。它是开源的,由一个社区经营的非营利基金会开放信息安全基金会(OISF)开发。

安装环境建议使用centos7/redhat7版本以上的操作系统,Suricata版本建议使用4.x以上,这样方便多线程,Hypersca,pfring等功能的使用。6版本的操作系统编译环境需要花时间取升级修复,不建议使用。

IDS/IPS简介

检测系统(Intrusion detection system,简称“IDS” 是一种对网络传输进行即时监视,根据预设的策略,在发现可疑传输时发出警报。
预防系统(Intrusion prevention system,简称“IPS”) 是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,一般位于防火墙和网络的设备之间,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。相对于IDS主能提供了中断防御功能。

Suricata主要特点

支持从nfqueue中读取流量
支持分析离线pcap文件和pcap文件方式存储流量数据
支持ipv6
支持pcap,af_packet,pfring,硬件卡抓包
多线程
支持内嵌lua脚本,以实现自定义检测和输出脚本
支持ip信用等级
支持文件还原
兼容snort规则
支持常见数据包解码:IPv4, IPv6, TCP, UDP, SCTP, ICMPv4, ICMPv6, GRE, Ethernet, PPP, PPPoE, Raw, SLL, VLAN, QINQ, MPLS, ERSPAN, VXLAN
支持常见应用层协议解码:HTTP, SSL, TLS, SMB, DCERPC, SMTP, FTP, SSH, DNS, Modbus, ENIP/CIP, DNP3, NFS, NTP, DHCP, TFTP, KRB5, IKEv2, SIP, SNMP, RDP

suricata程序入口

graph A[suricata入口函数] -->B(SuricataMain) B-->C[SCInstanceInit实例化一个suricata配置] C-->D[ParseCommandLine 命令行解析] D-->E[FinalizedRunMode 确定Suricata最后的运行模式] E-->F[StartInternalRunMode 内部模式运行] F-->G[GlobalInitPreConfig初始化全局预配置] G-->H(LoadYamlCongfig从yaml配置文件加载suriacata配置) H-->L(ConfDump转储配置到 stdout) L-->I(SetupUserMode建立用户态模式) I-->J(InitRunAs初始化用户和组 Suricata 将作为运行方式) J-->K(UtilCpuPrintSummary打印检测到的 CPU 的摘要) K-->M(ParseInterfacesList解析网卡接口列表) M-->N(PostConfLoadedSetup旨在包含加载配置后需要运行的代码) N-->S(SCDropMainThreadCaps) S-->1(CoredumpEnable) 1-->2(PreRunPostPrivsDropInit我们需要在数据包开始流动之前运行的任务) 2-->3(PostConfLoadedDetectSetup) 3-->4(SCSetStartTime加载时间) 4-->5(RunModeDispatch运行模式分发) 5-->6(SC_ATOMIC_SET更新引擎阶段/状态标志) 6-->7(PacketPoolPostRunmodes数据池) 7-->8(TmThreadContinueThreads 取消暂停所有暂停的线程) 8-->9(PostRunStartedDetectSetup设置max_pending_return_packets值) 9-->10(SuricataMainLoop suricata主循环) 10-->11(UnixSocketKillSocketThread unix杀死socket线程) 11-->12(PostRunDeinit清理/关闭主模式和unix套接字模式的代码将在 unix 插槽模式下每个 pcap运行一次) 12-->13(TmThreadKillThreads杀死剩余的线程)

标签:01,--,Suricata,IDS,支持,源码,pcap,suricata
来源: https://www.cnblogs.com/zhaodejin/p/16127461.html