StratosphereLinuxIPS简介
StratosphereLinuxIPS(简称Slips)是一款功能强大的端点行为入侵防御和检测系统,它利用机器学习来检测网络流量中的恶意行为。Slips可以处理实时网络流量、PCAP文件以及来自Suricata、Zeek/Bro和Argus等流行工具的网络流量。
Slips的威胁检测基于三个方面的组合:
- 训练用于检测恶意行为的机器学习模型
- 40多个威胁情报源
- 专家启发式规则
Slips会收集恶意行为的证据,并使用经过广泛训练的阈值,在累积足够证据时触发警报。
Slips是第一个免费的基于行为机器学习的IDS/IPS,为终端提供本地入侵防御能力。它由Sebastian Garcia于2012年在布拉格捷克技术大学人工智能中心的Stratosphere实验室创建。Slips的目标是提供一个本地IDS/IPS,利用机器学习通过行为分析检测网络攻击。
Slips目前支持Linux和MacOS系统,其阻断功能仅在Linux上支持。Slips基于Python开发,依赖Zeek网络分析框架来捕获实时流量和分析PCAP文件,并使用Redis 7.0.4及以上版本进行进程间通信。
Slips的主要特性
-
基于行为的入侵防御: Slips使用机器学习检测网络流量中的恶意行为,从而实现强大的入侵防御功能。
-
模块化设计: Slips采用Python编写,高度模块化,不同模块负责对网络流量进行特定检测。
-
针对性攻击和命令控制检测: Slips重点识别网络流量中的针对性攻击和命令控制通道。
-
灵活的流量分析: Slips可以分析实时网络流量、PCAP文件,以及来自Suricata、Zeek/Bro和Argus等流行工具的网络流。
-
威胁情报更新: Slips持续更新威胁情报文件和数据库,随着更新提供相关检测。
-
与外部平台集成: Slips的模块可以在VirusTotal和RiskIQ等外部平台上查询IP地址。
-
图形用户界面: Slips提供控制台图形界面(Kalipso)和Web界面,用图表和表格显示检测结果。
-
点对点(P2P)模块: Slips包含一个复杂的自动系统,可以在网络中查找其他对等节点,并以平衡、可信的方式自动共享IoC数据。P2P模块可根据需要启用。
-
Docker实现: 通过Docker在Linux系统上运行Slips变得简单,允许实时流量分析。
-
详细文档: Slips提供详细的文档,指导用户高效利用其功能。
安装与使用
推荐使用Docker来运行Slips。以下是在不同系统上的安装和使用方法:
Linux系统
docker run --rm -it -p 55000:55000 --cpu-shares "700" --memory="8g" --memory-swap="8g" --net=host --cap-add=NET_ADMIN --name slips stratosphereips/slips:latest
./slips.py -f dataset/test7-malicious.pcap -o output_dir
cat output_dir/alerts.log
MacOS M1系统
在MacOS上不要使用--net=host,如果你想从主机访问容器内部端口:
docker run --rm -it -p 55000:55000 --cpu-shares "700" --memory="8g" --memory-swap="8g" --cap-add=NET_ADMIN --name slips stratosphereips/slips_macos_m1:latest
./slips.py -f dataset/test7-malicious.pcap -o output_dir
cat output_dir/alerts.log
MacOS Intel处理器系统
docker run --rm -it -p 55000:55000 --cpu-shares "700" --memory="8g" --memory-swap="8g" --net=host --cap-add=NET_ADMIN --name slips stratosphereips/slips:latest
./slips.py -f dataset/test7-malicious.pcap -o output_dir
cat output_dir/alerts.log
更多安装选项可参考官方文档。
Slips参数的详细说明可查看这里。
图形用户界面
Slips提供了两种图形界面来查看输出:Web界面和基于命令行的Kalipso界面。
Web界面
启动Slips后,在浏览器中访问http://localhost:55000/
即可打开Web界面:
更多关于Web界面的信息,请查看官方文档。
Kalipso命令行界面
关于Kalipso界面的更多信息,请参考官方文档。
系统要求
Slips需要Python 3.10.12版本,并且至少4GB RAM才能流畅运行。
配置
Slips的配置文件位于config/slips.conf,包含了不同模块的用户配置和一般执行设置。
主要配置选项包括:
- 修改
time_window_width
参数来改变时间窗口宽度 - 将分析方向改为
all
以查看来自和发往您计算机的攻击 - 指定是
train
还是test
机器学习模型 - 启用弹出通知、阻断功能、插入自定义Zeek脚本等
更多关于配置文件选项的详细信息,请参考官方文档。
贡献指南
我们欢迎各种形式的贡献来改进Slips的功能。
请仔细阅读贡献指南以了解如何为Slips的开发做出贡献。
您可以:
- 运行Slips并报告bug
- 提出功能请求和建议
- 提交解决GitHub issue的Pull Request
- 提交新功能的Pull Request
- 提交新的检测模块
创建新检测模块的说明和模板可以在这里找到。
如果您是学生,我们鼓励您申请我们参与的Google Summer of Code项目。查看Slips in GSoC2023了解更多信息。
您可以加入我们的Discord讨论进行提问和交流。我们感谢您的贡献,谢谢您帮助改进Slips!
文档
故障排除
如果您无法在不使用sudo的情况下监听接口,可以运行以下命令允许任何用户使用Zeek监听接口(不仅限于root):
sudo setcap cap_net_raw,cap_net_admin=eip /<path-to-zeek-bin/zeek
如有问题,您可以:
许可证
Slips采用GNU通用公共许可证。
致谢
Slips的开发得到了以下组织的慷慨支持和资助:
- NlNet Foundation (https://nlnet.nl/)
- 布拉格捷克技术大学人工智能中心 (https://www.aic.fel.cvut.cz/)
- Avast (https://www.avast.com/)
- CESNET (https://www.cesnet.cz/)
- Google Summer of Code (2023, 2024) (https://summerofcode.withgoogle.com/)
他们的资助对本项目的开发和成功起到了至关重要的作用。我们衷心感谢他们致力于推动技术进步,以及对Slips为社区带来价值的认可。
结语
StratosphereLinuxIPS(Slips)是一个强大而灵活的入侵防御系统,它结合了机器学习、威胁情报和专家规则,为网络安全提供了全面的保护。无论您是网络管理员、安全研究人员还是对网络安全感兴趣的爱好者,Slips都为您提供了一个功能丰富、易于使用的工具来增强您的网络防御能力。我们期待看到更多人加入Slips社区,共同推动这个开源项目的发展,为网络安全做出贡献。