禁用 Firewalld 防火墙

默认在 CentOS 7 Linux 中,firewalld 防火墙将配置为在引导期间自动启动。
由于我们在任何时候都只能运行 firewalld 或者 iptables,因此我们将首先禁用 firewalld。

[jack@onitroad ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

这会禁用 firewalld 在系统启动时自动启动,但它不会停止运行 firewalld 的当前运行实例,因此我们接下来会这样做。

[jack@onitroad ~]# systemctl stop firewalld

虽然 firewalld 将不再在启动时自动启动并且当前未运行,但它仍然可以通过命令行手动启动。
为了防止这种情况,我们屏蔽了服务,如下所示。

[jack@onitroad ~]# systemctl mask firewalld
Created symlink from /etc/systemd/system/firewalld.service to /dev/null.

我们现在准备安装和配置 iptables。

启用 iptables

在我默认的 CentOS 7 安装中,我已经安装了 iptables 包,它可以用来运行 iptables 命令,但是我们还需要安装 iptables-services 以便在系统启动时自动启动 iptables。

[jack@onitroad ~]# yum install iptables-services -y

我们现在将检查 iptables 的状态,如下所示,在全新安装后,它当前不会运行,并将设置为禁用,即它不会在系统启动时自动启动。

[jack@onitroad ~]# systemctl status iptables
iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

安装完成后,我们将配置 iptables 在系统启动时自动启动。

[jack@onitroad ~]# systemctl enable iptables
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

接下来我们将启动iptables,激活防火墙。

[jack@onitroad ~]# systemctl start iptables

现在,如果我们检查 iptables 的状态,我们应该看到它正在积极运行,并且可以在系统启动时启动。

[jack@onitroad ~]# systemctl status iptables
iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since Tue 2014-12-27 02:54:27 PST; 1min 52s ago
  Process: 44351 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 44351 (code=exited, status=0/SUCCESS)
Dec 27 02:54:27 localhost.localdomain systemd[1]: Starting IPv4 firewall with iptables...
Dec 27 02:54:27 localhost.localdomain iptables.init[44351]: iptables: Applying firewall rules: [  OK  ]
Dec 27 02:54:27 localhost.localdomain systemd[1]: Started IPv4 firewall with iptables.

我们现在可以通过修改 /etc/sysconfig/iptables 文件像往常一样配置 iptables 防火墙。
我们可以通过对我们之前安装的 iptables-services 包使用 rpm -qc 命令来确认这是要使用的正确文件,因为这将列出与该包关联的所有默认配置文件。

[jack@onitroad ~]# rpm -qc iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables

请注意,我们还需要为 IPv6 启动和启用 ip6tables,因为 iptables 仅支持 IPv4.
同样,应在 /etc/sysconfig/ip6tables 文件中设置特定于 IPv6 的防火墙配置。

这些文件中的每一个都包含默认配置,以允许来自任何源 IP 地址的 TCP 端口 22,因此我们不必担心在配置期间将自己锁定在 SSH 访问之外。

如果我们对这些文件中的任何一个进行了任何更改,请务必重新启动 iptables 使更改生效。

[jack@onitroad ~]# systemctl restart iptables
如何在 CentOS 7 Linux 中安装 Iptables 防火墙

我们将介绍如何停止和禁用默认的 firewalld 防火墙,而是在 CentOS 7 Linux 中安装和配置 iptables。

值得注意的是,iptables 和 firewalld 是互斥的,任何时候都应该只运行一个。

日期:2020-07-07 20:55:07 来源:oir作者:oir