eduard-daily/eBPF-dns-monitor
GitHub: eduard-daily/eBPF-dns-monitor
基于 eBPF 和 Python 的轻量级 Linux DNS 流量监控与威胁检测工具,支持进程关联和实时日志记录。
Stars: 10 | Forks: 3
使用 eBPF 监控 Linux DNS 流量
🔎 基于 eBPF 的 Linux 主机监控与威胁检测
轻量级且高性能的监控与安全工具,利用 eBPF 和 Python 提供实时的 DNS 监控。通过在内核空间执行,eBPF 工具避免了昂贵的上下文切换,并通过监控出站连接,为您的网络提供高效的恶意行为检测和防御
## 目录
- [简介](#introduction-)
- [依赖项](#dependencies-)
- [使用方法](#usage-)
- [将脚本作为 systemd 服务运行](#running-script-as-a-systemd-service)
- [日志](#logging-)
## 简介 🌼
强大的监控工具,专注于
DNS 监控,利用 eBPF 和 Python 的强大功能提供实时监控和可行的洞察,以识别和缓解潜在威胁。
该工具是 DNS 流量的替代监控解决方案。
基于 [Nurkholish Halim](https://medium.com/@nurkholish.halim/a-deep-dive-into-ebpf-writing-an-efficient-dns-monitoring-2c9dea92abdf) 的开源 eBPF DNS 监控工具。
源代码 gist 可在[此处](https://gist.github.com/oghie/b4e3accf1f87afcb939f884723e2b462)找到。
## 依赖项 🧵
###### 安装
`apt install python3-dnslib python3-bpfcc bpfcc-tools libbpfcc linux-headers-$(uname -r)`
## 使用方法 ⚙
此工具在 eBPF 级别捕获出站 DNS 请求和响应。
运行 `python3 ebpf_dns_main.py` 开始使用。注意:根据您的 Linux 内核版本,可能需要 sudo 权限。
```
$ root@host:~/# python3 ebpf_dns_main.py
```
示例输出:
```
The program is running. Press Ctrl-C to abort.
2023-08-27T17:43:21Z COMM=systemd-resolve PID=645 TGID=645 DEV=ens33 PROTO=UDP SRC=192.168.40.130 DST=192.168.40.2 SPT=47892 DPT=53 UID=101 GID=103 DNS_QR=0 DNS_NAME=visitukraine.today. DNS_TYPE=A
2023-08-27T17:43:21Z COMM=systemd-resolve PID=645 TGID=645 DEV=ens33 PROTO=UDP SRC=192.168.40.2 DST=192.168.40.130 SPT=53 DPT=47892 UID=101 GID=103 DNS_QR=1 DNS_NAME=visitukraine.today. DNS_TYPE=A DNS_DATA=104.21.71.200
```
## 将脚本作为 systemd 服务运行
要将脚本设置为自动作为服务运行,请将主脚本复制到 `/etc/ebpf-dns-monitor`,并将 ebpf-dns-monitor.service 复制到 `/etc/systemd/system/`
在 `/etc` 下创建一个新文件夹:
```
sudo mkdir /etc/ebpf-dns-monitor.
```
将主 .py 脚本复制到该文件夹。
```
cp ebpf-dns-main.py /etc/ebpf-dns-monitor/
```
将 .service 文件复制到 `/etc/systemd/system/`。
```
cp ebpf-dns-monitor.service /etc/systemd/system/
```
重新加载 daemon。
```
sudo systemctl daemon-reload
```
现在我们可以启用新服务并启动它。
```
sudo systemctl enable ebpf-dns-monitor.service
sudo systemctl start ebpf-dns-monitor.service
sudo systemctl status ebpf-dns-monitor.service
```
## 日志 📈
应用程序会将所有请求和响应记录到 `/var/log/ebpf-dns-monitor.log`,可以使用日志管理解决方案 (SIEM) 轻松监控。
日期时间格式为 RFC 3339。
标签:AMSI绕过, DNS监控, Docker镜像, IP 地址批量处理, LangChain, Python, UDP, WSL, 内核态, 威胁检测, 安全渗透, 开源, 异常检测, 性能监控, 无后门, 流量捕获, 网络安全, 网络拓扑, 轻量级, 逆向工具, 速率限制, 隐私保护