Linux中firewalld(防火墙)配置与管理指南

发布于:2025-08-07 ⋅ 阅读:(20) ⋅ 点赞:(0)

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 默认允许所有流量。

在这里插入图片描述

三、命令行常用命令

  1. 查看防火墙信息

    firewall-cmd --list-all
    

    在这里插入图片描述

  2. 查看当前默认区域(zone)

    firewall-cmd --get-default-zone			# 查看当前默认zone
    
    firewall-cmd --list-all-zones			# 查看所有zone
    

    在这里插入图片描述

  3. 更改默认区域

    firewall-cmd --set-default-zone=home
    

    在这里插入图片描述

  4. 添加服务

    firewall-cmd --add-service=ftp --permanent
    
    firewall-cmd --reload			# 重新加载
    

    在这里插入图片描述

  5. 添加端口

    firewall-cmd --add-port=8080/tcp --permanent 
    
    firewall-cmd --reload			# 重新加载
    

    在这里插入图片描述

四、富规则

基础语法
firewall-cmd --add-rich-rule='<RULE>' --permanent
常用场景
  1. 允许特定网段访问服务

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 service name=http accept' --permanent
    
  2. 拒绝流量并记录日志

    # 拒绝 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分钟后失效
    
  3. 带日志的允许规则

    # 允许 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个级别
emergaltercriterrorwarningnoticeinfodebug

五、伪装

  1. 启用 IP 转发
vim /etc/sysctl.conf
	net.ipv4.ip_forward = 1

sysctl -p
  1. 配置伪装
# 为网段启用伪装
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
  1. 端口转发
# 将本机 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>

网站公告

今日签到

点亮在社区的每一天
去签到