HCRM博客

如何有效配置CentOS 7的Firewall以增强服务器安全性?

CentOS 7 防火墙(FirewallD)的全面指南

CentOS 7 引入了 FirewallD 作为默认的防火墙管理工具,取代了之前版本中使用的 iptables,FirewallD 提供了一个动态的、基于区域的管理方式,使得配置和管理防火墙变得更加灵活和简便。

如何有效配置CentOS 7的Firewall以增强服务器安全性?-图1
(图片来源网络,侵权删除)

安装与启动

1、安装

在 CentOS 7 中,FirewallD 通常已经预装,但可以通过以下命令进行安装或重新安装:

```bash

sudo yum install firewalld y

```

2、启动

如何有效配置CentOS 7的Firewall以增强服务器安全性?-图2
(图片来源网络,侵权删除)

启动 FirewallD 服务:

```bash

sudo systemctl start firewalld

```

3、查看状态

检查 FirewallD 是否正在运行:

如何有效配置CentOS 7的Firewall以增强服务器安全性?-图3
(图片来源网络,侵权删除)

```bash

sudo systemctl status firewalld

```

4、设置开机启动

使 FirewallD 在系统启动时自动启动:

```bash

sudo systemctl enable firewalld

```

5、禁用和停止

停止 FirewallD 服务:

```bash

sudo systemctl stop firewalld

```

禁用 FirewallD 服务,使其在重启后不再启动:

```bash

sudo systemctl disable firewalld

```

基本操作

1、查看版本和帮助

查看 FirewallD 的版本:

```bash

firewallcmd version

```

查看帮助信息:

```bash

firewallcmd help

```

2、显示状态和区域

显示 FirewallD 的状态:

```bash

firewallcmd state

```

查看当前活动的区域:

```bash

firewallcmd getactivezones

```

查看特定接口所在的区域:

```bash

firewallcmd getzoneofinterface=eth0

```

3、信任级别

FirewallD 通过区域(Zone)来定义网络连接的信任级别,常见的区域包括:

drop: 丢弃所有进入的包,不回应。

block: 拒绝所有外部发起的连接,允许内部发起的连接。

public: 允许选中的连接。

external: 用于路由转发。

dmz: 允许受限制的进入连接。

work: 允许受信任的计算机被限制的进入连接。

home: 类似家庭组。

internal: 针对所有互联网用户。

trusted: 信任所有连接。

端口和服务管理

1、开启和关闭端口

public 区域中开放端口 80 (HTTP):

```bash

sudo firewallcmd zone=public addport=80/tcp permanent

```

移除端口 80:

```bash

sudo firewallcmd zone=public removeport=80/tcp permanent

```

重新载入规则以应用更改:

```bash

sudo firewallcmd reload

```

查询特定端口是否开放:

```bash

firewallcmd queryport=80/tcp

```

2、管理服务

将 SMTP 服务添加到work 区域:

```bash

sudo firewallcmd zone=work addservice=smtp permanent

```

查看已添加的服务:

```bash

firewallcmd listservice

```

删除服务:

```bash

sudo firewallcmd zone=work removeservice=smtp permanent

```

3、IP地址伪装

查看 IP 地址伪装状态:

```bash

firewallcmd querymasquerade

```

启用 IP 地址伪装:

```bash

sudo firewallcmd permanent addmasquerade

```

禁用 IP 地址伪装:

```bash

sudo firewallcmd permanent removemasquerade

```

4、端口转发

打开 IP 地址伪装(必须先启用):

```bash

sudo firewallcmd permanent addmasquerade

```

将 TCP 端口 22 转发到端口 3753:

```bash

sudo firewallcmd permanent addforwardport=port=22:proto=tcp:toport=3753

```

将端口数据转发到另一个 IP 的相同端口:

```bash

sudo firewallcmd permanent addforwardport=port=22:proto=tcp:toaddr=192.168.0.2:toport=22

```

高级配置和管理

1、查看策略列表

列出当前的策略规则:

```bash

firewallcmd listrichrules

```

添加白名单规则,只允许指定 IP 段访问服务器的 22 端口:

```bash

sudo firewallcmd permanent addrichrule='rule family="ipv4" source address="指定IP或IP段" port protocol="tcp" port="22" accept'

```

添加白名单规则,允许指定 IP 段访问服务器的所有端口:

```bash

sudo firewallcmd permanent addrichrule='rule family="ipv4" source address="指定IP或IP段" accept'

```

重新加载配置以应用更改:

```bash

sudo firewallcmd reload

```

2、配置文件修改

进入配置文件目录并编辑配置文件:

```bash

cd /etc/firewalld/zones/

vim public.XML

```

在文件中添加内容,然后重启防火墙以应用更改:

```xml

<rule family="ipv4">

<source address="指定IP或IP段"/>

<port protocol="tcp" port="22"/>

<accept/>

</rule>

```

FAQs(常见问题解答)

1、如何查看防火墙当前的状态?

你可以使用以下命令查看防火墙的当前状态:

```bash

firewallcmd state

或者

sudo systemctl status firewalld

```

这些命令会告诉你防火墙当前是否正在运行。

2、如何永久地开放一个端口?

要永久开放一个端口,你需要使用permanent 选项,要永久开放 HTTP 端口(80),你可以使用以下命令:

```bash

sudo firewallcmd zone=public addport=80/tcp permanent

然后重新加载防火墙规则以使更改生效:

sudo firewallcmd reload

```

分享:
扫描分享到社交APP
上一篇
下一篇