使用 firewall-cmd 管理 Linux 防火墙
firewalld-cmd命令翻译<一>
Linux 系统中,firewalld
是一个流行的动态防火墙管理工具, firewall-cmd
是它的命令行接口。通过 firewall-cmd
,可以轻松地管理防火墙规则、配置区域(zones)、处理端口等。
这篇文章介绍了firewall-cmd
的常用功能。
1.启动和管理 `firewalld` 服务
启动、停止、重启和检查服务状态
# 启动 firewalld 服务
sudo systemctl start firewalld
# 停止 firewalld 服务
sudo systemctl stop firewalld
# 重启 firewalld 服务
sudo systemctl restart firewalld
# 检查 firewalld 服务状态
sudo systemctl status firewalld
# 设置 firewalld 开机自启动
sudo systemctl enable firewalld
# 禁用 firewalld 开机自启动
sudo systemctl disable firewalld
这些命令用于管理 firewalld
服务的启动和停止。
2. 状态管理
这些命令用于查询 firewalld
的当前状态,或者重新加载防火墙配置。
--state
:返回firewalld
当前运行状态。--reload
:重新加载防火墙配置,但保留现有的状态信息。--complete-reload
:完全重新加载防火墙,清除所有当前状态,包括动态规则。
# 查询 firewalld 当前状态
firewall-cmd --state
# 重新加载防火墙配置
firewall-cmd --reload
3. 区域管理(Zone Management)
防火墙中的区域(Zone)定义了不同的信任级别,并可以为每个区域分配不同的规则。
--get-default-zone
:获取系统中默认的区域名称。--set-default-zone=<zone>
:设置某个区域为系统的默认区域。--get-active-zones
:列出当前激活的区域。--list-all-zones
:列出所有区域的详细信息 。
# 获取当前默认区域
firewall-cmd --get-default-zone
# 设置新的默认区域
firewall-cmd --set-default-zone=public
# 列出所有激活的区域
firewall-cmd --get-active-zones
# 列出所有区域的详细信息
firewall-cmd --list-all-zones
4. 服务管理
防火墙的服务规则用于允许或阻止特定的服务。
--list-services
:列出当前区域中启用的服务。--add-service=<service>
:为当前区域添加一个服务。--remove-service=<service>
:从当前区域移除一个服务。
# 列出区域中启用的服务
firewall-cmd --zone=public --list-services
# 添加 HTTP 服务到当前区域
firewall-cmd --zone=public --add-service=http
# 从当前区域移除 HTTP 服务
firewall-cmd --zone=public --remove-service=http
5. 端口管理
有时需要直接开放或关闭某个端口以允许特定的网络流量。
--list-ports
:列出当前区域中开放的端口。--add-port=<portid>/protocol
:开放指定端口。--remove-port=<portid>/protocol
:关闭指定端口。
# 列出当前区域中开放的端口
firewall-cmd --zone=public --list-ports
# 开放 8080 端口(TCP 协议)
firewall-cmd --zone=public --add-port=8080/tcp
# 关闭 8080 端口
firewall-cmd --zone=public --remove-port=8080/tcp
6. 富规则(Rich Rules)
富规则允许你创建更复杂的规则,如基于 IP 地址的访问控制、日志记录等。
--add-rich-rule='<rule>'
:添加一个富规则。--remove-rich-rule='<rule>'
:删除一个富规则。--list-rich-rules
:列出当前区域中的所有富规则。
# 添加一个允许从特定 IP 访问 SSH 的富规则
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
# 列出所有富规则
firewall-cmd --zone=public --list-rich-rules
7. 授权和锁定(Lockdown)
可以启用锁定模式,限制防火墙规则的更改,或管理白名单。
--lockdown-on
:启用锁定模式,防止任何防火墙规则更改。--lockdown-off
:禁用锁定模式。--query-lockdown
:查询锁定模式是否启用。
# 启用锁定模式
firewall-cmd --lockdown-on
# 禁用锁定模式
firewall-cmd --lockdown-off
8. 伪装和转发
在路由场景中,可能需要启用伪装(Masquerade)和端口转发。
--add-masquerade
:启用 IP 伪装(NAT)。--remove-masquerade
:禁用 IP 伪装。--add-forward-port
:添加端口转发规则。
# 启用 IP 伪装
firewall-cmd --zone=public --add-masquerade
# 添加端口转发,从 8080 转发到 80
firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80
9. 直接规则(Direct Rules)
直接规则允许你绕过 firewalld
,直接通过 iptables
创建规则。
--add-rule
:为指定链添加规则。--get-all-rules
:列出所有直接规则。--remove-rule
:移除指定的直接规则。
# 列出所有直接规则
firewall-cmd --direct --get-all-rules
# 添加一个直接规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
总结
通过 firewall-cmd
,可以轻松管理 Linux 防火墙的各种规则和配置。无论是简单的端口开放还是复杂的富规则,firewalld
提供了灵活的工具集来保护系统。