网站建设返回函数,石家庄网站制作机构,网页怎么制作的,上海企业微信网站制作一、Suricata介绍 Suricata是一个功能强大、用途广泛的开源威胁检测引擎#xff0c;提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。它执行深度数据包#xff08;网络流量#xff09;检查以及模式匹配#xff0c;在威胁检测中非常强大。 工作流程#xff1a; 主… 一、Suricata介绍 Suricata是一个功能强大、用途广泛的开源威胁检测引擎提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。它执行深度数据包网络流量检查以及模式匹配在威胁检测中非常强大。 工作流程 主要特点 IDS/IPS – Suricata 是一个基于规则的入侵检测和防御引擎它利用外部开发的规则集例如Talos规则集和新兴威胁 Suricata 规则集来监控网络流量中是否存在任何恶意活动、策略违规和威胁。 自动协议检测——Suricata 引擎自动检测 HTTP 和 HTTPS 等协议。任何端口上的 FTP 和 SMB并应用适当的检测和日志记录逻辑。这在检测恶意软件和 CnC 通道时派上用场。 Lua 脚本——Suricata 可以调用提供高级恶意软件检测的Lua脚本以检测和解码原本难以检测的恶意软件流量。 多线程——Suricata在确定网络流量时提供速度和重要性。该引擎旨在应用现代多核硬件芯片组提供的增强处理能力。 二、安装与使用Suricata
2.1、安装 参考2. Quickstart guide — Suricata 7.0.2-dev documentation 因为官方的PPA可以用于安装。要安装最新的稳定Suricata版本请执行以下步骤: sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata jq 添加了专用的PPA存储库更新索引后可以安装Suricata。我们建议此时安装jq工具因为它将有助于显示Suricata的EVE JSON输出中的信息。 安装Suricata后您可以检查您运行的Suricata的版本、选项以及服务状态 sudo suricata --build-info sudo systemctl status suricata 执行文件/usr/bin/suricata 配置项与rule规则集/etc/suricata/ 需要重点关注的是suricata.yaml和rules文件夹 suricata.yaml文件是对于suricata的软件配置。 rules文件夹中存放了相关的检测规则如果在suricata运行过程中有数据包分析触发了检测规则则会以日志的形式输出。 日志文件/var/log/suricata/也可以在配置文件suricata.yaml中更改default-log-dir eve.json告警和事件的详细信息 fast.log告警信息简单汇总一行内容不是具体信息 stats.log引擎统计信息比如内存使用计数、数据包数量计数 suricata.logsuricata启动过程相关日志 基本指令操作 升级Suricata: $ sudo apt-get update $ sudo apt-get upgrade suricata 删除Suricata $ sudo apt-get remove suricata 希望 Suricata 具有内置启用调试 $ sudo apt-get install suricata-dbg 2.2、配置Suricata 首先要配置内部网络和外部网络参数修改配置文件/etc/suricata/suricata.yaml HOME_NET: [192.168.0.0/16,10.0.0.0/8,172.16.0.0/12] # 内网是HOME_NET参数设置为系统内网网段 EXTERNAL_NET: !$HOME_NET # 指定外部网络 指定Suricata检查网络流量的网络接口(ip addr查看 确保将default-rule-path属性设置为/etc/suricata/rules 保存更改并关闭配置文件。然后重新启动Suricata以应用更改 sudo systemctl restart suricata 2.3、更新Suricata规则集 默认情况下Suricata附带一组有限的检测规则位于/etc/suricata/rules/目录中。但是这些规则在检测威胁入侵方面能力较弱可以更新业内知名的第三方规则集来提高检测效果。 Suricata提供了一个名为suricata-update的工具它允许您从规则集提供者那里获取规则。有些是免费的例如ET Open set而有些则需要付费订阅。 它是一个用Python编写的工具可以使用pip全局安装Suricata-Update供所有用户使用pip3 install --upgrade suricata-update 要为您的服务器获取最新的规则集请运行以下命令 $ sudo suricata-update update-sources # 更新规则集索引 $ sudo suricata-update list-sources # 列出默认的规则提供程序集 $ sudo suricata-update enable-source et/open # 添加规则集et/open $ sudo suricata-update -o /etc/suricata/rules 从输出中您可以看到suricata-update获取免费的Emerging Threats ET Open Rules并将它们保存到 Suricata 的/etc/suricata/rules/suricata规则文件。此外它表示处理的规则数。在此示例中总共添加了45266个。其中启用了35359个删除了6个修改了131个。 2.4、测试 Suricata 规则 在开始测试Suricata之前建议先测试一下配置是否正常 $ sudo suricata -T -c /etc/suricata/suricata.yaml -v 这里将按照Suricata 的快速入门指南的建议通过模拟入侵来测试ET Open规则集。 通过向作为NIDS 网络入侵和检测系统框架的 testmynids.org网站发送 HTTP 请求将使用签名 ID 2100498 测试 IDS 功能。 2100498: /etc/suricata/rules/ suricata.rules中存在2100498 alert ip any any - any any (msg : GPL ATTACK_RESPONSE id check returned root ; content : uid0|28|root|29| ; classtype :bad -unknown ; sid : 2100498 ; rev : 7 ; metadata :created_at 2010_09_23 , updated_at 2010_09_23 ;) 这 将对任何在其有效负载中包含内容的 IP 流量发出警报。 $ curl http://testmynids.org/uid/index.html 应该得到以下输出 发送的 HTTP请求旨在通过模仿id命令的输出来触发警报该命令可能通过 shell 在受感染的远程系统上运行。 现在让我们筛选 Suricata 的日志以获取相应的警报。Suricata 附带两个默认启用的日志文件 /fast.log /var/log/suricata/eve.json 将使用grep 命令在/var/log/suricata/fast.log日志文件中检查与curl 请求相对应的日志条目。我们将使用快速入门文档中的2100498规则标识符搜索日志条目 $ grep 2100948 /var/log/suricata/fast.log 这样将获得以下表示入侵的输出 或者您可以检查/var/log/suricata/eve.log日志文件中的签名 ID 2100498如图所示 $ jq select(.alert .signature_id2100498) /var/log/suricata/eve.json 三、suricata-update规则管理
参考 suricata-update规则管理 - 简书 (jianshu.com) Suricata-Update是更新和管理Suricata规则的官方方式。 安装 pip3 install --upgrade suricata-update 更新规则 suricata-update命令将执行以下操作 查找suricata路径上的程序以确定其版本 查找/etc/suricata/enable.conf,/etc/suricata/disable.conf,/etc/suricata/drop.conf和/etc/suricata/modify.conf以查找要应用于下载规则的过滤器。这些文件是可选的不需要存在。 下载适用于您的Suricata版本的Emerging Threats Open规则集如果找不到则默认为4.0.0。 应用上面加载的启用禁用删除和修改过滤器。 写出规则/etc/suricata/rules/suricata.rules。 在测试模式下运行Suricata /etc/suricata/rules/suricata.rules suricata-update用法 rootnode1:/etc/suricata# suricata-update -h usage: suricata-update update [-h] [-v] [-q] [-D directory] [-c filename] [--suricata-conf filename] [--suricata path] [--suricata-version version] [--user-agent user-agent] [--no-check-certificate] [-V] [-o directory] [-f] [--yaml-fragment filename] [--url url] [--local path] [--sid-msg-map filename] [--sid-msg-map-2 filename] [--disable-conf filename] [--enable-conf filename] [--modify-conf filename] [--drop-conf filename] [--ignore pattern] [--no-ignore] [--threshold-in filename] [--threshold-out filename] [--dump-sample-configs] [--etopen] [--reload-command command] [--no-reload] [-T command] [--no-test] [--no-merge] [--offline] [--fail] optional arguments: -h, --help show this help message and exit -v, --verbose 更详细的输出 -q, --quiet 安静地跑。仅显示警告和错误消息 -D directory, --data-dir directory 设置备用数据目录 (default: /var/lib/suricata) -c filename, --config filename suricata-update配置文件的路径 (default: /etc/suricata/update.yaml) --suricata-conf filename suricata配置文件的路径 (default: /etc/suricata/suricata.yaml) --suricata path Suricata程序的路径 --suricata-version version 将Suricata版本设置为特定版本而不是检查路径上的Suricata版本。 --user-agent user-agent 为HTTP请求设置自定义用户代理字符串 --no-check-certificate Disable server SSL/TLS certificate verification -V, --version 显示suricata-update的版本 -o directory, --output directory 要将规则输出到的目录 -f, --force 强制远程规则文件下载如果它们不是刚刚下载或者远程校验和与缓存副本匹配 --yaml-fragment filename Output YAML fragment for rule inclusion --url url 从中下载规则的URL。此选项可以多次使用 --local path 要包含的本地规则文件的文件名或目录的路径 --sid-msg-map filename Generate a sid-msg.map file --sid-msg-map-2 filename Generate a v2 sid-msg.map file --disable-conf filename Filename of rule disable filters --enable-conf filename Filename of rule enable filters --modify-conf filename Filename of rule modification filters --drop-conf filename Filename of drop rule filters --ignore pattern Filenames to ignore (can be specified multiple times; default: *deleted.rules) --no-ignore Disables the ignore option. --threshold-in filename Filename of rule thresholding configuration --threshold-out filename Output of processed threshold configuration --dump-sample-configs Dump sample config files to current directory --etopen 默认下载ET / Open规则集 --reload-command command Command to run after update if modified --no-reload 禁用Suricata规则重新加载 -T command, --test-command command 指定自定义测试命令以在重新加载Suricata之前测试规则 --no-test 禁用测试命令并继续进行就像它已经通过一样 --no-merge 不要将规则合并到单个规则文件中。警告如果2个输入规则文件具有相同名称则不会尝试解决冲突。 --offline Run offline using most recent cached rules --fail Strictly fail and exit in case of an error other commands: update-sources Update the source index list-sources List available sources enable-source Enable a source from the index disable-source Disable an enabled source remove-source Remove an enabled or disabled source add-source Add a new source by URL check-versions Check version of suricata-update 四、Suricata规则 suricata规则由三部分组成 Action规则匹配后所执行的操作 Header定义规则的协议、源和目的IP地址、端口和流量方向 Options选项指定诸如签名IDsid、日志信息、匹配数据包内容的正则表达式、分类类型以及其他可以帮助缩小识别合法和可疑流量的修饰语 。 一条自定义规则 alert http any any $HOME_NET 80 (msg:web服务器出现404状态码; content: 404; http_stat_code; sid:561001;) Action取值范围如下 pass如果匹配到规则suricate会停止扫描并放行数据包 drop如果程序匹配到了这类规则这个数据包被阻断将不会被发送到目标。Drop只能在IPS/inline模式下可用。缺点接收器没有接收到正在发生事情的信息导致超时TCPSuricata对这个数据包生成一个警报。 reject不同于 Drop 直接丢弃数据包reject 在匹配到规则时会主动进行拒绝数据包。有两种类型的拒绝数据包将自动选择。当违规数据包与TCP有关时会发送Reset-Packet包。对其他所有协议会发送ICMP-error包。Suricata同时会生成一个警告。在Inline/IPS模式下违规数据包也会被drop掉与Drop action相似。 alert当匹配到规则时Suricata 不会对数据包进行任何操作会像对正常数据包一样进行放行除了会记录一条只有管理员能够看到的警 以上四种操作也是有优先级的默认的优先级为Pass Drop Reject Alert。也就是规则在匹配时会优先考虑包含 Pass 的规则其次才是 Drop再然后是 Reject最后再考虑包含 Alert 的规则 Header包含如下几项内容 协议(Protocol)这个字段用来告诉 Suricata当前规则所包含的协议。其取值可以为tcpudpicmpiphttpftptls(包含ssl)smbdns等这些协议能不能用取决于配置文件suricata.yaml中是否配置了这些协议。 源/目的地址(Source and destination)源/目的地址可以设置为 IP 地址或者在配置文件(Suricata.yaml)里定义的变量 端口号(Ports)不同的协议使用不同的端口号例如 HTTP 使用 80 端口而 HTTPS则使用 443。通常情况下端口号会设置为 any这样会影响所有的协议 流向(Direction)流向告诉规则匹配哪些流量数据是源ip到目标ip的单项流量还是2个ip往返之间的流量。其中每条规则都必须有一个箭头如示-或。 Options包含一系列选项选项以keyvalue或者key的形式存在用;进行分隔keyword: settings; keyword; 常见的选项如下6. Suricata Rules — Suricata 6.0.3 documentation 五、添加自己的Suricata规则 6.13. HTTP关键字 — Suricata 7.0.0-dev 文档 (osgeo.cn) suricata HTTP关键字 - 23云恋49枫 - 博客园 (cnblogs.com) 1、在/etc/suricata/rules/下创建my.rules文件 2、向my.rules中写入自己的规则 # 百度搜素
alert tcp any any - any any (msg:hit baidu.com...; content:baidu; reference:url, www.baidu.com; sid:888888890;)
alert tcp any any - any any (msg:hit baidu.com; content:baidu; sid:888888891;)# 登录dvwa
alert http any any any any (msg:dvwa url; content:/login.php; http_uri; nocase; sid:8880; rev:1;)
alert http any any - any any (msg:dvwa protocol; flow:to_server; http_protocol; content:HTTP/1.1; sid:8881; rev:1;)
alert http any any - any any (msg:dvwa request header; content:application/x-www-form-urlencoded; http_header; sid:8882; rev:1;)
alert http any any - any any (msg:dvwa request referer; http_referer; content:http://192.168.11.45/login.php; sid:8883; rev:1;)
alert http any any - any any (msg:dvwa request user agent; content:Mozilla/5.0; http_user_agent; nocase; sid:8884; rev:1;)
alert http any any - any any (msg:dvwa request cookie; content:securityimpossible; http_cookie; nocase; sid:8885; rev:1;)
alert http any any - any any (msg:dvwa request body; content:usernameadmin; http_client_body; nocase; sid:8886; rev:1;)
alert http any any - any any (msg:dvwa request body; file_data; content:usernameadmin; content:passwordpassword; nocase; sid:88861; rev:1;)
alert http any any any any (msg:dvwa; content: 200; http_stat_code; sid:8887; rev:1;)
alert http any any any any (msg:dvwa; content: 302; http_stat_code; sid:8888; rev:1;)
alert http any any any any (msg:dvwa code; content:impossible; nocase; sid:8889; rev:1;)
# sqli-lab
alert http any any - any any (msg:SQL注入攻击; content:/Less-1; http_uri; nocase; sid:562001; rev:1;)
alert http any any - any any (msg:SQL注入攻击-union.; content:select; http_uri; nocase; classtype:web-sql-injection; sid:562002; rev:1;)
alert http any any - any any (msg:SQL注入攻击---.; content:--; http_uri; nocase; classtype:web-sql-injection; sid:562003; rev:1;)
alert http any any - any any (msg:SQL注入攻击response.; content:Your Login name; http_server_body; nocase; classtype:web-sql-injection; sid:562004; rev:1;)
alert http any any - any any (msg:SQL注入攻击response_1.; http_server_body; content:Your Login name; content:Your Password; nocase; classtype:web-sql-injection; sid:562005; rev:1;) # 语法解析error
alert http any any - any any (msg:SQL注入攻击response_2.; file_data; content:Your Login name; content:Your Password; nocase; classtype:web-sql-injection; sid:562006; rev:1;) 3、更新Suricata配置文件/etc/suricata/suricata.yaml确保你的本地规则文件已添加到规则列表 4、如果您必须更正您的规则和/或修改Suricata的YAML配置文件那么您必须重新启动Suricata。 systemctl restart suricata 5、运行suricata并查看是否正在加载规则。 suricata -c /etc/suricata/suricata.yaml -i ens160 比如错误的规则被检测出来了 如果规则未能加载Suricata将显示与它认为该规则不可加载时一样多的信息。特别注意细节查找特殊字符、空格、大写字符等的错误。 6、虚拟机上网页访问baidu.com或者curl baidu.com 7、笔记本上网页访问http://192.168.11.45/login.php输入用户密码登录 8、网页访问http://192.168.11.45:8080/Less-1/?id-1 UNION SELECT 1,2,3 -- 六、参考 GitHub - OISF/suricata: Suricata is a network Intrusion Detection System, Intrusion Prevention System and Network Security Monitoring engine developed by the OISF and the Suricata community. 7.2. 添加您自己的规则 — Suricata 7.0.0-dev 文档 (osgeo.cn) 官方文档 Suricata – 入侵检测、预防和安全工具 - 知乎 (zhihu.com) (2条消息) Suricata规则编写_投篮不准的程序员不是一个好车手的博客-CSDN博客 五.Suricata识别http攻击流量 - eveplw - 博客园 (cnblogs.com)