Linux系统命令之Firewalld的使用方法及示例详解
firewalld是Linux系统中一个功能强大的防火墙管理工具,它提供了一种动态管理防火墙规则的方式,使得管理员能够更灵活地控制网络流量。本文将详细介绍firewalld的使用方法及示例,帮助读者更好地理解和应用这一工具。
一、Firewalld简介
Firewalld是CentOS 7及以后版本默认安装的防火墙管理工具,它取代了传统的iptables防火墙。Firewalld使用区域(zone)的概念来定义不同级别的安全策略,每个区域都有自己的一套防火墙规则。这些规则可以根据网络环境的不同进行动态调整,而无需重启防火墙服务。
Firewalld支持IPv4和IPv6,并提供了丰富的命令行工具和图形化界面供用户选择。它允许管理员通过定义服务和端口来管理访问控制,还支持动态更新防火墙规则,使得管理更加便捷。
二、Firewalld的基本命令
(一)启动与停止
启动Firewalld
sudo systemctl start firewalld
该命令用于启动Firewalld服务。
停止Firewalld
sudo systemctl stop firewalld
该命令用于停止Firewalld服务。
设置开机自启动
sudo systemctl enable firewalld
该命令用于设置Firewalld服务在系统启动时自动启动。
禁止开机自启动
sudo systemctl disable firewalld
该命令用于禁止Firewalld服务在系统启动时自动启动。
检查Firewalld状态
sudo systemctl status firewalld
该命令用于检查Firewalld服务的当前状态,包括是否正在运行、是否设置为开机自启动等。
(二)重新加载配置
sudo firewall-cmd --reload
该命令用于重新加载Firewalld的配置文件,使更改生效而无需重启服务。
(三)查看状态与规则
查看活动防火墙状态
sudo firewall-cmd --state
该命令用于查看Firewalld服务是否正在运行。
列出所有活动区域
sudo firewall-cmd --get-active-zones
该命令用于列出当前系统中所有活动的防火墙区域及其对应的网络接口。
查看指定区域的规则
sudo firewall-cmd --list-all --zone=public
该命令用于查看指定区域(如public区域)的所有防火墙规则。
列出所有区域
sudo firewall-cmd --get-zones
该命令用于列出Firewalld支持的所有区域。
查看默认区域
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
该命令用于从public区域中移除网络接口eth0。
查看指定区域的接口
sudo firewall-cmd --get-zone-of-interface=eth0
该命令用于查看网络接口eth0所属的区域。
(五)服务管理
列出所有支持的服务
sudo firewall-cmd --get-services
该命令用于列出Firewalld支持的所有服务。
添加一个服务到区域
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
该命令用于在public区域中永久添加http服务,即使重启系统或防火墙服务后,该设置仍然有效。
(六)端口管理
临时打开一个端口
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
该命令用于在public区域中永久打开8080/tcp端口。
列出在区域中打开的端口
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流量通过public区域。
记录并丢弃来自指定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的IPv4流量,并在日志中标记为“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区域中禁用网络地址伪装。
在区域之间转发流量
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命令来配置Firewalld。例如:
firewall-offline-cmd --add-service=http
该命令用于在离线模式下为Firewalld添加http服务。
(三)永久保存变更
sudo firewall-cmd --runtime-to-permanent
该命令用于将当前运行时的Firewalld配置永久保存到磁盘中。
四、总结
Firewalld是Linux系统中一个功能强大且易于使用的防火墙管理工具。通过本文的介绍,读者应该已经掌握了Firewalld的基本使用方法及示例。在实际应用中,可以根据网络环境的不同需求,灵活配置Firewalld的规则和区域,以确保系统的安全性和稳定性。同时,也需要注意定期检查和更新防火墙规则,以适应不断变化的网络环境和安全威胁。
网站声明
本站内容可能存在水印或引流等信息,请擦亮眼睛自行鉴别;以免上当受骗;
本站提供的内容仅限用于学习和研究目的,不得将本站内容用于商业或者非法用途;