前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何从FirewallD迁移到CentOS 7上的Iptables

如何从FirewallD迁移到CentOS 7上的Iptables

原创
作者头像
无敌小笼包
修改2018-10-22 12:01:41
1.2K0
修改2018-10-22 12:01:41
举报

介绍

你可能需要一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

与大多数其他Linux发行版一样,CentOS 7使用netfilterLinux内核中的框架来访问流经网络堆栈的数据包。这为检查和操作数据包提供了必要的接口,以实现防火墙系统。

大多数发行版使用iptables防火墙,防火墙使用netfilter挂钩来强制执行防火墙规则。CentOS 7附带了一个替代服务firewalld,它实现了同样的目的。

虽然firewalld是一个非常强大的防火墙解决方案,具有强大的功能,但iptables如果一些用户对其语法感到满意并对其行为和性能感到满意,则可能更容易坚持使用。该iptables 命令实际上是单独使用的firewalld,但默认情况下该iptables 服务未安装在CentOS 7上。在本指南中,我们将演示如何iptables在CentOS 7上安装服务并将防火墙firewalld迁移到iptables

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

在切换到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脚本。它还会将一些默认iptablesip6tables配置文件写入/etc/sysconfig目录。

构建您的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防火墙的策略:

# 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

如果安装了图形用户界面,可以键入以下命令启动它:

sudo system-config-firewall

停止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是一个很好的防火墙解决方案,但有时使用最熟悉的工具或在更多样化的基础架构中使用相同的系统是最有意义的。

更多CentOS教程请前往腾讯云+社区学习更多知识。

> 参考文献:《How To Migrate from FirewallD to Iptables on CentOS 7》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 保存当前的防火墙规则(可选)
      • 下载并安装Iptables服务
        • 构建您的Iptables防火墙规则
          • 停止FirewallD服务并启动Iptables服务
            • 禁用FirewallD服务并启用Iptables服务
              • 结论
              相关产品与服务
              云开发 CloudBase
              云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档