Centos防火墙设置指南
一、防火墙基础介绍
CentOS 7及更高版本默认使用firewalld
作为其防火墙管理工具。firewalld
通过iptables
来控制网络流量,支持动态更新和基于区域(zone)的规则管理,本文将详细介绍如何在CentOS中配置和管理firewalld
。

二、启动与停止防火墙
在配置防火墙之前,首先需要了解如何启动和停止防火墙服务:
1、启动防火墙
- sudo systemctl start firewalld
2、停止防火墙
- sudo systemctl stop firewalld
3、重启防火墙
- sudo systemctl restart firewalld
4、查看防火墙状态
- sudo systemctl status firewalld
5、设置防火墙开机自启

- sudo systemctl enable firewalld
6、取消防火墙开机自启
- sudo systemctl disable firewalld
三、检查防火墙状态与规则
在配置防火墙时,可以使用以下命令查看当前的状态和规则:
1、查看防火墙状态
- firewallcmd state
2、查看已开放端口
- firewallcmd listports
3、查看所有规则
- firewallcmd listall
四、开放端口与服务
为了允许特定端口或服务的流量,可以通过以下命令进行配置:

1、永久开放一个端口
- sudo firewallcmd permanent addport=80/tcp
2、立即开放一个端口(重启后失效)
- sudo firewallcmd addport=80/tcp
3、删除开放端口规则
- sudo firewallcmd permanent removeport=80/tcp
4、重新加载防火墙规则
- sudo firewallcmd reload
5、开放服务(例如http服务)
- sudo firewallcmd permanent addservice=http
6、关闭服务(例如关闭http服务)
- sudo firewallcmd permanent removeservice=http
五、高级配置:区域与自定义规则
Firewalld使用“区域”来管理不同的网络接口和源地址,每个区域可以定义一组规则,这些规则指定了该区域内允许或拒绝的流量。
1. 区域概念与预定义区域
drop: 丢弃所有传入的数据包,不回复任何信息。
block: 拒绝所有传入的网络连接请求,并回复一条拒绝消息。
public: 公共区域,适用于外部网络访问。
external: 外部区域,通常用于路由转发。
work: 工作区,信任大多数计算机不会对本机进行攻击。
home: 家庭区,信任家庭网络中的设备。
internal: 内部网络,完全信任的区域。
trusted: 完全信任的区域,接受所有连接请求。
2. 添加和修改区域规则
添加源地址到区域
- sudo firewallcmd permanent zone=trusted addsource=192.168.1.1/24
修改默认区域
- sudo firewallcmd setdefaultzone=public
查看区域信息
- sudo firewallcmd listallzones
3. 自定义规则
添加富规则
- sudo firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
移除富规则
- sudo firewallcmd permanent removerichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
1. 如何更改防火墙的默认区域?
答:使用以下命令可以将默认区域设置为public
:
- sudo firewallcmd setdefaultzone=public
2. 如何允许特定IP访问特定端口?
答:可以通过添加富规则来实现,例如允许IP192.168.1.100
访问TCP端口22
:
- sudo firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
然后重新加载防火墙规则:
- sudo firewallcmd reload