firewalld 防火墙
2024年10月31日大约 14 分钟
- firewalld 是一个动态的防火墙管理工具,适用于 Linux 系统,使用时可以方便地管理防火墙规则。以下是关于如何使用 firewalld 进行端口放行和删除的基本步骤。
1. 检查 firewalld 状态
首先,确保 firewalld 正在运行:
sudo systemctl status firewalld如果没有运行,可以使用以下命令启动:
sudo systemctl start firewalld2. 查看当前区域和规则
查看当前的区域配置:
sudo firewall-cmd --get-active-zones查看某个区域的规则:
sudo firewall-cmd --zone=public --list-all3. 开放端口
要放行一个端口,例如 TCP 端口 8080,可以使用以下命令:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent--permanent 选项表示这个规则是持久的,重启后仍然有效。如果不加此选项,规则仅在当前运行时有效。
4. 重新加载配置
添加完规则后,需要重新加载 firewalld 配置:
sudo firewall-cmd --reload5. 删除端口
要删除之前放行的端口,可以使用以下命令:
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent同样,使用 --permanent 确保这个更改是持久的。
6. 再次重新加载配置
删除端口后,再次重新加载配置:
sudo firewall-cmd --reload7. 查看当前放行的端口
可以使用以下命令查看当前已放行的端口:
sudo firewall-cmd --zone=public --list-ports翻译菜单
- 用法:firewall-cmd [选项...]
通用选项
-h, --help 显示简短的帮助信息并退出
-V, --version 显示 firewalld 的版本信息
-q, --quiet 不显示状态信息状态选项
--state 返回并显示 firewalld 的状态
--reload 重新加载防火墙并保留状态信息
--complete-reload 完全重新加载防火墙并丢失状态信息
--runtime-to-permanent
将当前配置保存为永久配置
--reset-to-defaults 将配置重置为 firewalld 的默认配置
--check-config 检查永久配置中的错误日志拒绝选项
--get-log-denied 显示日志拒绝的值
--set-log-denied=<值>
设置日志拒绝的值永久选项
--permanent 设置一个永久选项
仅适用于标记有 [P] 的选项区域选项
--get-default-zone 显示连接和接口的默认区域
--set-default-zone=<区域>
设置默认区域
--get-active-zones 显示当前活跃的区域
--get-zones 显示预定义的区域 [P]
--get-services 显示预定义的服务 [P]
--get-icmptypes 显示预定义的 ICMP 类型 [P]
--get-zone-of-interface=<接口>
显示接口绑定的区域名称 [P]
--get-zone-of-source=<来源>[/<掩码>] | <MAC> | ipset:<ipset>
显示来源绑定的区域名称 [P]
--list-all-zones 列出所有区域中添加或启用的内容 [P]
--new-zone=<区域> 添加一个新区域 [仅 P]
--new-zone-from-file=<文件名> [--name=<区域>]
从文件添加一个新区域并可选指定名称 [仅 P]
--delete-zone=<区域> 删除现有区域 [仅 P]
--load-zone-defaults=<区域>
加载区域的默认设置 [仅 P]
--zone=<区域> 使用该区域设置或查询选项,否则使用默认区域
仅适用于标记有 [Z] 的选项
--info-zone=<区域> 显示区域信息
--path-zone=<区域> 显示区域的文件路径 [仅 P]策略选项
--get-policies 显示预定义的策略
--get-active-policies
显示当前活跃的策略
--list-all-policies 列出所有策略中添加或启用的内容
--new-policy=<策略> 添加一个新策略
--new-policy-from-file=<文件名> [--name=<策略>]
从文件添加一个新策略并可选覆盖名称 [仅 P]
--delete-policy=<策略>
删除现有策略
--load-policy-defaults=<策略>
加载策略默认设置
--policy=<策略> 使用该策略设置或查询选项
仅适用于标记有 [O] 的选项
--info-policy=<策略> 显示策略信息
--path-policy=<策略> 显示策略的文件路径IPSet 选项
--get-ipset-types 显示支持的 ipset 类型
--new-ipset=<ipset> --type=<ipset 类型> [--option=<键>[=<值>]]..
添加一个新的 ipset [仅 P]
--new-ipset-from-file=<文件名> [--name=<ipset>]
从文件添加一个新 ipset 并可选指定名称 [仅 P]
--delete-ipset=<ipset>
删除现有 ipset [仅 P]
--load-ipset-defaults=<ipset>
加载 ipset 默认设置 [仅 P]
--info-ipset=<ipset> 显示 ipset 信息
--path-ipset=<ipset> 显示 ipset 的文件路径 [仅 P]
--get-ipsets 显示预定义的 ipset
--ipset=<ipset> --set-description=<描述>
为 ipset 设置新描述 [仅 P]
--ipset=<ipset> --get-description
显示 ipset 的描述 [仅 P]
--ipset=<ipset> --set-short=<描述>
为 ipset 设置新的简短描述 [仅 P]
--ipset=<ipset> --get-short
显示 ipset 的简短描述 [仅 P]
--ipset=<ipset> --add-entry=<条目>
为 ipset 添加一个新条目 [P]
--ipset=<ipset> --remove-entry=<条目>
从 ipset 中删除一个条目 [P]
--ipset=<ipset> --query-entry=<条目>
返回 ipset 是否包含该条目 [P]
--ipset=<ipset> --get-entries
列出 ipset 的条目 [P]
--ipset=<ipset> --add-entries-from-file=<条目>
从文件添加新条目到 ipset [P]
--ipset=<ipset> --remove-entries-from-file=<条目>
从 ipset 中删除文件条目 [P]ICMP 类型选项
--new-icmptype=<icmptype>
添加一个新的 icmp 类型 [仅 P]
--new-icmptype-from-file=<文件名> [--name=<icmptype>]
从文件添加一个新的 icmp 类型并可选指定名称 [仅 P]
--delete-icmptype=<icmptype>
删除现有的 icmp 类型 [仅 P]
--load-icmptype-defaults=<icmptype>
加载 icmp 类型默认设置 [仅 P]
--info-icmptype=<icmptype>
显示 icmp 类型信息
--path-icmptype=<icmptype>
显示 icmp 类型的文件路径 [仅 P]
--icmptype=<icmptype> --set-description=<描述>
设置 icmp 类型的新描述 [仅 P]
--icmptype=<icmptype> --get-description
显示 icmp 类型的描述 [仅 P]
--icmptype=<icmptype> --set-short=<描述>
设置 icmp 类型的新简短描述 [仅 P]
--icmptype=<icmptype> --get-short
显示 icmp 类型的简短描述 [仅 P]
--icmptype=<icmptype> --add-destination=<ipv>
在 icmp 类型中启用目标 ipv [仅 P]
--icmptype=<icmptype> --remove-destination=<ipv>
在 icmp 类型中禁用目标 ipv [仅 P]
--icmptype=<icmptype> --query-destination=<ipv>
返回目标 ipv 是否在 icmp 类型中启用 [仅 P]
--icmptype=<icmptype> --get-destinations
列出 icmp 类型中的目标 [仅 P]服务选项
--new-service=<服务>
添加一个新服务 [仅 P]
--new-service-from-file=<文件名> [--name=<服务>]
从文件添加一个新服务并可选指定名称 [仅 P]
--delete-service=<服务>
删除现有服务 [仅 P]
--load-service-defaults=<服务>
加载服务的默认设置 [仅 P]
--info-service=<服务>
显示服务信息
--path-service=<服务>
显示服务的文件路径 [仅 P]
--service=<服务> --set-description=<描述>
设置服务的新描述 [仅 P]
--service=<服务> --get-description
显示服务的描述 [仅 P]
--service=<服务> --set-short=<描述>
设置服务的新简短描述 [仅 P]
--service=<服务> --get-short
显示服务的简短描述 [仅 P]
--service=<服务> --add-port=<端口id>[-<端口id>]/<协议>
为服务添加一个新端口 [仅 P]
--service=<服务> --remove-port=<端口id>[-<端口id>]/<协议>
从服务中删除一个端口 [仅 P]
--service=<服务> --query-port=<端口id>[-<端口id>]/<协议>
返回端口是否已添加到服务 [仅 P]
--service=<服务> --get-ports
列出服务的端口 [仅 P]
--service=<服务> --add-protocol=<协议>
为服务添加一个新协议 [仅 P]
--service=<服务> --remove-protocol=<协议>
从服务中删除一个协议 [仅 P]
--service=<服务> --query-protocol=<协议>
返回协议是否已添加到服务 [仅 P]
--service=<服务> --get-protocols
列出服务的协议 [仅 P]
--service=<服务> --add-source-port=<端口id>[-<端口id>]/<协议>
添加一个源端口到服务 [仅 P]
--service=<服务> --remove-source-port=<端口id>[-<端口id>]/<协议>
从服务中删除一个源端口 [仅 P]
--service=<服务> --query-source-port=<端口id>[-<端口id>]/<协议>
返回源端口是否已添加到服务 [仅 P]
--service=<服务> --get-source-ports
列出服务的源端口 [仅 P]
--service=<服务> --add-helper=<helper>
为服务添加一个新助手 [仅 P]
--service=<服务> --remove-helper=<helper>
从服务中移除助手 [仅 P]
--service=<服务> --query-helper=<helper>
返回是否已为服务添加该助手 [仅 P]
--service=<服务> --get-service-helpers
列出服务的助手 [仅 P]
--service=<服务> --set-destination=<ipv>:<address>[/<mask>]
为服务设置 IPv 的目标地址 [仅 P]
--service=<服务> --remove-destination=<ipv>
禁用服务的 IPv 目标 [仅 P]
--service=<服务> --query-destination=<ipv>:<address>[/<mask>]
返回服务是否已设置该 IPv 目标 [仅 P]
--service=<服务> --get-destinations
列出服务的目标 [仅 P]
--service=<服务> --add-include=<service>
为服务添加一个新包含项 [仅 P]
--service=<服务> --remove-include=<service>
从服务中移除一个包含项 [仅 P]
--service=<服务> --query-include=<service>
返回是否已为服务添加该包含项 [仅 P]
--service=<服务> --get-includes
列出服务的包含项 [仅 P]区域和策略的适配和查询选项
--list-all 列出所有已添加或启用的内容 [P] [Z] [O]
--timeout=<timeval> 启用选项指定的时间, 其中 timeval 是一个数字,后跟 's'、'm' 或 'h'
可用于标记为 [T] 的选项
--set-description=<description>
设置新描述 [仅 P] [Z] [O]
--get-description 显示描述 [仅 P] [Z] [O]
--get-target 获取目标 [仅 P] [Z] [O]
--set-target=<target>
设置目标 [仅 P] [Z] [O]
--set-short=<description>
设置新的简短描述 [Z] [O]
--get-short 显示简短描述 [仅 P] [Z] [O]
--list-services 列出添加的服务 [P] [Z]
--add-service=<service>
添加一个服务 [P] [Z] [O] [T]
--remove-service=<service>
移除一个服务 [P] [Z] [O]
--query-service=<service>
返回服务是否已添加 [P] [Z] [O]
--list-ports 列出添加的端口 [P] [Z] [O]
--add-port=<portid>[-<portid>]/<protocol>
添加端口 [P] [Z] [O] [T]
--remove-port=<portid>[-<portid>]/<protocol>
移除端口 [P] [Z] [O]
--query-port=<portid>[-<portid>]/<protocol>
返回端口是否已添加 [P] [Z] [O]
--list-protocols 列出添加的协议 [P] [Z] [O]
--add-protocol=<protocol>
添加协议 [P] [Z] [O] [T]
--remove-protocol=<protocol>
移除协议 [P] [Z] [O]
--query-protocol=<protocol>
返回协议是否已添加 [P] [Z] [O]
--list-source-ports 列出添加的源端口 [P] [Z] [O]
--add-source-port=<portid>[-<portid>]/<protocol>
添加源端口 [P] [Z] [O] [T]
--remove-source-port=<portid>[-<portid>]/<protocol>
移除源端口 [P] [Z] [O]
--query-source-port=<portid>[-<portid>]/<protocol>
返回源端口是否已添加 [P] [Z] [O]
--list-icmp-blocks 列出添加的 ICMP 类型阻止项 [P] [Z] [O]
--add-icmp-block=<icmptype>
添加 ICMP 阻止项 [P] [Z] [O] [T]
--remove-icmp-block=<icmptype>
移除 ICMP 阻止项 [P] [Z] [O]
--query-icmp-block=<icmptype>
返回是否已添加 ICMP 阻止项 [P] [Z] [O]
--list-forward-ports 列出已添加的 IPv4 转发端口 [P] [Z] [O]
--add-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
添加 IPv4 转发端口 [P] [Z] [O] [T]
--remove-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
移除 IPv4 转发端口 [P] [Z] [O]
--query-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
返回 IPv4 转发端口是否已添加 [P] [Z] [O]
--add-masquerade 启用 IPv4 假装(伪装) [P] [Z] [O] [T]
--remove-masquerade 禁用 IPv4 假装 [P] [Z] [O]
--query-masquerade 返回是否已启用 IPv4 假装 [P] [Z] [O]
--list-rich-rules 列出已添加的丰富规则 [P] [Z] [O]
--add-rich-rule=<rule>
添加丰富语言规则“规则” [P] [Z] [O] [T]
--remove-rich-rule=<rule>
移除丰富语言规则“规则” [P] [Z] [O]
--query-rich-rule=<rule>
返回是否已添加丰富语言规则“规则” [P] [Z] [O]区域的适配和查询选项
--add-icmp-block-inversion
启用区域的 ICMP 阻止反向 [P] [Z]
--remove-icmp-block-inversion
禁用区域的 ICMP 阻止反向 [P] [Z]
--query-icmp-block-inversion
返回是否已为区域启用 ICMP 阻止反向 [P] [Z]
--add-forward
启用在区域中接口和源之间的数据包转发 [P] [Z] [T]
--remove-forward
禁用在区域中接口和源之间的数据包转发 [P] [Z]
--query-forward
返回是否已为区域启用接口和源之间的数据包转发 [P] [Z]策略的适配和查询选项
--get-priority
获取优先级 [仅 P] [O]
--set-priority=<priority>
设置优先级 [仅 P] [O]
--list-ingress-zones
列出绑定到策略的入口区域 [P] [O]
--add-ingress-zone=<zone>
将入口区域添加到策略中 [P] [O]
--remove-ingress-zone=<zone>
从策略中移除入口区域 [P] [O]
--query-ingress-zone=<zone>
查询入口区域是否已添加到策略中 [P] [O]
--list-egress-zones
列出绑定到策略的出口区域 [P] [O]
--add-egress-zone=<zone>
将出口区域添加到策略中 [P] [O]
--remove-egress-zone=<zone>
从策略中移除出口区域 [P] [O]
--query-egress-zone=<zone>
查询出口区域是否已添加到策略中 [P] [O]处理接口绑定的选项
--list-interfaces
列出绑定到区域的接口 [P] [Z]
--add-interface=<interface>
将 <interface> 绑定到区域 [P] [Z]
--change-interface=<interface>
更改 <interface> 绑定的区域 [P] [Z]
--query-interface=<interface>
查询 <interface> 是否绑定到区域 [P] [Z]
--remove-interface=<interface>
从区域中移除 <interface> 的绑定 [P] [Z]处理源绑定的选项
--list-sources
列出绑定到区域的源 [P] [Z]
--add-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
将源绑定到区域 [P] [Z]
--change-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
更改源绑定的区域 [Z]
--query-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
查询源是否绑定到区域 [P] [Z]
--remove-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
从区域中移除源的绑定 [P] [Z]辅助程序选项
--new-helper=<helper> --module=<module> [--family=<family>]
添加新辅助程序 [仅 P]
--new-helper-from-file=<filename> [--name=<helper>]
从文件中添加新辅助程序,可选指定名称 [仅 P]
--delete-helper=<helper>
删除现有的辅助程序 [仅 P]
--load-helper-defaults=<helper>
加载辅助程序默认设置 [仅 P]
--info-helper=<helper>
显示辅助程序信息
--path-helper=<helper>
显示辅助程序的文件路径 [仅 P]
--get-helpers
列出预定义的辅助程序
--helper=<helper> --set-description=<description>
设置辅助程序的新描述 [仅 P]
--helper=<helper> --get-description
显示辅助程序的描述 [仅 P]
--helper=<helper> --set-short=<description>
设置辅助程序的新简要描述 [仅 P]
--helper=<helper> --get-short
显示辅助程序的简要描述 [仅 P]
--helper=<helper> --add-port=<portid>[-<portid>]/<protocol>
为辅助程序添加新端口 [仅 P]
--helper=<helper> --remove-port=<portid>[-<portid>]/<protocol>
从辅助程序中移除端口 [仅 P]
--helper=<helper> --query-port=<portid>[-<portid>]/<protocol>
检查端口是否已为辅助程序添加 [仅 P]
--helper=<helper> --get-ports
列出辅助程序的端口 [仅 P]
--helper=<helper> --set-module=<module>
为辅助程序设置模块 [仅 P]
--helper=<helper> --get-module
获取辅助程序的模块 [仅 P]
--helper=<helper> --set-family={ipv4|ipv6|}
设置辅助程序的协议族 [仅 P]
--helper=<helper> --get-family
获取辅助程序的协议族 [仅 P]直接选项
--direct
所有直接选项的起始选项
--get-all-chains
获取所有链 [P]
--get-chains {ipv4|ipv6|eb} <table>
获取添加到表中的所有链 [P]
--add-chain {ipv4|ipv6|eb} <table> <chain>
向表中添加新链 [P]
--remove-chain {ipv4|ipv6|eb} <table> <chain>
从表中移除链 [P]
--query-chain {ipv4|ipv6|eb} <table> <chain>
检查链是否已添加到表中 [P]
--get-all-rules
获取所有规则 [P]
--get-rules {ipv4|ipv6|eb} <table> <chain>
获取添加到表中链的所有规则 [P]
--add-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
向表中链添加规则 [P]
--remove-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
从表中链移除优先级规则 [P]
--remove-rules {ipv4|ipv6|eb} <table> <chain>
从表中链移除所有规则 [P]
--query-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
检查优先级规则是否已添加到表中链 [P]
--passthrough {ipv4|ipv6|eb} <arg>...
传递未经 firewalld 跟踪的命令
--get-all-passthroughs
获取所有跟踪的传递规则 [P]
--get-passthroughs {ipv4|ipv6|eb} <arg>...
获取跟踪的传递规则 [P]
--add-passthrough {ipv4|ipv6|eb} <arg>...
添加新的跟踪传递规则 [P]
--remove-passthrough {ipv4|ipv6|eb} <arg>...
移除跟踪的传递规则 [P]
--query-passthrough {ipv4|ipv6|eb} <arg>...
检查传递规则是否已添加 [P]锁定选项
--lockdown-on
启用锁定模式
--lockdown-off
禁用锁定模式
--query-lockdown
查询是否启用了锁定模式锁定白名单选项
--list-lockdown-whitelist-commands
列出白名单中的所有命令行 [P]
--add-lockdown-whitelist-command=<command>
将命令添加到白名单 [P]
--remove-lockdown-whitelist-command=<command>
从白名单中移除命令 [P]
--query-lockdown-whitelist-command=<command>
检查命令是否在白名单中 [P]
--list-lockdown-whitelist-contexts
列出白名单中的所有上下文 [P]
--add-lockdown-whitelist-context=<context>
将上下文添加到白名单 [P]
--remove-lockdown-whitelist-context=<context>
从白名单中移除上下文 [P]
--query-lockdown-whitelist-context=<context>
检查上下文是否在白名单中 [P]
--list-lockdown-whitelist-uids
列出白名单中的所有用户 ID [P]
--add-lockdown-whitelist-uid=<uid>
将用户 ID 添加到白名单 [P]
--remove-lockdown-whitelist-uid=<uid>
从白名单中移除用户 ID [P]
--query-lockdown-whitelist-uid=<uid>
检查用户 ID 是否在白名单中 [P]
--list-lockdown-whitelist-users
列出白名单中的所有用户名 [P]
--add-lockdown-whitelist-user=<user>
将用户名添加到白名单 [P]
--remove-lockdown-whitelist-user=<user>
从白名单中移除用户名 [P]
--query-lockdown-whitelist-user=<user>
检查用户名是否在白名单中 [P]紧急模式选项
--panic-on
启用紧急模式
--panic-off
禁用紧急模式
--query-panic
查询是否启用了紧急模式