禁用 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
我们将介绍如何停止和禁用默认的 firewalld 防火墙,而是在 CentOS 7 Linux 中安装和配置 iptables。
值得注意的是,iptables 和 firewalld 是互斥的,任何时候都应该只运行一个。