Mlauncher6/CMLF

GitHub: Mlauncher6/CMLF

一款具备 AI 威胁检测和自动学习能力的可定制化 Linux 状态防火墙。

Stars: 0 | Forks: 0

# CMLF 🔥 CMLF - 可定制化 MLuncher 防火墙 | 企业级状态防火墙,具备 AI 驱动的威胁检测、TUI 仪表板和自动学习模式
# 🔥 CMLF - 可定制化模块化 Linux 防火墙 ### *具备 AI 驱动威胁检测的企业级状态防火墙*
[![Go Version](https://img.shields.io/badge/Go-1.21%2B-00ADD8?style=for-the-badge&logo=go)](https://golang.org) [![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://www.linux.org) [![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](LICENSE) **🌐 [英语](README.md) | [波斯语](README-fa.md)**
## 🎯 **为什么选择 CMLF?** CMLF 不仅仅是一个防火墙——它是一个能够实时**学习**、**适应**和**保护**的智能安全系统。 | 传统防火墙 | CMLF | |----------------------|------| | ❌ 仅基于静态规则 | ✅ **动态异常检测** | | ❌ 无学习能力 | ✅ **自动流量分析** | | ❌ 基础终端界面 | ✅ **现代化 TUI 仪表板** | | ❌ 手动黑名单管理 | ✅ **带过期时间的自动拦截** | | ❌ 无 API | ✅ **REST + Prometheus 指标** | ## ✨ **独具匠心的功能** ### 🛡️ **智能威胁检测** - **端口扫描检测** - 超过阈值后自动拦截扫描器 - **SSH 暴力破解防护** - 动态 IP 黑名单 - **数据泄露检测** - 监控大型数据包传输 - **速率限制** - 基于客户端的令牌桶算法 ### 🎨 **现代化界面** - **实时 TUI** - 实时连接追踪和统计 - **HTTP API** - JSON 状态和 Prometheus 指标 endpoint - **颜色编码仪表板** - 易于阅读的视觉反馈 ### 🧠 **智能特性** - **学习模式** - 分析并建立正常流量模型 - **状态检测** - 完整的 TCP 连接追踪 - **持久化黑名单** - 通过 JSON 保存,重启后依然有效 - **试运行模式** - 在强制执行前测试规则 ### 🔧 **生产就绪** - **iptables 集成** - 内核级数据包过滤 - **Systemd 支持** - 作为后台服务运行 - **零依赖** - 单一静态二进制文件 - **低资源占用** - 通常仅需约 50MB RAM ## 📋 **快速入门指南** ### **步骤 1:安装依赖** ``` # Ubuntu/Debian sudo apt-get update && sudo apt-get install -y \ libpcap-dev \ iptables \ build-essential # RHEL/CentOS/Fedora sudo yum install -y \ libpcap-devel \ iptables \ gcc # Arch Linux sudo pacman -S \ libpcap \ iptables \ base-devel ### **步骤 2:安装 Go(如果未安装)** ```bash # 下载并安装 Go 1.21+ wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc ``` ### **步骤 3:获取 CMLF** ``` # 克隆仓库 git clone https://github.com/Mlauncher6/cmlf.git cd cmlf # 下载 Go 依赖 go mod init cmlf go get github.com/google/gopacket go get github.com/charmbracelet/bubbletea go get github.com/charmbracelet/lipgloss # 构建二进制文件 go build -ldflags="-s -w" -o cmlf CMLF.go ``` ### **步骤 4:设置配置** ``` # 创建配置目录 sudo mkdir -p /etc/cmlf # 创建默认规则文件 sudo tee /etc/cmlf/rules.conf << 'EOF' # ============================================ # CMLF 防火墙规则配置 # ============================================ # 格式:ACTION [conditions] # 动作:allow, deny, ratelimit, whitelist, blacklist # ============================================ # 允许本地网络流量 allow src 192.168.0.0/16 allow src 10.0.0.0/8 allow src 172.16.0.0/12 # 限制 Web 流量速率(50 请求/秒,突发 100) ratelimit dst port 80 rate 50/sec burst 100 ratelimit dst port 443 rate 50/sec burst 100 # 阻止已知的恶意子网 deny src 185.130.5.0/24 deny src 45.155.205.0/24 # 将关键服务加入白名单(覆盖所有其他规则) whitelist ip 8.8.8.8 whitelist ip 1.1.1.1 # 保护 SSH deny dst port 22 src 0.0.0.0/0 # 允许 ICMP (ping) allow proto icmp # 默认:允许其他所有流量(隐式) EOF # 设置适当的权限 sudo chmod 644 /etc/cmlf/rules.conf ``` ### **步骤 5:运行 CMLF** ``` # 使用 TUI 运行(推荐用于监控) sudo ./cmlf --tui # 作为 daemon 运行(生产环境) sudo ./cmlf --daemon # 学习模式 - 首先分析您的网络配置! sudo ./cmlf --learn --duration=3600 ``` ## 🎮 **完整使用指南** ### **命令行选项** ``` CMLF v1.0.0 - Customizable Modular Linux Firewall Usage: sudo ./cmlf [OPTIONS] Options: --tui Launch interactive terminal UI --daemon Run as background service --learn Enable learning mode --duration=3600 Learning duration in seconds --interface=eth0 Network interface to monitor --config=/etc/cmlf/rules.conf --dry-run Test without blocking --disable-http Disable HTTP metrics server Blacklist Management: --block-add=1.2.3.4 Add IP to blacklist --reason="Port scan" Block reason --block-remove=1.2.3.4 Remove IP from blacklist --block-list Show all blocked IPs --status Show firewall status Examples: sudo ./cmlf --tui --interface=ens33 sudo ./cmlf --learn --duration=1800 sudo ./cmlf --block-add=192.168.1.100 --reason="SSH brute force" ``` ### **TUI 键盘快捷键** | 按键 | 操作 | |-----|--------| | `q` / `Ctrl+C` | 退出 CMLF | | `b` | 查看黑名单 IP | | `r` | 从文件重新加载规则 | | `l` | 激活学习模式 | | `↑` `↓` | 滚动列表 | ## 📊 **监控与指标** ### **HTTP API 端点** ``` # 获取 JSON 状态 curl http://localhost:9090/status # 查看黑名单 curl http://localhost:9090/blacklist # Prometheus 指标 curl http://localhost:9090/metrics ``` ### **响应示例** ``` { "uptime": 86400.5, "packets_processed": 15234567, "packets_dropped": 1234, "active_connections": 42, "blacklisted_ips": 8 } ``` ### **Prometheus 集成** ``` # prometheus.yml scrape_configs: - job_name: 'cmlf' static_configs: - targets: ['localhost:9090'] metrics_path: '/metrics' ``` ### **Grafana 仪表板** 导入以下查询以获取数据包速率: ``` rate(cmlf_packets_processed[1m]) ``` ## 🧪 **测试你的防火墙** ### **测试端口扫描检测** ``` # 从另一台机器(注意:这将阻止您的 IP!) nmap -p 1-1000 YOUR_FIREWALL_IP # 检查是否被阻止 sudo ./cmlf --block-list ``` ### **测试 SSH 暴力破解防护** ``` # 使用 hydra(仅用于测试!) hydra -l root -p /usr/share/wordlists/rockyou.txt ssh://YOUR_FIREWALL_IP # 验证阻止 sudo iptables -L INPUT -n -v | grep DROP ``` ### **测试速率限制** ``` # 发送快速的 HTTP 请求 for i in {1..200}; do curl -s http://YOUR_SERVER > /dev/null & done # 在 TUI 中检查丢弃的数据包 ``` ### **验证学习模式** ``` # 步骤 1:开始学习 sudo ./cmlf --learn --duration=300 # 步骤 2:生成正常流量 curl -s http://google.com ping -c 10 google.com # 步骤 3:检查配置概况 cat profile.json | jq '.top_dest_ports' ``` ## 🏗️ **生产环境部署** ### **选项 1:Systemd 服务** ``` # 创建服务文件 sudo tee /etc/systemd/system/cmlf.service << 'EOF' [Unit] Description=CMLF Enterprise Firewall Documentation=https://github.com/yourusername/cmlf After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/cmlf --daemon --interface=eth0 Restart=always RestartSec=10 LimitNOFILE=65536 [Install] WantedBy=multi-user.target EOF # 安装二进制文件 sudo cp cmlf /usr/local/bin/ sudo chmod 755 /usr/local/bin/cmlf # 启用并启动 sudo systemctl daemon-reload sudo systemctl enable cmlf sudo systemctl start cmlf # 检查状态 sudo systemctl status cmlf sudo journalctl -u cmlf -f ``` ### **选项 2:Docker 容器** ``` # Dockerfile FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ libpcap-dev \ iptables \ ca-certificates COPY cmlf /usr/local/bin/cmlf COPY rules.conf /etc/cmlf/rules.conf ENTRYPOINT ["/usr/local/bin/cmlf"] CMD ["--daemon", "--interface=eth0"] ``` ``` # 构建并运行 docker build -t cmlf:latest . docker run --cap-add=NET_ADMIN --cap-add=NET_RAW \ --network host \ -v /etc/cmlf:/etc/cmlf \ cmlf:latest ``` ## 🔧 **高级配置** ### **调优异常检测** 编辑 `CMLF.go` 并重新编译: ``` // Port scan detection PortScanThreshold: 10, // Ports to trigger block (10) PortScanWindow: 5, // Time window in seconds PortScanBlockTime: 10, // Block duration in minutes // SSH brute force SSHBruteThreshold: 5, // Failed attempts to trigger (5) SSHBruteWindow: 30, // Time window in seconds SSHBruteBlockTime: 30, // Block duration in minutes // Data exfiltration ExfilThreshold: 50, // Large packets to trigger ExfilWindow: 10, // Time window in seconds ExfilPacketSize: 1400, // "Large" packet definition (bytes) ``` ### **自定义速率限制** 在 `rules.conf` 中: ``` # API 速率限制 ratelimit dst port 8080 rate 100/sec burst 200 # DNS 速率限制 ratelimit dst port 53 rate 20/sec burst 50 # SMTP 速率限制 ratelimit dst port 25 rate 10/sec burst 30 ``` ### **地理拦截 (CIDR 列表)** ``` # 下载中国 IP 范围 wget https://raw.githubusercontent.com/ipverse/asn-ip/master/data/country/cn.ipv4 # 添加到 rules.conf while read ip; do echo "deny src $ip" >> /etc/cmlf/rules.conf done < cn.ipv4 ``` ## 📁 **文件结构与自动创建** CMLF 会自动创建必要的文件: | 路径 | 自动创建? | 何时创建? | |------|--------------|-------| | `/etc/cmlf/` | ❌ 手动 | 创建一次 | | `/etc/cmlf/rules.conf` | ❌ 手动 | 自定义规则时必需 | | `./blacklist.json` | ✅ 自动 | 首次拦截后 | | `./profile.json` | ✅ 自动 | 学习模式结束后 | | `/var/log/cmlf.log` | ⚠️ 可选 | 使用 `-log` 标志启用 | **快速设置:** ``` # 一次性设置 sudo mkdir -p /etc/cmlf sudo tee /etc/cmlf/rules.conf << 'EOF' allow src 0.0.0.0/0 EOF # 运行 CMLF - blacklist.json 将自动创建 sudo ./cmlf --tui # 学习模式 - profile.json 将自动创建 sudo ./cmlf --learn --duration=3600 ``` ## 🚨 **故障排除指南** ### **“Permission denied” 错误** ``` # 解决方案 1:始终使用 sudo sudo ./cmlf --tui # 解决方案 2:设置 capabilities(高级) sudo setcap cap_net_raw,cap_net_admin+eip ./cmlf ./cmlf --tui # Now works without sudo ``` ### **未捕获到数据包** ``` # 列出可用接口 ip link show # 启用 promiscuous mode sudo ip link set eth0 promisc on # 使用特定接口测试 sudo ./cmlf --tui --interface=ens33 ``` ### **iptables 规则未生效** ``` # 检查 iptables 是否已安装 which iptables # 验证 kernel modules lsmod | grep iptable # 检查 dry-run 模式 ./cmlf --dry-run # Remove this flag! # 手动测试 sudo iptables -I INPUT -s 1.2.3.4 -j DROP sudo iptables -L INPUT -n ``` ### **TUI 显示异常** ``` # 设置正确的终端 export TERM=xterm-256color # 增加缓冲区大小 stty rows 50 cols 120 # 使用不同的终端模拟器 # (gnome-terminal, konsole, tmux 均可) ``` ### **内存占用过高** ``` # 减少 connection tracking 超时 # 编辑 CMLF.go 大约第 180 行: Established: 600 * time.Second # Reduced from 3600 # 定期清理连接表 sudo conntrack -F ``` ## 📈 **性能基准测试** | 指标 | 数值 | |--------|-------| | **数据包吞吐量** | ~150,000 pps (单核) | | **内存占用** | 50-100 MB | | **CPU 占用 (空闲)** | <1% | | **CPU 占用 (10k pps)** | ~15% | | **连接追踪** | 最多 65,535 个并发连接 | | **黑名单容量** | 无限制 (由磁盘存储) | ## 🔐 **安全最佳实践** 1. **务必先使用学习模式** sudo ./cmlf --learn --duration=86400 # 24 小时 2. **在生产环境中启用试运行** sudo ./cmlf --daemon --dry-run # 在强制执行前监控误报情况 3. **定期审查黑名单** # 日常 cron 任务 0 0 * * * /usr/local/bin/cmlf --block-list > /var/log/cmlf-blacklist.log 4. **监控指标 endpoint** # 在高丢弃率时发出警报 watch -n 5 'curl -s http://localhost:9090/metrics | grep dropped' 5. **备份配置** tar czf cmlf-backup-$(date +%Y%m%d).tar.gz /etc/cmlf/ blacklist.json ## 🤝 **贡献** 欢迎您的贡献!请参阅我们的[贡献指南](CONTRIBUTING.md)。 **需要帮助的领域:** - IPv6 实现 - Web UI (React/Vue) - 更多协议解析器 (SCTP, GRE) - 使用 eBPF 进行性能优化 - 补充文档翻译 ## 📚 **常见问题** **问:CMLF 可以完全替代 iptables 吗?** 答:不能——CMLF 与 iptables 协同工作,利用它进行内核级过滤,同时为其增加智能特性。 **问:支持 IPv6 吗?** 答:部分支持——可以捕获数据包,但异常检测目前专注于 IPv4。计划在未来提供完整支持。 **问:如何解除对某个 IP 的拦截?** 答:执行 `sudo ./cmlf --block-remove=1.2.3.4`,或者通过 `sudo iptables -D INPUT -s 1.2.3.4 -j DROP` 手动解除。 **问:我可以在路由器上使用 CMLF 吗?** 答:可以!适用于任何 Linux 设备(Raspberry Pi、VPS、专用服务器)。 **问:在 DDoS 攻击下的性能表现如何?** 答:速率限制会有所帮助,但对于大规模 DDoS,建议使用 Cloudflare 或专用的 DDoS 防护服务。 ## 📄 **许可证** **MIT 许可证** - 个人和商业使用均免费。详情请参阅 [LICENSE](LICENSE)。 ## ⚖️ **法律免责声明** 本软件仅供合法的安全目的使用。用户有责任遵守当地的法律法规。对于因滥用本软件或本软件造成的损害,作者不承担任何责任。 ## ⭐ **展示您的支持** 如果 CMLF 帮助保护了您的基础设施: - ⭐ 为本仓库点亮 Star - 🐛 报告问题 - 🔧 提交 pull request - 📝 撰写博客文章 - 🎤 在技术交流会上分享
**用 💜 和 Go 构建**
标签:EVTX分析, Go语言, Linux防火墙, TUI, 异常检测, 插件系统, 日志审计, 程序破解, 系统运维, 网络安全, 网络测绘, 自定义请求头, 请求拦截, 隐私保护