feat: v2.1.0 核心重构与功能增强

## 架构重构
- 全局变量消除,迁移至 Config/State 对象
- SMB 插件融合(smb/smb2/smbghost/smbinfo)
- 服务探测重构,实现 Nmap 风格 fallback 机制
- 输出系统重构,TXT 实时刷盘 + 双写机制
- i18n 框架升级至 go-i18n

## 性能优化
- 正则表达式预编译
- 内存优化 map[string]struct{}
- 并发指纹匹配
- SOCKS5 连接复用
- 滑动窗口调度 + 自适应线程池

## 新功能
- Web 管理界面
- 多格式 POC 适配(xray/afrog)
- 增强指纹库(3139条)
- Favicon hash 指纹识别
- 插件选择性编译(Build Tags)
- fscan-lab 靶场环境
- 默认端口扩展(62→133)

## 构建系统
- 添加 no_local tag 支持排除本地插件
- 多版本构建:fscan/fscan-nolocal/fscan-web
- CI 添加 snapshot 模式支持仅测试构建

## Bug 修复
- 修复 120+ 个问题,包括 RDP panic、批量扫描漏报、
  JSON 输出格式、Redis 检测、Context 超时等

## 测试增强
- 单元测试覆盖率 74-100%
- 并发安全测试
- 集成测试(Web/端口/服务/SSH/ICMP)
This commit is contained in:
ZacharyZcR
2026-01-11 20:16:23 +08:00
parent 6b13b2e84f
commit 71b92d4408
948 changed files with 92335 additions and 24630 deletions
+12
View File
@@ -0,0 +1,12 @@
FROM alpine:latest
RUN apk add --no-cache \
iptables \
ip6tables \
bash \
iproute2
COPY firewall.sh /firewall.sh
RUN chmod +x /firewall.sh
CMD ["/firewall.sh"]
+116
View File
@@ -0,0 +1,116 @@
#!/bin/bash
set -e
echo "[*] Starting firewall configuration..."
# 启用 IP 转发 (如果Docker已设置则跳过)
if echo 1 > /proc/sys/net/ipv4/ip_forward 2>/dev/null; then
echo "[+] IP forwarding enabled"
else
echo "[!] IP forwarding already enabled by Docker"
fi
# 清空所有规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
echo "[+] Cleared existing rules"
# 默认策略:FORWARD 拒绝,INPUT/OUTPUT 允许
iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
echo "[+] Set default policies"
# ============================================
# 网络定义
# ============================================
INTERNET="172.16.0.0/24"
DMZ="10.10.1.0/24"
OFFICE="10.10.2.0/24"
PRODUCTION="10.10.3.0/24"
CORE="10.10.4.0/24"
VPN_GATEWAY="10.10.1.13" # VPN 网关(双网卡)
# ============================================
# 规则 1:外网 -> DMZ(允许)
# ============================================
iptables -A FORWARD -s $INTERNET -d $DMZ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s $DMZ -d $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "[+] Rule 1: Internet -> DMZ allowed"
# ============================================
# 规则 2:外网 -> 内网(拒绝)
# ============================================
iptables -A FORWARD -s $INTERNET -d $OFFICE -j DROP
iptables -A FORWARD -s $INTERNET -d $PRODUCTION -j DROP
iptables -A FORWARD -s $INTERNET -d $CORE -j DROP
echo "[+] Rule 2: Internet -> Internal networks blocked"
# ============================================
# 规则 3DMZ -> 办公网(只允许 VPN 网关)
# ============================================
# VPN 网关本身有两个网卡,自动有路由,这里允许数据包转发
iptables -A FORWARD -s $DMZ -d $OFFICE -j ACCEPT
iptables -A FORWARD -s $OFFICE -d $DMZ -j ACCEPT
echo "[+] Rule 3: DMZ <-> Office (via VPN gateway)"
# ============================================
# 规则 4:办公网 -> 生产网(允许,但限制)
# ============================================
# 只允许特定端口(SSH, Redis, RabbitMQ, ActiveMQ, ES
iptables -A FORWARD -s $OFFICE -d $PRODUCTION -p tcp -m multiport --dports 22,6379,5672,15672,61613,61614,9200,8080 -j ACCEPT
iptables -A FORWARD -s $PRODUCTION -d $OFFICE -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "[+] Rule 4: Office -> Production (limited ports)"
# ============================================
# 规则 5:生产网 -> 核心网(允许)
# ============================================
iptables -A FORWARD -s $PRODUCTION -d $CORE -j ACCEPT
iptables -A FORWARD -s $CORE -d $PRODUCTION -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "[+] Rule 5: Production <-> Core allowed"
# ============================================
# 规则 6:办公网 -> 核心网(拒绝,必须通过生产网)
# ============================================
iptables -A FORWARD -s $OFFICE -d $CORE -j DROP
echo "[+] Rule 6: Office -> Core blocked (must go through Production)"
# ============================================
# 规则 7:允许同网段内部通信
# ============================================
iptables -A FORWARD -s $DMZ -d $DMZ -j ACCEPT
iptables -A FORWARD -s $OFFICE -d $OFFICE -j ACCEPT
iptables -A FORWARD -s $PRODUCTION -d $PRODUCTION -j ACCEPT
iptables -A FORWARD -s $CORE -d $CORE -j ACCEPT
echo "[+] Rule 7: Intra-network communication allowed"
# ============================================
# 日志规则(调试用)
# ============================================
# iptables -A FORWARD -j LOG --log-prefix "FW-DROP: " --log-level 4
# ============================================
# 显示规则
# ============================================
echo ""
echo "============================================"
echo "Firewall Rules Summary:"
echo "============================================"
iptables -L FORWARD -n -v --line-numbers
echo ""
echo "[*] Firewall configured successfully!"
echo "[*] Network topology:"
echo " Internet (172.16.0.0/24)"
echo " └─> DMZ (10.10.1.0/24)"
echo " └─> Office (10.10.2.0/24)"
echo " └─> Production (10.10.3.0/24)"
echo " └─> Core (10.10.4.0/24)"
echo ""
# 保持容器运行
tail -f /dev/null