Linux中firewalld(防火墙)配置与管理指南
一. 防火墙基础概念
网络安全模式,通过它可以隔离风险区域与安全区域的链接
作用:
- 隔离风险区域与安全区域
- 显示他人进入内部网络
- 阻止非法访问和不安全服务
- 防御入侵
- 限制用户访问特定网络
- 为监控网络流量安全提供方便
实现模块:
netfilter
(Linux内核网络过滤模块)/lib/modules/3.10.0-957.el7.x86_64/kernel/net/netfilter
- 管理工具:
iptables
(CentOS 6)firewalld
(CentOS 7+)
二. Firewalld 核心概念
区域(Zone)
Zone | 行为 |
---|---|
drop |
强制拒绝所有流量,不反馈消息 |
block |
拒绝流量,反馈拒绝消息 |
trusted |
允许所有流量 |
注意:
drop/block
默认禁止所有流量,trusted
默认允许所有流量。
三、命令行常用命令
查看防火墙信息
firewall-cmd --list-all
查看当前默认区域(zone)
firewall-cmd --get-default-zone # 查看当前默认zone firewall-cmd --list-all-zones # 查看所有zone
更改默认区域
firewall-cmd --set-default-zone=home
添加服务
firewall-cmd --add-service=ftp --permanent firewall-cmd --reload # 重新加载
添加端口
firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload # 重新加载
四、富规则
基础语法
firewall-cmd --add-rich-rule='<RULE>' --permanent
常用场景
允许特定网段访问服务
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 service name=http accept' --permanent
拒绝流量并记录日志
# 拒绝 SSH 连接,日志记录到审计系统(限速 2条/分钟) firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 service name=ssh audit limit value=2/m reject' --timeout=600 # 10分钟后失效
带日志的允许规则
# 允许 HTTP 访问,日志级别 notice(限速 10条/分钟) firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 service name=http log prefix=http level=notice limit value=10/m accept' --permanent
记录:
level:定义日志级别,日志有8个级别
emerg
、alter
、crit
、error
、warning
、notice
、info
、debug
五、伪装
- 启用 IP 转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
- 配置伪装
# 为网段启用伪装
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 masquerade' --zone=public --permanent
# 或对整个区域启用
firewall-cmd --add-masquerade --zone=public
- 端口转发
# 将本机 8000/TCP 转发到 192.168.100.20:80
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80:toaddr=192.168.100.20
# 富规则实现:转发 12.12.12.0/24 的 80 端口流量到 192.168.100.20:80
firewall-cmd --add-rich-rule='rule family=ipv4 source address=12.12.12.0/24 forward-port port=80 protocol=tcp to-port=80 to-addr=192.168.100.20' --permanent
富规则组件
rule family=ipv4/ipv6
source address=<IP>/<CIDR>
service name=<服务名>
port=<端口号>
forward-port port=<源端口> protocol=<协议> to-port=<目标端口> to-addr=<目标IP>