CentOS防火墙文件详解
一、
CentOS 7及更高版本默认使用firewalld作为防火墙管理工具,相较于传统的iPTAbles,firewalld通过区域和服务的方式简化了配置过程,本文将详细介绍firewalld的核心概念、常用命令和操作实例,帮助读者更好地理解和管理服务器的网络连接。
二、核心概念
区域(Zone)
区域是firewalld中的一个重要概念,用于定义网络接口的分组,每个区域可以定义一组预定义的安全规则,常见的预定义区域包括:
drop:任何传入本机的网络数据包都会被丢弃,并且不会回复,只允许本机对外访问其他服务器。
block:任何传入本机的网络连接请求都会被拒绝,并回复一条拒绝访问的消息。
public:适用于公共网络环境,仅接受特定的连接请求,如某些特定的IP或开放特定端口。
external:与public类似,但默认仅开放ssh连接请求的22端口。
dmz:与external相同。
work:适用于工作网络环境,信任大部分其他计算机不会对本机进行攻击。
home:适用于家庭网络环境,信任网络上的其他计算机不会攻击本机。
internal:与home相同。
trusted:所有对本机的网络连接请求都会被接受。
服务(Service)
服务是一组预定义的规则集合,可以通过名称来指代一组特定的端口和协议,HTTP服务通常使用端口80,而HTTPS服务使用端口443,常用的服务包括ssh、http、https等。
端口(Port)
端口用于标识网络服务的数字,每个网络服务都会监听特定的端口以便于通信,SSH服务通常监听22端口,HTTP服务监听80端口。
三、常用命令
以下是一些常用的firewalld命令及其解释:
启动/停止/重启firewalld服务
启动 firewalld systemctl start firewalld 查看 firewalld 状态 systemctl status firewalld 停止 firewalld systemctl stop firewalld 重启 firewalld systemctl restart firewalld
查看所有区域
firewallcmd getzones
查看指定区域的规则
firewallcmd zone=public listall
开放端口
添加端口到 public 区域 firewallcmd zone=public addport=80/tcp permanent 重新加载防火墙配置 firewallcmd reload
添加服务
添加 HTTP 服务到 public 区域 firewallcmd zone=public addservice=http permanent 重新加载防火墙配置 firewallcmd reload
删除端口/服务
删除端口 80 从 public 区域 firewallcmd zone=public removeport=80/tcp permanent 重新加载防火墙配置 firewallcmd reload
四、实例操作
开放 SSH 访问(端口 22)
firewallcmd zone=public addservice=ssh permanent firewallcmd reload
开放 HTTP 和 HTTPS 服务
firewallcmd zone=public addservice=http permanent firewallcmd zone=public addservice=https permanent firewallcmd reload
将网络接口从默认的 public 区域移动到 trusted 区域
firewallcmd zone=trusted changeinterface=eth0 permanent firewallcmd reload
禁止 Ping 请求
firewallcmd zone=public icmpblockinversion permanent firewallcmd reload
允许特定 IP 访问 SSH 端口
firewallcmd zone=public addrichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' permanent firewallcmd reload
五、配置文件路径
firewalld的配置文件位于/etc/firewalld/
目录下,其中主要的配置文件有:
firewalld.conf
:firewalld的主要配置文件。
zones/
:每个区域的配置文件都在这个目录下,例如public.xml
,internal.xml
等。
services/
:包含每个服务的XML文件,例如http.xml
,ssh.xml
等。
六、FAQs
Q1: 如何永久关闭防火墙?
A1: 要永久关闭firewalld,你需要先停止服务,然后禁用开机启动。
停止 firewalld 服务 systemctl stop firewalld 禁用 firewalld 开机启动 systemctl disable firewalld
Q2: 如何查看当前活跃的区域及其绑定的网络接口?
A2: 你可以使用以下命令查看当前活跃的区域及其绑定的网络接口:
firewallcmd getactivezones
通过上述内容,你应该能够熟练地使用firewalld来保护和管理你的CentOS服务器,记得根据实际需求和安全策略及时更新防火墙规则,以确保服务器的安全性和稳定性。