CentOS防火墙(Firewalld)是一种强大的网络流量管理工具,用于保护服务器免受恶意网络活动的影响,以下是对CentOS防火墙的详细介绍:
基础概念
1、区域(Zone):
Firewalld将网络接口分组到不同的区域中,每个区域可以定义一组预定义的安全规则,常见的区域包括公共(public)、私有(home)、内部(internal)、外部(external)、工作(work)和信任(trusted)等。
2、服务(Service):
服务是一组预定义的规则集合,可以通过名称来指代一组特定的端口和协议,HTTP服务通常使用端口80,HTTPS服务通常使用端口443。
3、端口(Port):
端口是用于标识网络服务的数字,每个网络服务都会监听特定的端口以便于通信,防火墙可以通过允许或者拒绝端口的访问来控制网络流量。
常用命令
1、启动/停止/重启Firewalld服务:
sudo systemctl start firewalld
sudo systemctl stop firewalld
sudo systemctl restart firewalld
2、查看Firewalld状态:
sudo firewallcmd state
3、查看所有区域:
sudo firewallcmd getzones
4、查看指定区域的规则:
sudo firewallcmd zone=public listall
5、开放端口:
sudo firewallcmd zone=public addport=80/tcp permanent
sudo firewallcmd reload
6、添加服务:
sudo firewallcmd zone=public addservice=http permanent
sudo firewallcmd reload
7、删除端口/服务:
sudo firewallcmd zone=public removeport=80/tcp permanent
sudo firewallcmd zone=public removeservice=http permanent
sudo firewallcmd reload
实例操作
1、开放SSH访问(端口22):
```bash
sudo firewallcmd zone=public addport=22/tcp permanent
sudo firewallcmd reload
```
2、开放HTTP和HTTPS服务:
```bash
sudo firewallcmd zone=public addservice=http permanent
sudo firewallcmd zone=public addservice=https permanent
sudo firewallcmd reload
```
3、将网络接口从默认的public区域移动到trusted区域:
```bash
sudo firewallcmd zone=trusted changeinterface=eth0
sudo firewallcmd reload
```
4、禁止Ping请求:
```bash
sudo firewallcmd zone=public addrichrule='rule family="ipv4" protocol="icmp" icmptype="echorequest" drop' permanent
sudo firewallcmd reload
```
5、允许特定IP访问SSH端口:
```bash
sudo firewallcmd zone=public addrichrule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' permanent
sudo firewallcmd reload
```
配置文件路径
Firewalld的配置文件位于/etc/firewalld/
目录下,其中主要的配置文件有:
firewalld.conf
:Firewalld的主要配置文件。
zones
:每个区域的配置文件都在这个目录下,例如public.XML
,internal.xml
等。
services
:包含每个服务的XML文件,例如http.xml
,ssh.xml
等。
相关问答FAQs
1、如何查看当前防火墙的状态?
你可以使用以下命令来查看当前防火墙的状态:
```bash
sudo firewallcmd state
```
或者:
```bash
systemctl status firewalld
```
2、如何设置开机自动启动Firewalld?
你可以使用以下命令来设置开机自动启动Firewalld:
```bash
sudo systemctl enable firewalld
```