如何从FirewallD迁移到iptables的在CentOS 7

像大多数其他的Linux发行版,CentOS 7使用Linux内核里面的netfilter框架,以访问通过网络流的数据包。这提供了必要的接口检查,为了实现防火墙的数据包处理...

介绍

像大多数其他的Linux发行版,CentOS 7使用netfilter Linux内核内部框架,以访问通过网络流的数据包。 这提供必要的接口来检查和操纵分组以便实现防火墙系统。

大多数发行版使用iptables防火墙,它使用netfilter钩子强制执行防火墙规则。 CentOS 7配备了一个替代服务名为firewalld它满足了这一相同的目的。

虽然firewalld是极具特色一个非常有能力的防火墙解决方案,可能会更容易一些用户与坚持iptables ,如果他们是熟悉它的语法和高兴与它的行为和表现。 iptables 命令实际使用firewalld本身,而是iptables 服务未在默认情况下的CentOS 7安装。 在本指南中,我们将演示如何安装iptables在CentOS 7服务和迁移防火墙firewalldiptables (看看这个指南 ,如果你想学习如何使用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 rules.It通过建立使用管理框架完成这个iptables链。 您可能会看到的大多数规则将用于创建这些管理链,并引导流量流入和流出这些结构。

你最终会移动到你的防火墙规则iptables服务将不会需要重新创建管理框架firewalld依赖。 因此,你最终实现的规则集可能会更简单。 我们在这里保存整个集合,以保持尽可能多的原始数据完整。

您可以看到一些更重要的行,以了解您必须重新创建的策略,通过键入以下内容:

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

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

下载并安装Iptables服务

要开始您的服务器的过渡,你需要下载并安装iptables-service从CentOS软件库包。

通过键入以下内容来下载并安装服务文件:

sudo yum install iptables-services

这将下载并安装systemd用于管理脚本iptables服务。 它也将写一些默认iptablesip6tables配置文件复制到/etc/sysconfig目录。

构建您的Iptables防火墙规则

接下来,你需要来构建你iptables通过修改防火墙规则/etc/sysconfig/iptables ,并/etc/sysconfig/ip6tables文件。 这些文件认为,将被读取并应用,当我们开始的规则iptables服务。

你如何构建你的防火墙规则依赖于是否system-config-firewall程序的安装和用于管理这些文件。 检查顶部/etc/sysconfig/iptables文件,看它是否建议不要手动编辑与否:

sudo head -2 /etc/sysconfig/iptables

如果输出看起来是这样的,可随时手动编辑/etc/sysconfig/iptables ,并/etc/sysconfig/ip6tables文件来实现你的政策iptables防火墙:

# 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文件看起来像这样,你不应该手动编辑该文件:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.

这意味着该system-config-firewall管理工具安装和用于管理该文件。 任何手动更改都将被工具覆盖。 如果您看到这一点,您应该使用相关工具之一更改您的防火墙。 对于文本UI,请键入:

sudo system-config-firewall-tui

如果您安装了图形UI,可以通过键入以下内容启动它:

sudo system-config-firewall

如果你需要一些帮助学习iptables规则和语法,以下指南可能会有所帮助,即使它们主要针对的是Ubuntu的系统:

停止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

在这一点上, iptablesip6tables服务是当前会话活跃。 然而,目前, firewalld服务仍然是一个服务器重新启动时,将自动启动。

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

禁用FirewallD服务并启用Iptables服务

测试你的防火墙规则,以确保您的策略是否已正确被强制执行后,您可以继续禁用firewalld通过键入以下服务:

sudo systemctl disable firewalld

这将阻止服务在引导时自动启动。 由于firewalld服务不应手动启动,而iptables服务,要么在运行,你可以采取通过屏蔽服务的额外步骤。 这将防止firewalld被手工启动,以及服务:

sudo systemctl mask firewalld

现在,你可以启用iptablesip6tables服务,使他们将在开机时自动启动:

sudo systemctl enable iptables
sudo systemctl enable ip6tables

这应该完成您的防火墙转换。

结论

实施防火墙是保持服务器安全的重要一步。 虽然firewalld是一个伟大的防火墙解决方案,有时使用最熟悉的工具或通过更多样化的基础设施使用相同的系统是很有道理的。