0


在CentOS 7上如何从FirewallD迁移至Iptables

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

与大多数其他 Linux 发行版一样,CentOS 7 使用 Linux 内核中的

netfilter

框架来访问通过网络堆栈流动的数据包。这提供了必要的接口来检查和操作数据包,以实现防火墙系统。

大多数发行版使用

iptables

防火墙,它使用

netfilter

钩子来执行防火墙规则。CentOS 7 配备了一个名为

firewalld

的替代服务,它实现了相同的功能。

虽然

firewalld

是一个非常强大的防火墙解决方案,具有出色的功能,但对于一些用户来说,如果他们熟悉

iptables

的语法并且满意其行为和性能,可能更容易使用

iptables

iptables

命令实际上被

firewalld

本身使用,但是 CentOS 7 默认情况下没有安装

iptables

服务。在本指南中,我们将演示如何在 CentOS 7 上安装

iptables

服务,并将防火墙从

firewalld

迁移到

iptables

(如果您想了解如何使用 FirewallD,请查看此指南)。

保存当前防火墙规则(可选)

在将服务器的防火墙解决方案切换到

iptables

之前,最好保存

firewalld

正在执行的当前规则。我们上面提到,

firewalld

守护程序实际上利用

iptables

命令与

netfilter

内核钩子通信。因此,我们可以使用

iptables

命令来转储当前规则。

通过输入以下命令将当前规则集转储到标准输出并保存到您的主目录中的名为

firewalld_iptables_rules

的文件中:

sudo iptables -S | tee ~/firewalld_iptables_rules

ip6tables

也执行相同操作:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

根据活动的

firewalld

区域、启用的服务以及从

firewall-cmd

直接传递给

iptables

的规则,转储的规则集可能非常庞大。

firewalld

服务使用普通的

iptables

规则来实现其防火墙策略。它通过使用

iptables

链构建管理框架来实现这一点。您可能会看到的大多数规则将用于创建这些管理链并指导流量进出这些结构。

您迁移到

iptables

服务的防火墙规则将不需要重新创建

firewalld

依赖的管理框架。因此,您最终实施的规则集可能会简单得多。我们在此保存整个集合,以尽可能保持尽可能多的原始数据。

您可以通过输入以下命令来查看一些更重要的行,以了解您需要重新创建的策略:

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

这将主要显示导致最终决策的规则。只跳转到用户创建的链的规则将不会显示。

下载并安装 Iptables 服务

要开始服务器的过渡,您需要从 CentOS 软件仓库下载并安装

iptables-service

包。

通过输入以下命令下载并安装服务文件:

sudo yum install iptables-services

这将下载并安装用于管理

iptables

服务的

systemd

脚本。它还将在

/etc/sysconfig

目录中写入一些默认的

iptables

ip6tables

配置文件。

构建您的 Iptables 防火墙规则

接下来,您需要通过修改

/etc/sysconfig/iptables

/etc/sysconfig/ip6tables

文件来构建您的

iptables

防火墙规则。这些文件保存了在启动

iptables

服务时将被读取和应用的规则。

您如何构建防火墙规则取决于是否安装并使用

system-config-firewall

进程来管理这些文件。检查

/etc/sysconfig/iptables

文件顶部以查看是否建议不要手动编辑:

sudo head -2 /etc/sysconfig/iptables

如果输出看起来像这样,可以自由地手动编辑

/etc/sysconfig/iptables

/etc/sysconfig/ip6tables

文件以实施

iptables

防火墙的策略:

[secondary_label output]
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall

使用

sudo

权限打开并编辑文件以添加您的规则:

sudo nano /etc/sysconfig/iptables
sudo nano /etc/sysconfig/ip6tables

在制定规则后,您可以使用以下命令测试您的 IPv4 和 IPv6 规则:

sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sudo sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

另一方面,如果检查

/etc/sysconfig/iptables

文件的输出看起来像这样,您不应该手动编辑该文件:

[secondary_label output]

由 system-config-firewall 编写的防火墙配置

不建议手动修改此文件。

这意味着安装并使用了

system-config-firewall

管理工具来管理此文件。任何手动更改都将被该工具覆盖。如果看到这个提示,应该使用相关工具来更改防火墙。对于文本界面,输入以下命令:

sudo system-config-firewall-tui

如果安装了图形界面,可以输入以下命令启动:

sudo system-config-firewall

如果需要学习关于

iptables

规则和语法的帮助,下面的指南可能会有所帮助,尽管它们主要针对 Ubuntu 系统:

  • 如何在 Ubuntu 14.04 上使用 Iptables 设置防火墙
  • Iptables 基础知识:常见防火墙规则和命令
  • 如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板

停止 FirewallD 服务并启动 Iptables 服务

接下来,我们需要停止当前的

firewalld

防火墙并启动我们的

iptables

服务。我们将使用

&&

构造在

firewalld

服务成功关闭后立即启动新的防火墙服务:

sudo systemctl stop firewalld && sudo systemctl start iptables; sudo systemctl start ip6tables

您可以通过输入以下命令验证

firewalld

是否未运行:

sudo firewall-cmd --state

您还可以通过输入以下命令查看您在

/etc/sysconfig

目录中设置的规则是否已加载和应用:

sudo iptables -S
sudo ip6tables -S

此时,

iptables

ip6tables

服务已激活当前会话。但是,当前情况下,

firewalld

服务仍然会在服务器重新启动时自动启动。

这是测试防火墙策略的最佳时机,以确保您拥有所需的访问级别,因为如果出现任何问题,可以重新启动服务器以恢复到旧的防火墙。

禁用 FirewallD 服务并启用 Iptables 服务

在测试防火墙规则以确保策略正确执行后,可以禁用

firewalld

服务:

sudo systemctl disable firewalld

这将防止服务在启动时自动启动。由于在运行

iptables

服务时也不应手动启动

firewalld

服务,可以采取额外步骤屏蔽该服务。这将防止手动启动

firewalld

服务:

sudo systemctl mask firewalld

现在,可以启用

iptables

ip6tables

服务,以便它们在启动时自动启动:

sudo systemctl enable iptables
sudo systemctl enable ip6tables

这应该完成了防火墙的过渡。

结论

实施防火墙是确保服务器安全的重要步骤。虽然

firewalld

是一个很好的防火墙解决方案,但有时使用最熟悉的工具或在更多样化的基础设施中使用相同的系统是最明智的选择。

标签: centos linux 运维

本文转载自: https://blog.csdn.net/rubys007/article/details/142794564
版权归原作者 白如意i 所有, 如有侵权,请联系我们删除。

“在CentOS 7上如何从FirewallD迁移至Iptables”的评论:

还没有评论