Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.6. 使用防火墙、SELinux 和 SSH 日志提高系统安全性

计算机安全性是保护计算机系统免受硬件、软件或信息损坏或损害其提供的服务的影响或错误。因此,确保计算机安全性是关键任务,不仅在企业中处理敏感数据或处理某些业务交易。

计算机安全性包括各种功能和工具。本节仅涵盖安装操作系统后您需要配置的基本安全功能。有关保护红帽企业 Linux 7 安全性的详细信息,请参阅红帽企业 Linux 7 安全指南

1.6.1. 确保防火墙已启用并正在运行

1.6.1.1. 什么是防火墙问题及其如何增强系统安全性

防火墙是一种网络安全系统,它根据预先确定的安全规则监控和控制传入和传出的网络流量。防火墙通常在可信、安全的内部网络和其他外部网络之间建立一个障碍。

在 Red Hat Enterprise Linux 7 中,防火墙由 firewalld 服务提供,该服务会在安装 Red Hat Enterprise Linux 期间自动启用。但是,如果您明确禁用该服务,例如在 kickstart 配置中,您可以重新启用它,如 第 1.6.1.2 节 “重新启用 firewalld 服务” 所述。有关 Kickstart 文件中的防火墙设置选项概述,请参阅 Red Hat Enterprise Linux 7 安装指南

1.6.1.2. 重新启用 firewalld 服务

如果 firewalld 服务在安装后被禁用,红帽建议红帽考虑重新启用该服务。

您可以以常规用户身份显示 firewalld 的当前状态:

~]$ systemctl status firewalld

如果没有启用并运行 firewalld,切换到 root 用户并更改其状态:

~]# systemctl start firewalld
~]# systemctl enable firewalld

有关与 firewalld 相关的安装后流程的更多信息,请参阅 Red Hat Enterprise Linux 7 安全指南。有关配置和使用防火墙的详情,请查看 Red Hat Enterprise Linux 7 安全指南

1.6.2. 确定适当的 SELinux 状态

1.6.2.1. SELinux 是什么及其如何增强系统安全性

Security Enhanced Linux(SELinux) 是一个额外的系统安全层,它决定哪个进程可以访问哪些文件、目录和端口。

SELinux 状态

SELinux 有两个可能的状态:

  • Enabled
  • Disabled

禁用 SELinux 时,仅使用自主访问控制(DAC)规则。

SELinux 模式

启用 SELinux 时,它可以以以下模式之一运行:

  • Enforcing
  • Permissive

强制模式意味着 SELinux 策略会被强制实施。SELinux 根据 SELinux 策略规则拒绝访问,并且只启用特别允许的交互。强制模式是安装后的默认模式,也是最安全的 SELinux 模式。

许可模式意味着 SELinux 策略不会被强制实施。SELinux 不会拒绝访问,但是对于在 enforcing 模式运行时会被拒绝的操作,则会记录拒绝信息。Permissive 模式是安装过程中的默认模式。在某些情况下,以 permissive 模式运行也很有用,例如,在进行故障排除时您需要访问 Access Vector Cache(AVC)拒绝。

有关 Red Hat Enterprise Linux 7 中 SELinux 的更多信息,请参阅 Red Hat Enterprise Linux 7 SELinux 用户和管理员指南

1.6.2.2. 确保 SELinux 所需的状态

默认情况下,SELinux 在安装过程中以 permissive 模式运行,安装完成后处于强制模式。

然而,在某些特定情况下,SELinux 可能会明确设置为 permissive 模式,或者甚至可能在安装的操作系统中禁用。可以在 kickstart 配置中设置此设置,例如:有关 Kickstart 文件中的 SELinux 设置选项概述,请参阅 Red Hat Enterprise Linux 7 安装指南

重要

红帽建议使您的系统保持在 enforcing 模式下。

显示当前的 SELinux 模式,并根据需要设置模式:

确保 SELinux 所需的状态

  1. 显示当前生效的 SELinux 模式:

    ~]$ getenforce
  2. 如果需要,请在 SELinux 模式之间切换。

    切换可以是临时的,也可以是永久性的。临时切换不会在重新启动后保留,而永久切换为:

    • 临时切换到 enforcing 或 permissive 模式:

      ~]# setenforce Enforcing
      ~]# setenforce Permissive
    • 要永久设置 SELinux 模式,修改 /etc/selinux/config 配置文件中的 SELINUX 变量。

      例如,将 SELinux 切换到 enforcing 模式:

      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      #   enforcing - SELinux security policy is enforced.
      #   permissive - SELinux prints warnings instead of enforcing.
      #   disabled - No SELinux policy is loaded.
      SELINUX=enforcing

1.6.2.3. 在 web 控制台中管理 SELinux

Web 控制台中,使用 SELinux 选项打开或关闭 SELinux 强制策略。

默认情况下,web 控制台中的 SELinux enforcing 策略是 on,SELinux 在 enforcing 模式下运行。通过关闭 SELinux,您可以将 SELinux 切换为 permissive 模式。请注意,与 /etc/sysconfig/selinux 文件中的默认配置偏差会在下一次引导时自动恢复。

图 1.3. 在 web 控制台中管理 SELinux

n 上的 SELinux

1.6.3. 使用基于 SSH 的身份验证

1.6.3.1. 基于 SSH 的身份验证及其如何增强系统安全性

如果要保护与其他计算机的通信,您可以使用基于 SSH 的身份验证。

安全外壳(SSH)是一种协议,可促进客户端-服务器通信,并允许用户远程登录任何运行 SSH 的主机系统。SSH 加密连接。客户端使用加密将其身份验证信息传输到服务器,会话期间发送和接收的所有数据也在加密下传输。

SSH 使其用户无需输入密码即可进行身份验证。为此,SSH 使用私钥-公钥方案。

有关 SSH 保护的详情请参考 第 12.1.2 节 “主要功能”

1.6.3.2. 建立 SSH 连接

为了能够使用 SSH 连接,创建由公钥和私钥组成的两对密钥。

创建密钥文件并将 Them 复制到服务器

  1. 生成公钥和私钥:

    ~]$ ssh-keygen

    这两个密钥都存储在 ~/.ssh/ 目录中:

    • ~/.ssh/id_rsa.pub - public key
    • ~/.ssh/id_rsa - private key

      公钥不需要是保密的。它用于验证私钥。私钥是机密。您可以选择使用密钥生成过程中指定的密语来保护私钥。使用密码短语时,身份验证更安全,但不再是免密码操作。您可以使用 ssh-agent 命令避免这种情况。在这种情况下,您将仅在会话开始时输入一次密码短语。有关 ssh-agent 配置的详情请参考 第 12.2.4 节 “使用基于密钥的身份验证”

  2. 将最新修改的公钥复制到您要登录到的远程机器中:

    ~]# ssh-copy-id USER@hostname

    现在,您可以安全地输入系统,但不会输入密码。

1.6.3.3. 禁用 SSH Root 登录

要提高系统安全性,您可以禁用 root 用户的 SSH 访问,这是默认启用的。

有关此主题的更多信息,请参阅 Red Hat Enterprise Linux 7 安全指南

禁用 SSH Root 登录

  1. 访问 /etc/ssh/sshd_config 文件:

    ~]# vi /etc/ssh/sshd_config
  2. #PermitRootLogin yes 的行改为:

    PermitRootLogin no
  3. 重启 sshd 服务:

    ~]# systemctl restart sshd