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 所需的状态
显示当前生效的 SELinux 模式:
~]$
getenforce
如果需要,请在 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 强制策略。
默认情况下,web 控制台中的 SELinux enforcing 策略是 on,SELinux 在 enforcing 模式下运行。通过关闭 SELinux,您可以将 SELinux 切换为 permissive 模式。请注意,与 /etc/sysconfig/selinux 文件中的默认配置偏差会在下一次引导时自动恢复。
图 1.3. 在 web 控制台中管理 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 复制到服务器
生成公钥和私钥:
~]$
ssh-keygen
这两个密钥都存储在
~/.ssh/
目录中:-
~/.ssh/id_rsa.pub
- public key ~/.ssh/id_rsa
- private key公钥不需要是保密的。它用于验证私钥。私钥是机密。您可以选择使用密钥生成过程中指定的密语来保护私钥。使用密码短语时,身份验证更安全,但不再是免密码操作。您可以使用
ssh-agent
命令避免这种情况。在这种情况下,您将仅在会话开始时输入一次密码短语。有关ssh-agent
配置的详情请参考 第 12.2.4 节 “使用基于密钥的身份验证”。
-
将最新修改的公钥复制到您要登录到的远程机器中:
~]# ssh-copy-id USER@hostname
现在,您可以安全地输入系统,但不会输入密码。
1.6.3.3. 禁用 SSH Root 登录
要提高系统安全性,您可以禁用 root
用户的 SSH 访问,这是默认启用的。
有关此主题的更多信息,请参阅 Red Hat Enterprise Linux 7 安全指南。
禁用 SSH Root 登录
访问
/etc/ssh/sshd_config
文件:~]# vi /etc/ssh/sshd_config
将
#PermitRootLogin yes
的行改为:PermitRootLogin no
重启
sshd
服务:~]# systemctl restart sshd