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