Linux Firewalld 学习

Linux Firewalld 学习

Linux Firewalld 是什么#

Firewalld 是 Linux 系统中一个动态的防火墙管理工具,旨在简化防火墙规则的配置和管理。它通过引入“区域(zone)”和“服务(service)”的概念,提供更灵活的网络安全管理方式。

动态防火墙管理工具,相比传统的iptables的静态方式,更新规则后不需要重启服务。

基于区域(zone),集成了常见的服务(http、ssh)等,简化配置流程

为什么要使用firewalld#

动态更新 - 规则变更即时生效,无需重启服务,避免网络中断

简化管理 - 通过区域和服务抽象复杂规则,降低配置难度

灵活性 - 支持临时和永久规则,适应测试和生产环境需求

与系统集成 - 与 NetworkManager 协作,自动切换区域(如从家庭网络切换到公共网络)

如何使用firewalld#

一般情况下,系统会自带firewalld,如果没有,需要自行安装。

sudo apt install firewalld # Debian/Ubuntu

sudo dnf install firewalld # CentOS/RHEL/Fedora

管理firewalld#

sudo systemctl enable --now firewalld # 启用并立即启动

sudo systemctl stop firewalld # 停止

sudo systemctl restart firewalld # 重启

查询状态

firewall-cmd --state # 显示 running/not running

查看默认区域

firewall-cmd --get-default-zone # 例如输出:public

列出所以区域

firewall-cmd --get-zones

切换默认区域

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

sudo firewall-cmd --reload

查看活动区域

firewall-cmd --get-active-zones

服务/端口管理#

临时开发http服务

sudo firewall-cmd --add-service=http

永久开发https服务

sudo firewall-cmd --add-service=https --permanent

sudo firewall-cmd --reload

开放指定端口

sudo firewall-cmd --add-port=8080/tcp --permanent

sudo firewall-cmd --reload

规则管理#

列出当前规则

sudo firewall-cmd --list-all # 显示所有规则(当前区域)

移除规则

sudo firewall-cmd --remove-port=8080/tcp --permanent

sudo firewall-cmd --reload

富规则

允许特定ip访问ssh

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" service name="ssh" accept' --permanent

sudo firewall-cmd --reload

拒绝某ip访问80端口

sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port port="80" protocol="tcp" reject'

紧急阻断所有流量#

sudo firewall-cmd --panic-on # 启用紧急模式

sudo firewall-cmd --panic-off # 关闭

一些例子#

查看所有预定义服务#

firewall-cmd --get-services

# 示例输出:ssh dhcpv6-client http https ...

永久允许https服务#

sudo firewall-cmd --add-service=https --permanent

sudo firewall-cmd --reload

移除ssh服务#

sudo firewall-cmd --remove-service=ssh --permanent

sudo firewall-cmd --reload

临时开放3306

sudo firewall-cmd --add-port=3306/tcp

永久开放123

sudo firewall-cmd --add-port=123/udp --permanent

sudo firewall-cmd --reload

开放范围端口

sudo firewall-cmd --add-port=5000-6000/tcp --permanent

sudo firewall-cmd --reload

移除3306(永久)

sudo firewall-cmd --remove-port=3306/tcp --permanent

sudo firewall-cmd --reload

富规则#

允许特定 IP 访问 SSH

sudo firewall-cmd --add-rich-rule='

rule family="ipv4"

source address="192.168.1.100/32"

service name="ssh"

accept' --permanent

sudo firewall-cmd --reload

拒绝某 IP 段访问 HTTP 端口

sudo firewall-cmd --add-rich-rule='

rule family="ipv4"

source address="10.0.0.0/24"

port port="80" protocol="tcp"

reject' --permanent

sudo firewall-cmd --reload

允许某 IP 访问特定端口范围

sudo firewall-cmd --add-rich-rule='

rule family="ipv4"

source address="203.0.113.50/32"

port port="8000-9000" protocol="tcp"

accept' --permanent

sudo firewall-cmd --reload

查看富规则

sudo firewall-cmd --list-rich-rules

允许http/https

sudo firewall-cmd --add-service={http,https} --permanent

sudo firewall-cmd --reload

总结#

一般情况下,都是添加或者移除某个端口的的访问,有时候需要端口段的添加和移除。特殊情况下,比如要精准控制的时候,就使用富规则,

富规则配置更多,越早添加的规则优先级越高。

测试的时候,可以先不加permanent,确认无误后再永久保存。

如果发现某个端口访问不通,优先排查有没有被防火墙挡在外面。

相关推荐

如何领导一个有效的团队
beat365网站假的吗

如何领导一个有效的团队

🎯 09-25 💯 792
《怪物猎人荒野》全流程时长介绍
beat365网站假的吗

《怪物猎人荒野》全流程时长介绍

🎯 10-16 💯 909