在 Centos 7 中 iptables-config 更改不再执行任何操作(无法在停止/重新启动时保存)

在 Centos 7 中 iptables-config 更改不再执行任何操作(无法在停止/重新启动时保存)

太长了;博士 如何在 Centos 7 上保留我的 iptables?

根据Centos 5 文档当服务重新启动或停止时,我应该能够保留我的 iptables。我可以确认曾经是这样的情况,如果我没记错的话,那是很久以前在 Centos 7 上的情况了。

service iptables save现在,除非我手动调用该命令,否则我无法保存任何 iptables 更改。

但是,由于我确实想保存计数器(即使用情况),我需要确保重新启动时保留最新的计数器。

我的/etc/sysconfig/iptables-config看起来像这样:

IPTABLES_MODULES=""
IPTABLES_MODULES_UNLOAD="yes"
IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"
IPTABLES_SAVE_COUNTER="yes"
IPTABLES_STATUS_NUMERIC="yes"
IPTABLES_STATUS_VERBOSE="no"
IPTABLES_STATUS_LINENUMBERS="yes"

我用:yum info iptables iptables-services xtables-addons

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.coreix.net
 * epel: epel.mirror.wearetriple.com
 * extras: mirrors.coreix.net
 * updates: mirrors.coreix.net
Installed Packages
Name        : iptables
Arch        : x86_64
Version     : 1.4.21
Release     : 18.0.1.el7.centos
Size        : 1.5 M
Repo        : installed
From repo   : base
Summary     : Tools for managing Linux kernel packet filtering capabilities
URL         : http://www.netfilter.org/
License     : GPLv2
Description : The iptables utility controls the network packet filtering code in the
            : Linux kernel. If you need to set up firewalls and/or IP masquerading,
            : you should install this package.

Name        : iptables-services
Arch        : x86_64
Version     : 1.4.21
Release     : 18.0.1.el7.centos
Size        : 25 k
Repo        : installed
From repo   : base
Summary     : iptables and ip6tables services for iptables
URL         : http://www.netfilter.org/
License     : GPLv2
Description : iptables services for IPv4 and IPv6
            :
            : This package provides the services iptables and ip6tables that have been split
            : out of the base package since they are not active by default anymore.

Name        : xtables-addons
Arch        : x86_64
Version     : 2.12
Release     : 1.el7.lux
Size        : 294 k
Repo        : installed
From repo   : lux
Summary     : Extensions targets and matches for iptables
URL         : http://xtables-addons.sourceforge.net
License     : GPLv2 and LGPLv2
Description : Xtables-addons provides extra modules for iptables not present in the kernel,
            : and is the successor of patch-o-matic. Extensions includes new targets like
            : TEE, TARPIT, CHAOS, or modules like geoip, ipset, and account.
            :
            : This package provides the userspace libraries for iptables to use extensions
            : in the xtables-addons-kmod package. You must also install the
            : xtables-addons-kmod package.

更新#1:

我发现该iptables-config文件非常严格,单个空格会破坏它,错误的空格会让解析器完全忽略它。重新安装并使用原始文件。

现在我面临的问题是类似的。service iptables stop现在节省。重新启动或关闭不是

更新#2:

第一个问题肯定是iptables-config文件。删除所有 iptables 相关文件/etc/sysconfig并重新安装可以快速修复该问题。

但是,由于权限问题,iptables 似乎无法保存。

更新#3:

我错过了更改安全级别,而我通常会这样做。下面的命令禁用高级安全性并允许我保存在 iptables 中。

setenforce 0

它正在工作!

答案1

centos7 使用firewalld 作为 iptables 的前端。请点击此链接了解如何使用它:https://www.linode.com/docs/security/firewalls/introduction-to-firewalld-on-centos

答案2

事实证明,一系列问题导致我的 iptables 无法保存,或者无法加载,或者保存并加载然后加载其他内容。

根据我的更新,我的主要问题是:

  1. /etc/sysconfig/iptables-config格式错误

/etc/sysconfig/iptables-config是非常严格的。额外的空格会破坏命令或导致它完全忽略该命令。我重新安装了该软件包并编辑了该文件(删除后),以确保它是正确的。

IE

service iptables stop     
yum -y install iptables iptables-services     
rm -rf /etc/sysconfig/ipt*     
yum -y reinstall iptables iptables-services

然后编辑该文件。

nano /etc/sysconfig/iptables-config
  1. 禁用强制执行(安全选项)

SELinux 强制执行已启用,并且不允许进行保存。我通过执行“停止”看到了这一点service iptables stop,并注意到它无法保存在service iptables status -l.然后我暂时禁用 SELinux 强制,setenforce 0它允许我保存它们。我不推荐将此作为解决方案,您可能会找到更好的解决方案(禁用安全行为并不好)。

如何永久禁用:

nano /etc/sysconfig/selinux

然后将指令更改SELinux=enforcingSELinux=disabled.

答案3

今天在 CentOS 7.8 中这仍然是一个问题。 这里是错误报告。

您可以禁用 SELinux,但这不是一个很好的解决方案。
在问题在上游得到解决之前,您可以使用以下步骤将自定义策略模块添加到 SELinux 中:

  1. 启用 SELinux 后,保存 iptables 几次,这将为以后的命令创建 SELinux 日志:
    # /usr/libexec/iptables/iptables.init save
  1. 安装 ausearch 和 semodule 的软件包:
    # yum install audit policycoreutils
  1. (可选)查看 SELinux 错误:
    # ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -i|tail -55
  1. 根据 chmod 的错误创建自定义 SELinux 策略模块,并将其导入 SELinux:
    # ausearch -c 'chmod' --raw | audit2allow -M iptables_save_chmod
    # semodule -i iptables_save_chmod.pp

参考

相关内容