网络安全Kali学习系列 · 第63篇

防火墙与 IDS/IPS

iptables · Suricata · 规则编写 · 绕过检测
📋 本篇导读
  • 防火墙原理与分类
  • iptables/netfilter 深入与常用规则
  • IDS vs IPS 原理对比
  • Suricata 规则语法与编写
  • IDS/IPS 绕过技术

一、防火墙概述

1.1 防火墙分类

类型 工作层次 说明 性能
包过滤防火墙 网络层 / 传输层 根据 IP/端口/协议放行或阻止 高
状态检测防火墙 传输层 / 会话层 跟踪连接状态,只放行合法回应 高
应用层防火墙 应用层 理解应用协议(HTTP/SQL),深度过滤 中
下一代防火墙 全栈 集成 IPS/应用识别/用户认证 中
WAF 应用层(Web) 专门防护 Web 攻击(SQLi/XSS) 低

二、iptables 详解

iptables 是 Linux 内核 netfilter 的用户态工具,用于配置包过滤规则和网络地址转换。

2.1 五表五链

表 功能 包含的链
filter 包过滤(默认表) INPUT / OUTPUT / FORWARD
nat 网络地址转换 PREROUTING / POSTROUTING / OUTPUT
mangle 修改数据包(TOS/TTL/MSS) PREROUTING / OUTPUT / FORWARD 等
raw 配置连接跟踪例外 PREROUTING / OUTPUT
security SELinux 安全标记 INPUT / OUTPUT / FORWARD

2.2 常用规则

Bash · iptables 基础规则
1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有规则
iptables -L -n -v --line-numbers
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许 SSH (22) 和 HTTP (80)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 限制来源 IP
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
Bash · iptables 常用策略
1
2
3
4
5
6
7
8
# 默认策略:拒绝所有入站(白名单模式)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# NAT 端口转发:外网 8080 -> 内网 80
iptables -t nat -A PREROUTING -p tcp --dport 8080
-j DNAT --to-destination 10.0.0.10:80

三、IDS 与 IPS

3.1 IDS vs IPS

特性 IDS(入侵检测系统) IPS(入侵防御系统)
部署方式 旁路监听(镜像端口/TAP) 串入链路(在线模式)
作用 检测 + 告警,不阻断流量 检测 + 主动阻断攻击
对网络影响 不影响网络(单点故障不影响) 增加延迟,故障可能断网
误报影响 告警噪音,影响不大 误阻断正常业务,影响大

3.2 检测方式

检测方法 原理 优点 缺点
特征匹配 用已知攻击特征与流量比对 准确率高,误报少 只能检测已知攻击
异常检测 建立正常基线,偏离即告警 可检测未知攻击 误报率高
协议分析 理解应用协议,检查合规性 检测变种攻击 性能开销大

四、Suricata 规则

Suricata 是高性能的开源 IDS/IPS 引擎,支持多线程,规则语法兼容 Snort。

4.1 规则结构

Text · Suricata 规则基本结构
1
动作 协议 源IP 源端口 方向 目的IP 目的端口 (选项)
Text · 示例:检测 SQL 注入
1
2
3
alert tcp any any -> any 80 (msg:"SQL Injection - UNION SELECT";
flow:to_server,established; content:"UNION SELECT";
nocase; sid:1000001; rev:1;)

4.2 常用规则选项

选项 说明 示例
msg 告警消息文本 msg:"XSS Attack";
content 匹配 payload 内容 content:"