防火墙的概念
防火墙是一种网络安全系统,用于监控和控制网络流量,基于预设规则允许或阻止数据包的传输。其核心功能包括:
- 访问控制:限制未经授权的访问。
- 流量过滤:根据源/目标IP、端口、协议等条件过滤数据包。
- 安全防护:防御DoS攻击、端口扫描等威胁。
防火墙可分为硬件防火墙(独立设备)和软件防火墙(如iptables、Windows Defender防火墙)
硬件 |
软件 |
三层路由,H3C、华为、Cisco(思科) |
iptables,Windows Defenderufw等 |
防火墙:深信服(防火墙和VPN),绿盟 |
具体类型
-
包过滤防火墙
工作在网络层(OSI第三层),检查IP地址、端口和协议类型,速度快但无法识别应用层内容。allow src_ip=192.168.1.0/24 dst_port=80 proto=TCP
-
应用层防火墙(代理防火墙)
工作在应用层(OSI第七层),深度检测HTTP/FTP等协议内容,安全性高但性能开销大。 -
状态检测防火墙
跟踪连接状态(如TCP握手),动态允许已建立的连接通过,适用于现代网络环境。 -
下一代防火墙(NGFW)
集成入侵检测(IDS)、VPN支持、应用程序识别等功能,提供更全面的防护。 -
代理防火墙
作为中间代理处理网络请求,完全隔离内外网直接通信。 -
云防火墙
专为云环境设计的虚拟化防火墙服务,提供弹性防护能力。 -
个人防火墙
安装在终端设备上的软件防火墙,主要保护单个主机安全。
iptables
iptables 是 Linux 系统上用于配置网络包过滤规则的工具,基于 Netfilter 框架。它通过定义规则链(Chains)和规则(Rules)来控制数据包的流动。
主要链(Chains)
- INPUT:处理进入本机的数据包。
- OUTPUT:处理从本机发出的数据包。
- FORWARD:处理经过本机转发的数据包。
- PREROUTING(NAT):修改目标地址(DNAT)。
- POSTROUTING(NAT):修改源地址(SNAT)。
常用表(Tables)
- filter:默认表,用于包过滤。
- nat:用于网络地址转换。
- mangle:修改数据包头部信息。
iptables 基本语法
iptables -t <表名> <操作> <链名> <匹配条件> -j <动作>
-t
:指定表(默认为filter
)。-A
:追加规则到链尾。-I
:插入规则到链头。-D
:删除规则。-j
:指定动作(ACCEPT
、DROP
、REJECT
、LOG
)。
基本防火墙规则
允许 SSH 连接(端口 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许本地回环流量
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
拒绝所有其他入站流量
iptables -A INPUT -j DROP
NAT 与端口转发
启用 IP 转发(需修改 /etc/sysctl.conf
)
echo 1 > /proc/sys/net/ipv4/ip_forward
将外部 8080 端口转发到内部服务器的 80 端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE
限速与连接限制
限制单个 IP 的并发连接数(防止 DDOS)
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j REJECT
限制 HTTP 请求速率(每秒 10 个请求)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/second -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
日志记录
记录被拒绝的 SSH 尝试
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH DROPPED: "
iptables -A INPUT -p tcp --dport 22 -j DROP
日志会保存在 /var/log/messages
或 /var/log/syslog
。
保存与恢复规则
保存规则到文件
iptables-save > /etc/iptables.rules
恢复规则
iptables-restore < /etc/iptables.rules
开机自动加载(Ubuntu/Debian)
apt install iptables-persistent
netfilter-persistent save
高级匹配条件
匹配 MAC 地址
iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP
匹配时间段(例如晚上 10 点到早上 6 点)
iptables -A INPUT -p tcp --dport 22 -m time --timestart 22:00 --timestop 06:00 -j DROP
调试技巧
查看所有规则
iptables -L -v -n
清空所有规则
iptables -F
iptables -t nat -F
iptables -t mangle -F
删除自定义链
iptables -X
通过以上示例和语法,可以灵活配置 iptables 实现防火墙、NAT、流量控制等功能。