Harshil015/Advanced-Firewall-IPS

GitHub: Harshil015/Advanced-Firewall-IPS

基于 Bash 和 iptables 构建的 Linux 状态防火墙与入侵防御系统,通过 honeyport 蜜罐端口检测和自动化 IP 封禁实现主机级实时防护。

Stars: 0 | Forks: 0

# 高级 Linux 防火墙与 IPS 一个基于 Bash/iptables 的状态防火墙,具备基于 honeyport 的入侵检测和自动化封禁 IP 功能。构建此项目是为了通过从零开始构建并对其进行攻击,来深入理解主机级防御的实际工作原理。 ## 结果 在所有实验室测试场景中——包括端口扫描、暴力破解尝试、连接泛洪(connection floods): | 指标 | 结果 | |---|---| | 入侵防御率 | 所有场景下均达到 100% | | 自动封禁触发时间 | 距首次异常连接不到 10 秒 | | 完整的 Linux 主机加固时间 | 从初始状态起不到 30 分钟 | ## 为什么构建此项目 要了解防火墙为何会失效,就必须从内部理解它们是如何工作的。我想构建一个贴近生产环境的项目,而不是简单地配置现有工具——因此我从零开始编写了检测逻辑、封禁机制和加固步骤。 honeyport 方法是最有趣的部分。它不匹配已知的攻击特征(攻击者可以规避这些特征),而是监控对合法流量永远不会触及的端口的连接。根据定义,任何对这些端口的连接都是可疑的——不需要特征匹配。 构建完成后,我使用 nmap、Hydra 和 netcat 对其进行了攻击性测试,以验证检测逻辑是否确实能捕获预期目标。 ## 工作原理 **状态包检测** —— 通过 iptables conntrack 实现——仅允许已建立(established)和相关(related)的连接入站。所有新的入站连接都必须经过显式的允许规则。 **Honeyport IDS** —— 故意留下一组未提供服务但开放的端口。任何对这些端口的连接尝试都会触发立即的日志记录,并启动自动封禁逻辑。 **自动化 IP 封禁** —— 一个 Bash 看门狗(watchdog)监控 iptables 日志,并在检测到后 10 秒内为违规 IP 插入 DROP 规则。封禁将在整个会话期间持续有效。 **速率限制** —— 连接速率限制会丢弃超过每个时间窗口配置阈值的 IP,起到暴力破解保护的作用。 ## 设置 ``` git clone https://github.com/Harshil015/Advanced-Firewall-IPS.git cd Advanced-Firewall-IPS chmod +x firewall.sh sudo ./firewall.sh ``` 需要 root 权限——iptables 规则需要内核级别的访问权限。 **重置所有规则**(恢复默认的 ACCEPT 策略): ``` sudo iptables -F sudo iptables -X sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT ``` ## 测试检测 **端口扫描检测:** ``` nmap -sS ``` 注意观察 iptables 日志中触发的自动封禁。 **Honeyport 触发:** ``` nc ``` 任何对 honeyport 的连接都应导致立即插入 DROP 规则。 **实时监控日志:** ``` sudo dmesg | grep IPTABLES sudo tail -f /var/log/syslog | grep IPTABLES ``` ## 已测试的攻击场景 - SYN 扫描和完全连接扫描 (nmap) - 暴力破解登录 (Hydra) - Honeyport 连接尝试 (netcat) - 连接泛洪(手动突发测试) - 顺序端口敲门尝试 ## 截图 防火墙规则已激活并加载: ![防火墙规则](https://raw.githubusercontent.com/Harshil015/Advanced-Firewall-IPS/main/screenshots/Firewall_Rules.png) Honeyport 检测触发并插入封禁: ![Honeyport 警报 1](https://raw.githubusercontent.com/Harshil015/Advanced-Firewall-IPS/main/screenshots/Honeyport_Alert1.png) ![Honeyport 警报 2](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d694184a9383ff8c5603423fca8167127ed1a01fd127c24e162032654bf522f0.png) ## 局限性 - 仅支持 IPv4 —— 不支持 IPv6 规则 - Bash 看门狗必须保持运行,自动封禁才能起作用 - 已在 Ubuntu 22.04 和 Kali Linux 上测试;未在默认使用 nftables 的发行版上进行验证 - 封禁规则默认重启后不会保留 —— 使用 `iptables-persistent` 实现永久生效 - 速率限制阈值是硬编码的 —— 暂无配置文件 ## 路线图 - [ ] 适配现代发行版的 nftables 版本 - [ ] 用于阈值和 honeyport 自定义的配置文件 - [ ] 重启后仍持久有效的封禁列表 - [ ] 用于监控活动规则和封禁的 Web 面板 - [ ] 集成 Geo-IP 封锁 - [ ] 封禁事件触发的 Slack/电子邮件警报 ## 免责声明 仅供实验室和教育使用。未经适当测试及系统所有者的明确授权,请勿部署在生产系统或任何网络上。 ## 作者 **Harshil Makwana** —— SVNIT Surat 电子与通信工程(ECE)毕业生 [linkedin.com/in/harshilmakwana](https://linkedin.com/in/harshilmakwana) · [github.com/Harshil015](https://github.com/Harshil015)
标签:Bash, Google搜索, iptables, IP封禁, 应用安全, 蜜罐, 证书利用, 防火墙