CentOS 7 Firewall 使用指南
CentOS 7中的firewalld服务是用于管理防火墙规则的重要工具,它不仅提供了基本的防火墙功能,还引入了“zone”的概念,使得网络连接的管理更加灵活和动态,本文将详细介绍如何在CentOS 7中安装、配置和管理firewalld,以及如何通过不同的命令进行操作。
一、firewalld的简介与特性
firewalld是CentOS 7中默认的防火墙管理工具,它支持IPv4和IPv6,并且可以通过图形界面或命令行界面进行管理,与传统的iptables相比,firewalld具有以下优点:
1、动态更新:无需重启服务即可应用新的防火墙规则。
2、区域(Zone)概念:允许用户根据不同的信任级别定义多个区域,并为每个接口分配相应的区域。
3、运行时与永久配置分离:运行时配置在系统重启后失效,而永久配置则会被保存并在每次启动时自动加载。
二、安装与启动firewalld
确保你的系统中已经安装了firewalld,如果尚未安装,可以使用以下命令进行安装:
sudo yum install firewalld y
安装完成后,启动firewalld服务:
sudo systemctl start firewalld
要使firewalld在系统启动时自动运行,可以使用:
sudo systemctl enable firewalld
查看firewalld的状态:
sudo systemctl status firewalld
三、基本操作命令
1. 查看状态与版本
查看firewalld状态:
sudo firewallcmd state
查看firewalld版本:
firewallcmd version
2. 查看帮助与端口信息
查看帮助:
firewallcmd help
显示所有打开的端口:
firewallcmd zone=public listports
3. 添加与删除端口
添加端口(以80端口为例):
sudo firewallcmd zone=public addport=80/tcp permanent
删除端口:
sudo firewallcmd zone=public removeport=80/tcp permanent
注意:添加或删除端口后,需要重新加载防火墙规则才能生效:
sudo firewallcmd reload
四、区域(Zone)管理
firewalld通过区域来管理不同网络接口的防火墙规则,以下是常用的区域类型及其描述:
drop:丢弃所有进入的包,不给出任何响应,只允许流出的网络连接。
block:拒绝所有外部发起的连接,但允许内部发起的连接,返回ICMP主机不可达消息。
public:用于公开区域,不信任其他网络设备,只允许选中的入站连接。
external:用于外部网络,通常配合地址伪装使用,只允许选中的入站连接。
dmz:非军事区,允许有限的外部访问,只接受选中的入站连接。
work:工作区,信任大多数计算机不会对本地系统造成危害,只接受选中的入站连接。
home:家庭区,类似工作区,但更偏向于个人用途,只接受选中的入站连接。
internal:内部网络,完全信任该区域内的所有设备,只接受选中的入站连接。
trusted:信任所有连接,不做任何限制。
1. 查看活动区域
sudo firewallcmd getactivezones
2. 查看指定接口所属区域
sudo firewallcmd getzoneofinterface=eth0
3. 添加与删除服务到特定区域
以smtp服务为例,将其添加到work区域:
sudo firewallcmd zone=work addservice=smtp permanent
查看work区域中的服务:
sudo firewallcmd zone=work listservices permanent
删除work区域中的smtp服务:
sudo firewallcmd zone=work removeservice=smtp permanent
五、高级功能
1. IP地址伪装(Masquerading)
IP地址伪装常用于NAT(网络地址转换),允许内部网络中的设备通过一个公共IP地址访问互联网,确保外部区域已启用伪装:
sudo firewallcmd zone=external addmasquerade permanent
重新加载防火墙规则:
sudo firewallcmd reload
2. 端口转发(Port Forwarding)
端口转发允许将一个外部端口的流量转发到内部网络中的另一个端口,将外部的TCP端口22流量转发到内部IP为192.168.1.100的TCP端口2222:
sudo firewallcmd zone=external addforwardport=22:port=2222:proto=tcp permanent
重新加载防火墙规则:
sudo firewallcmd reload
六、常见问题解答(FAQs)
Q1:如何更改默认区域?
A1:可以通过修改/etc/firewalld/zones/public.xml
文件中的<target>
标签值来更改默认区域,将默认区域改为work
:
<target>reject="yes">work</target>
然后重新加载防火墙规则:
sudo firewallcmd reload
Q2:如何永久关闭防火墙?
A2:虽然不建议关闭防火墙以保证系统安全,但如果确实需要关闭,可以执行以下命令:
sudo systemctl stop firewalld sudo systemctl disable firewalld
或者直接禁止开机启动:
sudo systemctl mask firewalld
这样做会降低系统的安全性,因此应谨慎使用。
CentOS 7中的firewalld提供了强大且灵活的防火墙管理功能,通过区域的概念和动态更新机制,使得网络连接的管理变得更加便捷和高效,掌握上述基本操作和高级功能,可以帮助系统管理员更好地保护系统免受未经授权的访问和攻击,无论是日常维护还是应急处理,firewalld都是一个不可或缺的工具。