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)
- 连接泛洪(手动突发测试)
- 顺序端口敲门尝试
## 截图
防火墙规则已激活并加载:

Honeyport 检测触发并插入封禁:


## 局限性
- 仅支持 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封禁, 应用安全, 蜜罐, 证书利用, 防火墙