Firewalld是Linux系统中一个功能强大且灵活的防火墙管理工具,它为管理员提供了动态管理防火墙规则的能力。本文将详细介绍Firewalld的使用方法及实用示例,帮助您全面掌握这一工具的应用。

linux.webp

一、Firewalld简介

Firewalld自CentOS 7起成为默认的防火墙管理工具,替代了传统的iptables。它通过“区域”(zone)的概念,允许管理员根据不同网络环境的需求动态调整安全策略,而无需重启服务。每个区域都有独立的防火墙规则集,支持IPv4和IPv6,提供丰富的命令行工具和图形界面供用户选择。

Firewalld的优势还体现在对服务和端口的便捷管理上,特别是其支持动态更新防火墙规则的功能,极大提升了管理效率。

二、Firewalld的基础操作

(一)启动与停止服务

  • 启动Firewalld
    sudo systemctl start firewalld

    该命令用于激活Firewalld服务。

  • 停止Firewalld
    sudo systemctl stop firewalld

    该命令用于终止Firewalld服务。

  • 设置开机启动
    sudo systemctl enable firewalld

    该命令确保Firewalld在系统启动时自动运行。

  • 取消开机启动
    sudo systemctl disable firewalld

    该命令用于关闭Firewalld的开机自启动功能。

  • 查看服务状态
    sudo systemctl status firewalld

    该命令可查看Firewalld的状态信息,包括运行状态和启动设置。

(二)重新加载配置文件

sudo firewall-cmd --reload

此命令用于使配置更改生效,无需重启服务。

(三)查看状态与规则

  • 检查防火墙状态
    sudo firewall-cmd --state

    该命令用于确认Firewalld是否处于运行状态。

  • 列出活跃区域
    sudo firewall-cmd --get-active-zones

    显示当前系统中所有正在使用的防火墙区域及其关联的网络接口。

  • 查看特定区域规则
    sudo firewall-cmd --list-all --zone=public

    此命令用于输出public区域的详细防火墙规则。

  • 列出所有区域
    sudo firewall-cmd --get-zones

    该命令用于显示系统支持的所有防火墙区域。

  • 显示默认区域
    sudo firewall-cmd --get-default-zone

    查看当前系统的默认防火墙区域。

(四)区域管理

  • 设置默认区域
    sudo firewall-cmd --set-default-zone=trusted

    将系统的默认防火墙区域设为trusted。

  • 添加接口到区域
    sudo firewall-cmd --zone=public --add-interface=eth0

    该命令将网络接口eth0加入到public区域。

  • 从区域移除接口
    sudo firewall-cmd --zone=public --remove-interface=eth0

    用于将eth0从public区域中移出。

  • 查询接口所属区域
    sudo firewall-cmd --get-zone-of-interface=eth0

    显示网络接口eth0所属的防火墙区域。

(五)服务管理

  • 显示可用服务
    sudo firewall-cmd --get-services

    该命令用于列出系统支持的所有服务。

  • 添加服务
    sudo firewall-cmd --zone=public --add-service=http

    在public区域中启用http服务。

  • 移除服务
    sudo firewall-cmd --zone=public --remove-service=http

    从public区域中禁用http服务。

  • 检查服务状态
    sudo firewall-cmd --zone=public --query-service=http

    用于确认http服务在public区域中的启用状态。

  • 永久添加服务
    sudo firewall-cmd --zone=public --add-service=http --permanent

    永久添加http服务到public区域,该设置在系统重启后仍然有效。

(六)端口管理

  • 临时开放端口
    sudo firewall-cmd --zone=public --add-port=8080/tcp

    在public区域中临时开放8080/tcp端口。

  • 临时关闭端口
    sudo firewall-cmd --zone=public --remove-port=8080/tcp

    关闭public区域中的8080/tcp端口。

  • 永久开放端口
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

    永久开放8080/tcp端口供public区域使用。

  • 列出开放端口
    sudo firewall-cmd --zone=public --list-ports

    显示public区域内所有已开放的端口。

(七)高级规则管理

  • 允许指定IP访问
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'

    允许来自192.168.1.100的IPv4流量通过public区域。

  • 阻止指定IP访问
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'

    阻止来自192.168.1.100的IPv4流量。

  • 记录并阻止指定IP
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" log prefix="Blocked: " level="info" drop'

    记录并丢弃来自192.168.1.100的流量,并在日志中添加“Blocked: ”前缀。

  • 永久生效规则
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' --permanent

    使上述规则在public区域中永久生效。

三、Firewalld的高级功能

(一)网络地址伪装与端口转发

  • 启用网络地址伪装
    sudo firewall-cmd --zone=public --add-masquerade

    在public区域启用NAT,允许内部网络访问外部。

  • 禁用网络地址伪装
    sudo firewall-cmd --zone=public --remove-masquerade

    关闭public区域中的NAT功能。

  • 配置端口转发
    sudo firewall-cmd --zone=trusted --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100

    将来自trusted区域的80端口TCP流量转发至192.168.1.100的8080端口。

(二)离线配置

在脚本或恢复模式下,可使用firewall-offline-cmd命令进行配置。例如:

firewall-offline-cmd --add-service=http

此命令用于离线状态下添加http服务。

(三)永久保存配置

sudo firewall-cmd --runtime-to-permanent

该命令将当前运行中的配置保存为永久设置。

四、总结

Firewalld凭借其灵活的区域管理、动态规则更新及丰富的功能集,成为Linux系统中不可或缺的防火墙管理工具。通过本文的详细指导,您应已掌握了Firewalld的基本使用方法和高级应用技巧。在实际应用中,建议根据具体需求灵活配置规则,并定期检查和更新防火墙设置,以确保系统的安全性和稳定性。