suricata 源码分析_01 suricata简介

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程序入口

CoredumpEnable
PreRunPostPrivsDropInit我们需要在数据包开始流动之前运行的任务
PostConfLoadedDetectSetup
SCSetStartTime加载时间
RunModeDispatch运行模式分发
SC_ATOMIC_SET更新引擎阶段/状态标志
PacketPoolPostRunmodes数据池
TmThreadContinueThreads 取消暂停所有暂停的线程
PostRunStartedDetectSetup设置max_pending_return_packets值
SuricataMainLoop suricata主循环
UnixSocketKillSocketThread unix杀死socket线程
PostRunDeinit清理/关闭主模式和unix套接字模式的代码将在 unix 插槽模式下每个 pcap运行一次
TmThreadKillThreads杀死剩余的线程
suricata入口函数
SuricataMain
SCInstanceInit实例化一个suricata配置
ParseCommandLine 命令行解析
FinalizedRunMode 确定Suricata最后的运行模式
StartInternalRunMode 内部模式运行
GlobalInitPreConfig初始化全局预配置
LoadYamlCongfig从yaml配置文件加载suriacata配置
ConfDump转储配置到 stdout
SetupUserMode建立用户态模式
InitRunAs初始化用户和组 Suricata 将作为运行方式
UtilCpuPrintSummary打印检测到的 CPU 的摘要
ParseInterfacesList解析网卡接口列表
PostConfLoadedSetup旨在包含加载配置后需要运行的代码
SCDropMainThreadCaps
posted @   心亘久  阅读(1721)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示