你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南。
本文详细介绍适用于以下实现中的 Linux 来宾的配置设置:
- Linux 计算机应满足 Azure 计算安全基线的要求 Azure Policy 来宾配置定义
- 在 Microsoft Defender for Cloud 中,应修正计算机上安全配置中的漏洞
对于修正检查和建议,我们采取了最佳做法方法 - 但请始终确保命令将经过测试,并且不会在任何生产环境中盲目应用。 对于自动修正,我们已在受限公共预览版中发布新的自动修正功能,以便还可以使用“DeployIfNotExist”作测试此策略。
审核和修正策略的新版本由 azure-osconfig 我们的开源引擎提供支持-你可以阅读有关 重新声明的详细信息。
有关详细信息,请参阅 Azure Policy 来宾配置和 Azure 安全基准概述 (V2)。
CIS 映射基于发行版独立基准 v2.0.0 版本。
常规安全控件
| 名称 (CCEID) |
新名称 | 详细信息 | 修正检查 |
|---|---|---|---|
| 确保在 /home 分区上设置 nodev 选项。 (1.1.4) |
确保在 /home 分区上设置 nodev 选项 (CIS: L1 - 服务器 - 1.1.14) | 说明:攻击者可能在 /home 分区上装入特殊设备(例如,块或字符设备)。 | 编辑 /etc/fstab 文件,并将 nodev 添加到 /home 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /tmp 分区上设置 nodev 选项。 (1.1.5) |
确保在 /tmp 分区上设置 nodev 选项(CIS: L1 - 服务器 - 1.1.3) | 说明:攻击者可能在 /tmp 分区上装入特殊设备(例如,块或字符设备)。 | 编辑 /etc/fstab 文件,并将 nodev 添加到 /tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /var/tmp 分区上设置 nodev 选项。 (1.1.6) |
确保在 /var/tmp 分区上设置 nodev 选项(CIS: L1 - 服务器 - 1.1.8) | 说明:攻击者可能在 /var/tmp 分区上装入特殊设备(例如,块或字符设备)。 | 编辑 /etc/fstab 文件,并将 nodev 添加到 /var/tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /tmp 分区上设置 nosuid 选项。 (1.1.7) |
确保在 /tmp 分区上设置 nosuid 选项(CIS: L1 - 服务器 - 1.1.4) | 说明:由于 /tmp 文件系统仅用于临时文件存储,应设置此选项以确保用户无法在 /var/tmp 中创建 setuid 文件。 | 编辑 /etc/fstab 文件,并将 nosuid 添加到 /tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /var/tmp 分区上设置 nosuid 选项。 (1.1.8) |
确保对 /var/tmp 分区设置 nosuid 选项(CIS: L1 - 服务器 - 1.1.9) | 说明:由于 /var/tmp 文件系统仅用于临时文件存储,应设置此选项以确保用户无法在 /var/tmp 中创建 setuid 文件。 | 编辑 /etc/fstab 文件,并将 nosuid 添加到 /var/tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /var/tmp 分区上设置 noexec 选项。 (1.1.9) |
确保对 /var/tmp 分区设置 noexec 选项(CIS: L1 - 服务器 - 1.1.10) | 说明:由于 /var/tmp 文件系统仅用于临时文件存储,应设置此选项以确保用户无法从 /var/tmp 运行可执行的二进制文件。 |
编辑 /etc/fstab 文件,并将 noexec 添加到 /var/tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保在 /dev/shm 分区上设置 noexec 选项。 (1.1.16) |
确保对 /dev/shm 分区设置 noexec 选项(CIS: L1 - 服务器 - 1.1.17) | 说明:在文件系统上设置此选项可防止用户从共享内存中执行程序。 此控件阻止用户在系统上引入可能的恶意软件。 | 编辑 /dev/shm 文件,并将 noexec 添加到 /var/tmp 分区的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 禁用自动装载 (1.1.21) |
确保禁用自动装载(CIS: L1 - 服务器 - 1.1.22) | 说明:如果启用了自动装载,任何人都可以通过物理访问方式接入 USB 驱动器或光盘并在系统中使用其内容,即使这些人并不具有装载驱动盘或光盘的权限。 | 禁用 autofs 服务: systemctl disable autofs (systemd)或 chkconfig autofs off (sysv) |
| 确保已禁用 USB 存储设备的装载 (1.1.21.1) |
确保禁用 USB 存储设备的装载(CIS: L1 - 服务器 - 1.1.23) | 说明:删除对 USB 存储设备的支持可减小服务器的本地攻击面。 |
install usb-storage /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r usb-storage |
| 确保对核心转储进行限制。 (1.5.1) |
确保核心转储受到限制(CIS:L1 - 服务器 - 1.5.1) | 说明:对核心转储设置硬性限制可防止用户重写软变量。 如果需要核心转储,请考虑为用户组设置限制(见 limits.conf(5))。 此外,将 fs.suid_dumpable 变量设置为 0 可阻止 setuid 程序执行核心转储。 |
添加到* hard core 0/etc/security/limits.conf并设置fs.suid_dumpable = 0,/etc/sysctl.conf然后运行sysctl -p |
| 确保已禁用预链接。 (1.5.4) |
确保禁用预链接(CIS: L1 - 服务器 - 1.5.4) | 说明:预链接功能可能会干扰 AIDE 的操作,因为它会更改二进制文件。 如果有恶意用户能够入侵公用库(如 libc),预链接还可能会扩大系统的漏洞。 | 卸载预链接: yum remove prelink (RHEL/CentOS)或 apt remove prelink (Debian/Ubuntu) |
| 确保配置 /etc/motd 上的权限。 (1.7.1.4) |
确保已配置 /etc/motd 的权限(CIS: L1 - 服务器 - 1.7.1.4) | 说明:如果 /etc/motd 文件没有正确的所有权,可能会有未经授权的用户用不正确的或误导性信息修改该文件。 |
设置所有权和权限: chown root:root /etc/motd && chmod 644 /etc/motd |
| 确保配置 /etc/issue 上的权限。 (1.7.1.5) |
确保配置 /etc/issue 的权限(CIS: L1 - 服务器 - 1.7.1.5) | 说明:如果 /etc/issue 文件没有正确的所有权,可能会有未经授权的用户用不正确的或误导性信息修改该文件。 |
设置所有权和权限: chown root:root /etc/issue && chmod 644 /etc/issue |
| 确保配置 /etc/issue.net 上的权限。 (1.7.1.6) |
确保配置 /etc/issue.net 的权限(CIS: L1 - 服务器 - 1.7.1.6) | 说明:如果 /etc/issue.net 文件没有正确的所有权,可能会有未经授权的用户用不正确的或误导性信息修改该文件。 |
设置所有权和权限: chown root:root /etc/issue.net && chmod 644 /etc/issue.net |
| 应为所有可移动媒体启用 nodev 选项。 (2.1) |
确保所有可移动媒体都启用 nodev 选项(CIS: L1 - 服务器 - 1.1.18) | 说明:攻击者可能通过可移动媒体装入特殊设备(例如,块或字符设备) | 将 nodev 选项添加到 /etc/fstab 中的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 应为所有可移动媒体启用 noexec 选项。 (2.2) |
确保所有可移动媒体都启用了 noexec 选项(CIS: L1 - 服务器 - 1.1.20) | 说明:攻击者可能通过可移动媒体加载可执行文件 | 将 noexec 选项添加到 /etc/fstab 中的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 应为所有可移动媒体启用 nosuid 选项。 (2.3) |
确保所有可移动媒体都启用了 nosuid 选项(CIS: L1 - 服务器 - 1.1.19) | 说明:攻击者可能会通过可移动媒体加载通过提升的安全上下文运行的文件 | 将 nosuid 选项添加到 /etc/fstab 中的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保未安装 talk 客户端。 (2.3.3) |
确保未安装 Talk 客户端(CIS: L1 - 服务器 - 2.3.3) | 说明:该软件存在安全风险,因为它使用未加密的通信协议。 | 卸载演讲: yum remove talk (RHEL/CentOS)或 apt remove talk (Debian/Ubuntu) |
| 确保配置 /etc/hosts.allow 上的权限。 (3.4.4) |
确保配置 /etc/hosts.allow 的权限(CIS: L1 - 服务器 - 3.3.2 + 3.3.4) | 说明:应务必确保 /etc/hosts.allow 文件不会受到未经授权的写入访问,这一点非常重要。 尽管该文件默认受保护,但文件权限有可能发生意外更改或遭受恶意操作篡改。 |
设置所有权和权限: chown root:root /etc/hosts.allow && chmod 644 /etc/hosts.allow |
| 确保配置 /etc/hosts.deny 上的权限。 (3.4.5) |
确保配置了 /etc/hosts.deny 的权限(CIS: L1 - 服务器 - 3.3.3 + 3.3.5) | 说明:应务必确保 /etc/hosts.deny 文件不会受到未经授权的写入访问,这一点非常重要。 尽管该文件默认受保护,但文件权限有可能发生意外更改或遭受恶意操作篡改。 |
设置所有权和权限: chown root:root /etc/hosts.deny && chmod 644 /etc/hosts.deny |
| 确保启用默认的“拒绝防火墙”策略 (3.6.2) |
确保设置了默认拒绝防火墙策略(CIS: L1 - 服务器 - 3.5.2.1) | 说明:使用默认的接受策略时,防火墙将接受任何未显式拒绝的数据包。 使用默认的 DROP 策略可以比使用默认的 ALLOW 策略更轻松地保持防火墙的安全。 | 使用防火墙软件,根据具体情况将传入的、传出的和路由的流量的默认策略设置为 deny 或 reject |
| 应为所有 NFS 装载启用 nodev/nosuid 选项。 (5) |
确保所有 NFS 装载都启用了 nodev/nosuid 选项 | 说明:攻击者可能会通过远程文件系统加载通过提升的安全上下文运行的文件或特殊设备 | 将 nosuid 和 nodev 选项添加到 /etc/fstab 中的第四个字段(装载选项)。 有关详细信息,请参阅 fstab(5) 手册页。 |
| 确保配置了对 /etc/ssh/sshd_config 的权限。 (5.2.1) |
确保配置 /etc/ssh/sshd_config的权限(CIS: L1 - 服务器 - 5.2.1) | 说明:需要防止无权限的用户对 /etc/ssh/sshd_config 文件进行未经授权的更改。 |
设置所有权和权限: chown root:root /etc/ssh/sshd_config && chmod 600 /etc/ssh/sshd_config |
| 确保配置密码创建要求。 (5.3.1) |
确保配置密码创建要求(CIS:L1 - 服务器 - 5.3.1) | 说明:强密码可在系统遭受暴力破解方法的攻击时为其提供保护。 | 在以下/etc/pam.d/common-password环境中/etc/pam.d/system-auth配置 PAM 密码复杂性:password requisite pam_pwquality.so minlen=14 minclass=4 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 |
| 确保为失败的密码尝试配置锁定。 (5.3.2) |
确保配置了失败密码尝试的锁定(CIS: L1 - 服务器 - 5.3.2) | 说明:在连续 n 次不成功的登录尝试后锁定用户 ID 可缓解对系统的暴力破解密码攻击。 |
应视情况为 Ubuntu 和 Debian 添加 pam_tally 和 pam_deny 模块。 对于所有其他发行版,请参阅发行版的文档 |
| 禁止安装和使用不需要的文件系统 (cramfs) (6.1) |
确保禁用 cramfs 文件系统(CIS: L1 - 服务器 - 1.1.1.1) | 说明:攻击者可能会在 cramfs 中使用漏洞来提升权限 |
install cramfs /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r cramfs |
| 禁止安装和使用不需要的文件系统 (freevxfs) (6.2) |
确保禁用 freevxfs 文件系统(CIS: L1 - 服务器 - 1.1.1.2) | 说明:攻击者可能会在 freevxfs 中使用漏洞来提升权限 |
install freevxfs /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r freevxfs |
| 确保所有用户的主目录都存在 (6.2.7) |
确保所有用户的主目录存在(CIS: L1 - 服务器 - 6.2.7) | 说明:如果用户的主目录不存在或未分配,用户将被放置在卷根目录中。 此外,用户将无法写入任何文件或设置环境变量。 | 如果有用户的主目录不存在,应为这些用户创建主目录,并确保用户拥有其各自的主目录。 应删除未分配有主目录的用户,或视情况为其分配主目录。 |
| 确保用户拥有其主目录 (6.2.9) |
确保用户拥有其主目录(CIS: L1 - 服务器 - 6.2.9) | 说明:由于用户需要对存储在自己主目录中的文件负责,所以用户必须是其主目录的所有者。 | 对于有主目录的所有权不由为其指定的用户所有,要将其所有权更改为由为其指定的用户所有。 |
| 确保用户的点文件不可由组写入或不可在全局范围内写入。 (6.2.10) |
确保用户的点文件不可分组或世界可写(CIS: L1 - 服务器 - 6.2.10) | 描述:组可写或全局可写的用户配置文件可能导致恶意用户能够盗取或修改其他用户的数据或获取其他用户的系统权限。 | 在不通知用户社区的情况下对用户文件进行全局修改会导致意外中断和用户不满。 因此,建议制定监视策略来报告用户点文件权限,并确定站点策略修正操作。 |
| 确保无用户具有 .forward 文件 (6.2.11) |
确保没有用户具有 .forward 文件(CIS: L1 - 服务器 - 6.2.11) | 描述:使用 .forward 文件会造成安全风险,因为可能会无意中将敏感数据传输到组织之外。
.forward 文件还会带来其他风险,因为它可用于执行可导致非预期操作的命令。 |
在不通知用户社区的情况下对用户文件进行全局修改会导致意外中断和用户不满。 因此,建议创建监视策略,用于报告用户 .forward 文件和根据站点策略确定要执行的操作。 |
| 确保无用户具有 .netrc 文件 (6.2.12) |
确保没有用户具有 .netrc 文件(CIS: L1 - 服务器 - 6.2.12) | 说明:.netrc 文件会造成严重的安全风险,因为它以未加密的形式存储密码。 即使禁用了 FTP,用户帐户也可能从其他系统引入 .netrc 文件,这可能会给这些系统带来风险 |
在不通知用户社区的情况下对用户文件进行全局修改会导致意外中断和用户不满。 因此,建议创建监视策略,用于报告用户 .netrc 文件和根据站点策略确定要执行的操作。 |
| 确保无用户具有 .rhosts 文件 (6.2.14) |
确保没有用户具有 .rhosts 文件(CIS: L1 - 服务器 - 6.2.14) | 说明:仅当 .rhosts 文件中允许使用 /etc/pam.conf 支持时,此操作才有意义。 即使因 .rhosts 中禁用了支持而导致 /etc/pam.conf 文件无效,用户也可能会从其他系统中引入这些文件,并可能包含对前述其他系统的攻击者有用的信息。 |
在不通知用户社区的情况下对用户文件进行全局修改会导致意外中断和用户不满。 因此,建议创建监视策略,用于报告用户 .rhosts 文件和根据站点策略确定要执行的操作。 |
| 确保 /etc/passwd 中的所有组也均存在于 /etc/group 中 (6.2.15) |
确保 /etc/passwd 中的所有组都存在于 /etc/group(CIS: L1 - 服务器 - 6.2.15) | 说明:已在 /etc/passwd 文件中定义但在 /etc/group 文件中不存在的组会对系统安全造成威胁,因为组权限未得到正确管理。 | 对于 /etc/passwd 中定义的每个组,请确保在 /etc/group 中有一个相应的组 |
| 确保不存在重复的 UID (6.2.16) |
确保不存在重复的 UID (CIS: L1 - 服务器 - 6.2.16) | 说明:出于问责目的,必须为用户分配唯一的 UID,这也可确保提供适当的访问保护。 | 创建唯一的 UID,并查看共享 UID 所拥有的所有文件,以确定其所属的 UID。 |
| 确保不存在重复的 GID (6.2.17) |
确保不存在重复的 GID (CIS: L1 - 服务器 - 6.2.17) | 说明:出于问责目的,必须为组分配唯一的 GID,这也可确保提供适当的访问保护。 | 创建唯一的 GID,并查看共享 GID 所拥有的所有文件,以确定其所属的 GID。 |
| 确保不存在重复的用户名 (6.2.18) |
确保不存在重复的用户名(CIS: L1 - 服务器 - 6.2.18) | 描述:如果为用户分配了重复的用户名,该用户名会使用 /etc/passwd 中该用户名的第一个 UID 创建和访问文件。 例如,如果 "test4" 的 UID 为1000,而后续的 "test4" 条目的 UID 为 2000,则使用 "test4" 登录时将使用 UID 1000。 这会造成 UID 的有效共享,因此存在安全隐患。 |
为所有用户创建唯一的用户名。 只要用户具有唯一 UID,文件所有权会自动反映更改。 |
| 确保不存在重复的组 (6.2.19) |
确保不存在重复组 (CIS: L1 - 服务器 - 6.2.19) | 描述:如果为组分配了重复的组名,该用户名会使用 /etc/group 中该组的第一个 GID 创建和访问文件。 这会造成 GID 的有效共享,因此存在安全隐患。 |
为所有用户组创建唯一名称。 只要组具有唯一 GID,文组件所有权会自动反映更改。 |
| 确保卷影组为空 (6.2.20) |
确保阴影组为空(CIS: L1 - 服务器 - 6.2.20) | 说明:分配到卷影组的任何用户都将获得对 /etc/shadow 文件的读取访问权限。 如果攻击者可以获得对 /etc/shadow 文件的读取访问权限,他们可以轻松对经过哈希处理的密码运行密码破解程序,从而将密码破解。
/etc/shadow 文件中存储的其他安全信息(如过期信息)也可能被攻击者利用来破坏其他用户帐户。 |
删除卷影组中的所有用户 |
| 禁止安装和使用不需要的文件系统 (hfs) (6.3) |
确保禁用 hfs 文件系统(CIS: L1 - 服务器 - 1.1.1.4) | 说明:攻击者可能会在 hfs 中使用漏洞来提升权限 |
install hfs /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r hfs |
| 禁止安装和使用不需要的文件系统 (hfsplus) (6.4) |
确保禁用 hfsplus 文件系统(CIS: L1 - 服务器 - 1.1.1.5) | 说明:攻击者可能会在 hfs 中使用漏洞来提升权限 |
install hfsplus /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r hfsplus |
| 禁止安装和使用不需要的文件系统 (jffs2) (6.5) |
确保禁用 jffs2 文件系统(CIS: L1 - 服务器 - 1.1.1.3) | 说明:攻击者可能会在 jffs2 中使用漏洞来提升权限 |
install jffs2 /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r jffs2 |
| 只能从批准的源中编译内核。 (10) |
确保从已批准的源编译内核 | 说明:未经批准的源中的内核可能包含致使攻击者获得访问权限的漏洞或后门程序。 | 安装发行版供应商提供的内核。 |
| /etc/shadow 文件权限应设置为 0400 (11.1) |
确保已配置 /etc/shadow 上的文件权限(CIS: L1 - 服务器 - 6.1.3) | 说明:如果未正确保护 /etc/shadow,攻击者有可能从中检索到或操作经过哈希处理的密码。 | 设置所有权和权限: chown root:shadow /etc/shadow && chmod 640 /etc/shadow |
| /etc/shadow- 文件权限应设置为 0400 (11.2) |
确保已配置 /etc/shadow 上的文件权限(CIS: L1 - 服务器 - 6.1.7) | 说明:如果未正确保护 /etc/shadow-,攻击者有可能从中检索到或操作经过哈希处理的密码。 | 设置所有权和权限: chown root:shadow /etc/shadow- && chmod 640 /etc/shadow- |
| /etc/gshadow 文件权限应设置为 0400 (11.3) |
确保已配置 /etc/gshadow 上的文件权限(CIS: L1 - 服务器 - 6.1.5) | 说明:如果未正确保护此文件,攻击者就有可能加入安全组 | 设置所有权和权限: chown root:shadow /etc/gshadow && chmod 640 /etc/gshadow |
| /etc/gshadow- 文件权限应设置为 0400 (11.4) |
确保配置 /etc/gshadow 上的文件权限(CIS: L1 - 服务器 - 6.1.9) | 说明:如果未正确保护此文件,攻击者就有可能加入安全组 | 设置所有权和权限: chown root:shadow /etc/gshadow- && chmod 640 /etc/gshadow- |
| /etc/passwd 文件权限应设置为 0644 (12.1) |
确保已配置 /etc/passwd 上的文件权限(CIS: L1 - 服务器 - 6.1.2) | 说明:攻击者有可能修改 userID 和登录 shell | 设置所有权和权限: chown root:root /etc/passwd && chmod 644 /etc/passwd |
| /etc/group 文件权限应设置为 0644 (12.2) |
确保已配置 /etc/group 上的文件权限(CIS: L1 - 服务器 - 6.1.4) | 说明:攻击者有可能通过修改组成员资格提升权限 | 设置所有权和权限: chown root:root /etc/group && chmod 644 /etc/group |
| /etc/passwd- 文件权限应设置为 0600 (12.3) |
确保已配置 /etc/passwd 上的文件权限(CIS: L1 - 服务器 - 6.1.6) | 说明:如果未正确保护此文件,攻击者就有可能加入安全组 | 设置所有权和权限: chown root:root /etc/passwd- && chmod 600 /etc/passwd- |
| /etc/group- 文件权限应设置为 0644 (12.4) |
确保已配置 /etc/group 上的文件权限(CIS: L1 - 服务器 - 6.1.8) | 说明:攻击者有可能通过修改组成员资格提升权限 | 设置所有权和权限: chown root:root /etc/group- && chmod 644 /etc/group- |
| 应将通过 su 对根帐户的访问限制到 "root" 组 (21) |
确保通过 su 访问根帐户仅限于“root”组(CIS: L1 - 服务器 - 5.5) | 说明:如果 su 不限于 root 组中的用户,攻击者就可以通过密码猜测提升权限。 | 添加到auth required pam_wheel.so use_uid/etc/pam.d/su并确保轮组存在 |
| 应存在 "root" 组,且其中包含可通过 su 访问根帐户的所有成员 (22) |
确保存在“root”组,并包含可以起诉根的所有成员(CIS: L1 - 服务器 - 5.6) | 说明:如果 su 不限于 root 组中的用户,攻击者就可以通过密码猜测提升权限。 | 通过命令 "groupadd -g 0 root" 创建 root 组 |
| 所有帐户都应具有密码 (23.2) |
确保登录的所有用户帐户都设置了密码 | 说明:攻击者有可能登录未设密码的帐户并执行任意命令。 | 使用 passwd 命令为所有帐户设置密码 |
| 根帐户以外的帐户的唯一 UID 必须大于零 (0) (24) |
确保除根以外的所有用户帐户都具有大于零的唯一 UID (0) | 说明:如果根帐户以外的帐户的 uid 为 0,攻击者可能会入侵该帐户并获得 root 权限。 | 使用 "usermod -u" 为所有非根帐户分配唯一的非零 uid |
| 应启用虚拟内存区域的随机放置 (25) |
确保启用了虚拟内存区域的随机放置(CIS: L1 - 服务器 - 1.5.3) | 说明:攻击者可能会将可执行代码写入内存中的已知区域,导致权限提升 | 在文件 "/proc/sys/kernel/randomize_va_space" 中添加值 "1" 或 "2" |
| 应该启用对 XD/NX 处理器功能的内核支持 (26) |
确保已启用 XD/NX 处理器功能的内核支持(CIS: L1 - 服务器 - 1.5.2) | 说明:攻击者可能导致系统从内存中的数据区域执行代码,从而导致特权提升。 | 确认文件 "/proc/cpuinfo" 包含标志 "nx" |
| "." 不应出现在根的 $PATH 中 (27.1) |
确保“.”不会出现在根$PATH(CIS: L1 - 服务器 - 6.2.6) | 说明:攻击者有可能通过在根 $PATH 中放置恶意文件来提升权限 | 修改 /root/.profile 中的 "export PATH =" 行 |
| 用户主目录应使用 750 或更严格的模式 (28) |
确保对用户主目录的访问受到限制 | 说明:攻击者有可能从其他用户的主文件夹中检索到敏感信息。 | 将主目录权限设置为 750 个或多个限制性: chmod 750 /home/* |
| 应将 login.defs 中所有用户的默认 umask 设置为 077 (29) |
确保为所有用户配置默认 umask | 说明:攻击者有可能从其他用户拥有的文件中检索敏到感信息。 | 添加到UMASK 077/etc/login.defs和添加到和添加umask 077/etc/profile/etc/bashrc |
| 所有引导加载程序应启用密码保护。 (31) |
确保所有启动加载程序都启用了密码保护(CIS: L1 - 服务器 - 1.4.2) | 说明:具有物理访问权限的攻击者有可能修改引导加载程序选项,从而获得不受限的系统访问权限 | 在文件 "/boot/grub/grub.cfg" 中添加引导加载程序密码 |
| 确保配置了对引导加载程序配置的权限 (31.1) |
确保配置启动加载程序配置的权限(CIS: L1 - 服务器 - 1.4.1) | 说明:设置对 root 的读取和写入权限只会阻止非根用户查看或更改引导参数。 读取引导参数的非根用户有可能能够发现启动时的安全漏洞并利用它们。 | 设置引导加载程序配置权限: chown root:root /boot/grub*/grub.cfg && chmod 400 /boot/grub*/grub.cfg (调整引导加载程序的路径) |
| 确保为单用户模式执行身份验证。 (33) |
确保单用户模式需要身份验证(CIS: L1 - 服务器 - 1.4.3) | 说明:在单用户模式下要求身份验证,可防止未经授权的用户将系统重启为单一用户模式并在无凭据的情况下获取根权限。 | 运行以下命令为根用户设置密码:passwd root |
| 确保禁用数据包重定向发送。 (38.3) |
确保禁用数据包重定向发送(CIS:L1 - 服务器 - 3.1.2) | 描述:攻击者有可能使用被入侵的主机将无效的“ICMP 重定向”发送到其他路由器设备,试图以此破坏路由,让用户访问攻击者设置的系统而不是有效系统。 | 添加到 /etc/sysctl.conf: net.ipv4.conf.all.send_redirects = 0 ,然后 net.ipv4.conf.default.send_redirects = 0运行 sysctl -p |
| 应对所有接口禁用 ICMP 重定向发送。 (net.ipv4.conf.default.accept_redirects = 0) (38.4) |
确保不接受 ICMP 重定向 (CIS: L1 - 服务器 - 3.2.2) - 组合了多个规则 | 说明:攻击者有可能更改此系统的路由表,将流量重定向到备用目标 | 添加到 /etc/sysctl.conf: net.ipv4.conf.default.accept_redirects = 0 ,然后 net.ipv6.conf.default.accept_redirects = 0运行 sysctl -p |
| 应对所有接口禁用 ICMP 重定向发送。 (net.ipv4.conf.default.secure_redirects = 0) (38.5) |
确保不接受 ICMP 重定向 (CIS: L1 - 服务器 - 3.2.2) - 组合了多个规则 | 说明:攻击者有可能更改此系统的路由表,将流量重定向到备用目标 | 添加到 /etc/sysctl.conf: net.ipv4.conf.default.secure_redirects = 0,然后运行 sysctl -p |
| 应对所有接口禁用源路由数据包接收。 (net.ipv4.conf.all.accept_source_route = 0) (40.1) |
确保所有接口(CIS:L1 - 服务器 - 3.2.1)禁用接受源路由数据包 - IPv4 和 IPv6 规则组合 | 说明:攻击者有可能出于恶意目的对流量进行重定向。 | 运行 sysctl -w key=value 并将其设置为符合要求的值。 |
| 应对所有接口禁用源路由数据包接收。 (net.ipv6.conf.all.accept_source_route = 0) (40.2) |
确保所有接口(CIS:L1 - 服务器 - 3.2.1)禁用接受源路由数据包 - IPv4 和 IPv6 规则组合 | 说明:攻击者有可能出于恶意目的对流量进行重定向。 | 运行 sysctl -w key=value 并将其设置为符合要求的值。 |
| 应针对网络接口禁用接受源路由的数据包的默认设置。 (net.ipv4.conf.default.accept_source_route = 0) (42.1) |
确保为网络接口禁用接受源路由数据包的默认设置(CIS: L1 - 服务器 - 3.2.1) - 合并的 IPv4 和 IPv6 规则 | 说明:攻击者有可能出于恶意目的对流量进行重定向。 | 运行 sysctl -w key=value 并将其设置为符合要求的值。 |
| 应针对网络接口禁用接受源路由的数据包的默认设置。 (net.ipv6.conf.default.accept_source_route = 0) (42.2) |
确保为网络接口禁用接受源路由数据包的默认设置(CIS: L1 - 服务器 - 3.2.1) - 合并的 IPv4 和 IPv6 规则 | 说明:攻击者有可能出于恶意目的对流量进行重定向。 | 运行 sysctl -w key=value 并将其设置为符合要求的值。 |
| 应启用对虚假广播 ICMP 响应的忽略。 (net.ipv4.icmp_ignore_bogus_error_responses = 1) (43) |
确保启用了对广播的虚假 ICMP 响应(CIS: L1 - 服务器 - 3.2.6) | 说明:攻击者有可能执行 ICMP 攻击,从而导致 DoS | 添加到 /etc/sysctl.conf: net.ipv4.icmp_ignore_bogus_error_responses = 1,然后运行 sysctl -p |
| 应启用对发送到广播/多播地址的 ICMP 回显请求 (ping) 的忽略。 (net.ipv4.icmp_echo_ignore_broadcasts = 1) (44) |
确保启用发送到广播/多播地址的 ICMP 回显请求(pings)(CIS: L1 - 服务器 - 3.2.5) | 说明:攻击者有可能执行 ICMP 攻击,从而导致 DoS | 添加到 /etc/sysctl.conf: net.ipv4.icmp_echo_ignore_broadcasts = 1,然后运行 sysctl -p |
| 应为所有接口启用 martian 数据包(地址不合理的包)的日志记录。 (net.ipv4.conf.all.log_martians = 1) (45.1) |
确保所有接口都启用了火星数据包(那些地址不可能的数据包)的日志记录 | 说明:攻击者有可能从假冒地址发送流量且不被检测到 | 添加到 /etc/sysctl.conf: net.ipv4.conf.all.log_martians = 1 ,然后 net.ipv4.conf.default.log_martians = 1运行 sysctl -p |
| 应为所有接口启用按反向路径执行的源验证。 (net.ipv4.conf.all.rp_filter = 1) (46.1) |
确保所有接口都启用了反向路径的源验证(CIS: L1 - 服务器 - 3.2.7) - 组合了多个规则 | 说明:系统会接受来自不可路由的地址的流量。 | 添加到 /etc/sysctl.conf: net.ipv4.conf.all.rp_filter = 1 ,然后 net.ipv4.conf.default.rp_filter = 1运行 sysctl -p |
| 应为所有接口启用按反向路径执行的源验证。 (net.ipv4.conf.default.rp_filter = 1) (46.2) |
确保所有接口都启用了反向路径的源验证(CIS: L1 - 服务器 - 3.2.7) - 组合了多个规则 | 说明:系统会接受来自不可路由的地址的流量。 | 添加到 /etc/sysctl.conf: net.ipv4.conf.all.rp_filter = 1 ,然后 net.ipv4.conf.default.rp_filter = 1运行 sysctl -p |
| 应启用 TCP SYN Cookie。 (net.ipv4.tcp_syncookies = 1) (47) |
确保启用 TCP SYN Cookie (CIS: L1 - 服务器 - 3.2.8) | 说明:攻击者有可能通过 TCP 执行 DoS | 添加到 /etc/sysctl.conf: net.ipv4.tcp_syncookies = 1,然后运行 sysctl -p |
| 系统不应充当网络嗅探器。 (48) |
确保系统不充当网络嗅探器 | 说明:攻击者有可能使用混杂接口来探查网络流量 | 混杂模式通过 "/etc/network/interfaces" 或 "/etc/rc.local." 中的 "promisc" 条目启用。 检查这两个文件并删除此条目。 |
| 应禁用所有无线接口。 (49) |
确保所有无线接口都已禁用(CIS:L1 - 服务器 - 3.6) | 说明:攻击者有可能创建虚假 AP 来拦截传输的讯息。 | 确认 "/etc/network/interfaces" 中的所有无线接口都已禁用 |
| 应启用 IPv6 协议。 (50) |
确保已启用 IPv6 协议 | 说明:这对于新式网络上的通信是必需的。 | 打开/etc/sysctl.conf 并确认 "net.ipv6.conf.all.disable_ipv6" 和 "net.ipv6.conf.default.disable_ipv6" 设置为 0 |
| 确保禁用 DCCP。 (54) |
确保禁用 DCCP。 | 说明:如果不需要该协议,建议不要安装驱动程序以减小潜在攻击面。 |
install dccp /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r dccp |
| 确保禁用 SCTP。 (55) |
确保禁用 SCTP。 | 说明:如果不需要该协议,建议不要安装驱动程序以减小潜在攻击面。 |
install sctp /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r sctp |
| 禁用对 RDS 的支持。 (56) |
确保禁用对 RDS 的支持 | 说明:攻击者有可能利用 RDS 中的漏洞来入侵系统 |
install rds /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r rds |
| 确保禁用 TIPC。 (57) |
确保禁用 TIPC。 | 说明:如果不需要该协议,建议不要安装驱动程序以减小潜在攻击面。 |
install tipc /bin/true添加到以 .conf 结尾的文件/etc/modprobe.d/,然后运行modprobe -r tipc |
| 确保配置日志记录。 (60) |
确保配置日志记录 (CIS: L1 - 服务器 - 4.2.1.2 + 4.2.1.3) | 说明:大量与安全相关的重要信息通过 rsyslog 发送(例如,成功和失败的 su 尝试、失败的登录尝试、根登录尝试等)。 |
视情况适当配置 syslog、rsyslog 或 syslog-ng |
| 应安装 syslog、rsyslog 或 syslog-ng 包。 (61) |
确保已安装 syslog、rsyslog 或 syslog-ng 包(CIS: L1 - 服务器 - 4.2.1.1) | 说明:系统不会记录可靠性和安全性问题,这会妨碍得到正确的诊断结果。 | 安装 rsyslog: yum install rsyslog (RHEL/CentOS)或 apt install rsyslog (Debian/Ubuntu) |
| systemd-journald 服务应配置为保留日志消息 (61.1) |
确保 systemd-journald 服务保留日志消息(CIS: L1 - 服务器 - 4.2.2.3) | 说明:系统不会记录可靠性和安全性问题,这会妨碍得到正确的诊断结果。 | 创建 /var/log/journal,并确保 journald.conf 中的存储是自动的或者持久的 |
| 确保启用日志记录服务 (62) |
确保启用日志记录服务 | 说明:应务必具备记录节点上事件的功能。 | 启用 rsyslog 服务: systemctl enable rsyslog (systemd)或 chkconfig rsyslog on (sysv) |
| 所有 rsyslog 日志文件的文件权限应设置为 640 或 600。 (63) |
确保所有 rsyslog 日志文件的文件权限都已配置(CIS: L1 - 服务器 - 4.2.1.4) | 说明:攻击者有可能通过操纵日志来隐藏活动信息 | 在文件 "/etc/rsyslog.conf" 中添加一行 "$FileCreateMode 0640" |
| 确保对记录器配置文件进行限制。 (63.1) |
确保记录器配置文件受到限制(CIS: L1 - 服务器 - 4.2.1.4) | 说明:应务必确保日志文件存在,同时应具备正确的权限,以便确保敏感 syslog 数据得到存档和保护。 | 设置 rsyslog 配置权限: chown root:root /etc/rsyslog.conf && chmod 640 /etc/rsyslog.conf |
| 所有 rsyslog 日志文件的所有权应属于 adm 组。 (64) |
确保所有 rsyslog 日志文件都归 adm 组所有 | 说明:攻击者有可能通过操纵日志来隐藏活动信息 | 在文件 "/etc/rsyslog.conf" 中添加一行 "$FileGroup adm" |
| 所有 rsyslog 日志文件的所有权应属于 syslog 用户。 (65) |
确保所有 rsyslog 日志文件都归 syslog 用户所有(CIS: L1 - 服务器 - 4.2.1.4) | 说明:攻击者有可能通过操纵日志来隐藏活动信息 | 添加到$FileOwner syslog/etc/rsyslog.conf并重启 rsyslog 服务 |
| Rsyslog 不应接受远程消息。 (67) |
确保 rsyslog 不接受远程消息 | 说明:攻击者有可能将消息注入 syslog,从而导致 DoS 或分散对其他活动的关注 | 从文件 "/etc/rsyslog.conf" 中删除行 "$ModLoad imudp" 和 "$ModLoad imtcp" |
| 应启用 logrotate(syslog 轮换器)服务。 (68) |
确保启用了 logrotate (syslog 旋转器)服务(CIS: L1 - 服务器 - 4.3) | 说明:日志文件可能会无限制地增大,并占用所有磁盘空间 | 安装 logrotate 包,并确认 logrotate cron 条目为活动状态 (chmod 755 /etc/cron.daily/logrotate;chown root:root /etc/cron.daily/logrotate) |
| 应禁用 rlogin 服务。 (69) |
确保禁用 rlogin 服务 | 说明:攻击者有可能获得访问权限,并避开严格的身份验证要求 | 删除 inetd 服务。 |
| 除非需要,否则应禁用 inetd。 (inetd) (70.1) |
确保未安装 inetd (CIS: L1 - 服务器 - 2.1.10) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 inetd 服务中的漏洞获取访问权限 | 卸载 inetd 服务: yum remove inetd (RHEL/CentOS)或 apt remove inetd (Debian/Ubuntu) |
| 除非需要,否则应禁用 xinetd。 (xinetd) (70.2) |
确保未安装 xinetd (CIS: L1 - 服务器 - 2.1.10) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 inetd 服务中的漏洞获取访问权限 | 卸载 xinetd 服务: yum remove xinetd (RHEL/CentOS)或 apt remove xinetd (Debian/Ubuntu) |
| 仅当你的发行版需要且适当的情况下安装 inetd。 根据当前的强化标准进行保护。 (如果需要) (71.1) |
确保未安装 inetd (CIS: L1 - 服务器 - 2.1.10) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 inetd 服务中的漏洞获取访问权限 | 卸载 inetd 服务: yum remove inetd (RHEL/CentOS)或 apt remove inetd (Debian/Ubuntu) |
| 仅当你的发行版需要且适当的情况下安装 xinetd。 根据当前的强化标准进行保护。 (如果需要) (71.2) |
确保未安装 xinetd (CIS: L1 - 服务器 - 2.1.10) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 inetd 服务中的漏洞获取访问权限 | 卸载 xinetd 服务: yum remove xinetd (RHEL/CentOS)或 apt remove xinetd (Debian/Ubuntu) |
| 应禁用 telnet 服务。 (72) |
确保禁用 telnet 服务(CIS: L1 - 服务器 - 2.1.8) | 说明:攻击者有可能窃听或操纵未加密的 telnet 会话 | 删除或注释掉文件 "/etc/inetd.conf" 中的 telnet 条目 |
| 应卸载所有 telnetd 包。 (73) |
确保所有 telnetd 包都已卸载 | 说明:攻击者有可能窃听或操纵未加密的 telnet 会话 | 卸载任何 telnetd 包 |
| 应禁用 rcp/rsh 服务。 (74) |
确保禁用 rcp/rsh 服务 | 说明:攻击者有可能窃听或操纵未加密的会话 | 删除或注释掉文件 "/etc/inetd.conf" 中的 shell 条目 |
| 应卸载 rsh-server 包。 (77) |
确保卸载 rsh-server 包(CIS: L1 - 服务器 - 2.1.6) | 说明:攻击者有可能窃听或操纵未加密的 rsh 会话 | 卸载 rsh-server 包: yum remove rsh-server (RHEL/CentOS)或 apt remove rsh-server (Debian/Ubuntu) |
| 应禁用 ypbind 服务。 (78) |
确保禁用 ypbind 服务且未安装 nis 包 - 服务和包规则组合在一起 | 说明:攻击者有可能从 ypbind 服务中检索到敏感信息 | 卸载 nis 包: yum remove nis (RHEL/CentOS)或 apt remove nis (Debian/Ubuntu) |
| 应卸载 nis 包。 (79) |
确保禁用 ypbind 服务且未安装 nis 包 - 服务和包规则组合在一起 | 说明:攻击者有可能从 NIS 服务中检索到敏感信息 | 卸载 nis 包: yum remove nis (RHEL/CentOS)或 apt remove nis (Debian/Ubuntu) |
| 应禁用 tftp 服务。 (80) |
确保禁用 tftp 服务(CIS: L1 - 服务器 - 2.1.9) | 说明:攻击者有可能窃听或操纵未加密的会话 | 从文件 "/etc/inetd.conf" 中删除 tftp 条目 |
| 应卸载 tftpd 包。 (81) |
确保未安装 tftpd 包(CIS: L1 - 服务器 - 2.1.9) | 说明:攻击者有可能窃听或操纵未加密的会话 | 卸载 tftpd 包: yum remove tftpd (RHEL/CentOS)或 apt remove tftpd (Debian/Ubuntu) |
| 应卸载 readahead-fedora 包。 (82) |
确保未安装 readahead-fedora 包 | 说明:该包不会产生实质性的暴露风险,也没有带来实质性的优点。 | 卸载 readahead-fedora 包: yum remove readahead-fedora (RHEL/CentOS)或 apt remove readahead-fedora (Debian/Ubuntu) |
| 应禁用蓝牙/hidd 服务。 (84) |
确保未安装蓝牙包 | 说明:攻击者有可能拦截或操纵无线通讯。 | 卸载蓝牙包: yum remove bluetooth (RHEL/CentOS)或 apt remove bluetooth (Debian/Ubuntu) |
| 应禁用 isdn 服务。 (86) |
确保已禁用 isdn 服务,并且未安装 isdnutils-base 包 - 服务和包规则组合在一起 | 说明:攻击者有可能使用调制解调器进行未经授权的访问 | 卸载 isdnutils-base 包: yum remove isdnutils-base (RHEL/CentOS)或 apt remove isdnutils-base (Debian/Ubuntu) |
| 应卸载 isdnutils-base 包。 (87) |
确保已禁用 isdn 服务,并且未安装 isdnutils-base 包 - 服务和包规则组合在一起 | 说明:攻击者有可能使用调制解调器进行未经授权的访问 | 卸载 isdnutils-base 包: yum remove isdnutils-base (RHEL/CentOS)或 apt remove isdnutils-base (Debian/Ubuntu) |
| 应禁用 kdump 服务。 (88) |
确保已禁用 kdump 服务,并且未安装 kdump-tools 包 | 说明:攻击者有可能分析之前发生的系统崩溃以检索敏感信息 | 卸载 kdump-tools 包: yum remove kdump-tools (RHEL/CentOS)或 apt remove kdump-tools (Debian/Ubuntu) |
| 应禁用 Zeroconf 网络。 (89) |
确保禁用 zeroconf 网络 | 说明:攻击者有可能滥用此网络来获取有关网络系统的信息或利用其信任模型的缺陷来欺骗 DNS 请求 | RHEL/CentOS:添加到 NOZEROCONF=yes/etc/sysconfig/network。 Debian/Ubuntu:从中删除 ipv4ll 条目 /etc/network/interfaces |
| 应启用 crond 服务。 (90) |
确保已启用 cron 服务(CIS: L1 - 服务器 - 5.1.1) | 说明:几乎所有系统在常规维护任务中都需要用到 Cron | 安装 cron 包: yum install cron (RHEL/CentOS)或 apt install cron (Debian/Ubuntu),并启用服务 |
| /etc/anacrontab 的文件权限应设置为 root:root 600。 (91) |
确保已配置 /etc/anacrontab 上的文件权限 | 说明:攻击者有可能操纵此文件来阻止计划的任务或执行恶意任务 | 设置所有权和权限: chown root:root /etc/anacrontab && chmod 600 /etc/anacrontab |
| 确保配置 /etc/cron.d 上的权限。 (93) |
确保配置了 /etc/cron.d 的权限(CIS: L1 - 服务器 - 5.1.7) | 说明:向非特权用户授予此目录的写入权限可能会导致他们能够获取未经授权的提升权限。 授予对此目录的读取访问权限,有可能让非特权用户发现如何获取提升的权限或规避审核控制。 | 设置所有权和权限: chown root:root /etc/cron.d && chmod 700 /etc/cron.d |
| 确保配置 /etc/cron.daily 上的权限。 (94) |
确保配置 /etc/cron.daily 的权限(CIS: L1 - 服务器 - 5.1.4) | 说明:向非特权用户授予此目录的写入权限可能会导致他们能够获取未经授权的提升权限。 授予对此目录的读取访问权限,有可能让非特权用户发现如何获取提升的权限或规避审核控制。 | 设置所有权和权限: chown root:root /etc/cron.daily && chmod 700 /etc/cron.daily |
| 确保配置 /etc/cron.hourly 上的权限。 (95) |
确保配置 /etc/cron.hourly 的权限(CIS: L1 - 服务器 - 5.1.3) | 说明:向非特权用户授予此目录的写入权限可能会导致他们能够获取未经授权的提升权限。 授予对此目录的读取访问权限,有可能让非特权用户发现如何获取提升的权限或规避审核控制。 | 设置所有权和权限: chown root:root /etc/cron.hourly && chmod 700 /etc/cron.hourly |
| 确保配置 /etc/cron.monthly 上的权限。 (96) |
确保配置 /etc/cron.monthly 的权限(CIS: L1 - 服务器 - 5.1.6) | 说明:向非特权用户授予此目录的写入权限可能会导致他们能够获取未经授权的提升权限。 授予对此目录的读取访问权限,有可能让非特权用户发现如何获取提升的权限或规避审核控制。 | 设置所有权和权限: chown root:root /etc/cron.monthly && chmod 700 /etc/cron.monthly |
| 确保配置 /etc/cron.weekly 上的权限。 (97) |
确保已配置 /etc/cron.weekly 的权限(CIS: L1 - 服务器 - 5.1.5) | 说明:向非特权用户授予此目录的写入权限可能会导致他们能够获取未经授权的提升权限。 授予对此目录的读取访问权限,有可能让非特权用户发现如何获取提升的权限或规避审核控制。 | 设置所有权和权限: chown root:root /etc/cron.weekly && chmod 700 /etc/cron.weekly |
| 确保 at/cron 仅限于授权用户 (98) |
确保 at/cron 仅限于授权用户(CIS: L1 - 服务器 - 5.1.8) | 描述:在许多系统上,只有系统管理员有权计划 cron 作业。 可使用 cron.allow 文件来控制谁可运行 cron 作业,从而强制实施此策略。 管理允许列表比管理拒绝列表更容易。 使用拒绝列表时,将用户 ID 添加到系统中后,有可能会忘记将其添加到拒绝文件中。 |
使用授权用户创建 /etc/cron.allow 和 /etc/at.allow 删除 /etc/cron.deny 和 /etc/at.deny |
| 必须按最佳做法对 SSH 进行配置和管理。 -“/etc/ssh/sshd_config Protocol = 2” (106.1) |
确保配置 SSH 协议 (CIS: L1 - 服务器 - 5.2.4) | 说明:攻击者可能会利用较早版本的 SSH 协议中的漏洞来获取访问权限 | 添加到 Protocol 2/etc/ssh/sshd_config sshd 服务并重启 |
| 必须按最佳做法对 SSH 进行配置和管理。 -“/etc/ssh/sshd_config IgnoreRhosts = yes” (106.3) |
确保配置 SSH IgnoreRhosts (CIS: L1 - 服务器 - 5.2.8) | 说明:攻击者可能会利用 Rhosts 协议中的漏洞来获取访问权限 | 添加到 IgnoreRhosts yes/etc/ssh/sshd_config sshd 服务并重启 |
| 确保将 SSH LogLevel 设置为 INFO (106.5) |
确保配置 SSH LogLevel (CIS: L1 - 服务器 - 5.2.5) | 描述:SSH 提供若干个日志记录级别,其详细程度各不相同。
DEBUG 特别 建议不要 严格调试 SSH 通信,因为它提供了如此多的数据,因此很难识别重要的安全信息。
INFO 级别是仅记录 SSH 用户的登录活动的基本级别。 在许多情况下(例如,事件响应),确定特定用户在系统上处于活动状态的时间很重要。 注销记录可以消除那些已断开连接的用户,这有助于缩小范围。 |
编辑 /etc/ssh/sshd_config 文件,按如下所示设置参数: LogLevel INFO |
| 确保将 SSH MaxAuthTries 设置为 6 或更小的数字 (106.7) |
确保配置 SSH MaxAuthTries (CIS: L1 - 服务器 - 5.2.7) | 说明:将 MaxAuthTries 参数设置为较小值可最大程度减小对 SSH 服务器的暴力攻击成功的风险。 尽管建议设置为 4,但应根据站点策略设置数值。 |
确保将 SSH MaxAuthTries 设置为 6 或更小。编辑 /etc/ssh/sshd_config 文件,按如下所示设置参数: MaxAuthTries 6 |
| 确保限制 SSH 访问权限 (106.11) |
确保已配置允许的 SSH 访问用户(CIS: L1 - 服务器 - 5.2.18) | 说明:限制哪些用户可以通过 SSH 远程访问系统可帮助确保只有经过授权的用户才能访问系统。 | 确保 SSH 访问权限受到限制。编辑 /etc/ssh/sshd_config 文件,按如下所示设置一个或多个参数: AllowUsers AllowGroups DenyUsers DenyGroups |
| 应禁用通过 ssh 服务器实现的 rsh 命令仿真。 -“/etc/ssh/sshd_config RhostsRSAAuthentication = no” (107) |
N/A | 说明:攻击者可能会利用 RHosts 协议中的漏洞来获取访问权限 | 添加到 RhostsRSAAuthentication no/etc/ssh/sshd_config sshd 服务并重启 |
| 应禁用 SSH 基于主机的身份验证。 -“/etc/ssh/sshd_config HostbasedAuthentication = no” (108) |
确保配置 SSH HostBasedAuthentication (CIS: L1 - 服务器 - 5.2.9) | 说明:攻击者可能会利用基于主机的身份验证来获取被入侵主机的访问权限 | 添加到 HostbasedAuthentication no/etc/ssh/sshd_config sshd 服务并重启 |
| 应禁用通过 SSH 进行的根登录。 -“/etc/ssh/sshd_config PermitRootLogin = no” (109) |
确保配置 SSH PermitRootLogin (CIS: L1 - 服务器 - 5.2.10) | 说明:攻击者可能暴力破解根密码或通过直接作为根进行登录来隐藏其命令历史记录 | 添加到 PermitRootLogin no/etc/ssh/sshd_config sshd 服务并重启 |
| 应禁用使用空密码的帐户的远程连接。 -“/etc/ssh/sshd_config PermitEmptyPasswords = no” (110) |
确保配置 SSH PermitEmptyPasswords (CIS: L1 - 服务器 - 5.2.11) | 说明:攻击者可以通过密码猜测获取访问权限 | 添加到 PermitEmptyPasswords no/etc/ssh/sshd_config sshd 服务并重启 |
| 确保配置了 SSH 空闲超时间隔。 (110.1) |
确保配置 SSH ClientAliveCountMax | 说明:如果不为连接设置关联的超时值,就可能导致许未经授权的用户能够访问其他用户的 ssh 会话。 设置超时值至少可以降低发生这种情况的风险。 尽管建议设置为 300 秒(5 分钟),但应根据站点策略设置此超时值。 建议将 ClientAliveCountMax 设置为 0。 在这种情况下,客户端会话将在空闲 5 分钟后终止,不会发送任何连接状态下的消息。 |
编辑 /etc/ssh/sshd_config 文件,以根据策略设置参数 |
| 确保将 SSH LoginGraceTime 设置为一分钟或更短的时间。 (110.2) |
确保配置 SSH LoginGraceTime (CIS: L1 - 服务器 - 5.2.17) | 说明:将 LoginGraceTime 参数设置为较小值可最大程度减小对 SSH 服务器的暴力攻击成功的风险。 它还会限制未经过身份验证的并发连接数,尽管建议设置为 60 秒(1 分钟),但仍应基于站点策略来设置。 |
添加到 LoginGraceTime 60/etc/ssh/sshd_config sshd 服务并重启 |
| 确保只使用批准的 MAC 算法 (110.3) |
确保仅使用已批准的 MAC 算法(CIS: L1 - 服务器 - 5.2.14) | 描述:MD5 和 96 位 MAC 算法被视为弱算法,且已有证据显示这些算法被用于 SSH 降级攻击的情况有所增加。 随着算力的增加,弱算法因被视为可利用的攻击弱点而持续受到广泛关注。 阻断算法的攻击者可能会利用 MiTM 位置来解密 SSH 隧道并捕获凭据和信息 | 将批准的 MAC 添加到 /etc/ssh/sshd_config: MACs hmac-sha2-512,hmac-sha2-256 并重启 sshd 服务 |
| 确保正确配置远程登录警告横幅。 (111) |
确保正确配置远程登录警告横幅(CIS: L1 - 服务器 - 1.7.1.3) | 说明:警告消息让试图登录到系统的用户了解到他们的有关系统的法律状态,其中必须包含拥有该系统的组织的名称和任何已实施的监视策略。 在登录横幅中显示操作系统和修补程序级别的信息也会产生副作用,即向对某个系统有特定攻击目的的攻击者提供详细的系统信息。 授权用户可以在登录后通过运行 uname -a 命令轻松获取这些信息。 |
从中删除系统信息转义序列(\m、、\r\s、\v)/etc/issue.net并将其替换为相应的警告文本 |
| 确保正确配置本地登录警告横幅。 (111.1) |
确保正确配置本地登录警告横幅(CIS: L1 - 服务器 - 1.7.1.2) | 说明:警告消息让试图登录到系统的用户了解到他们的有关系统的法律状态,其中必须包含拥有该系统的组织的名称和任何已实施的监视策略。 在登录横幅中显示操作系统和修补程序级别的信息也会产生副作用,即向对某个系统有特定攻击目的的攻击者提供详细的系统信息。 授权用户可以在登录后通过运行 uname -a 命令轻松获取这些信息。 |
从中删除系统信息转义序列(\m、、\r\s、\v)/etc/issue并将其替换为相应的警告文本 |
| 应启用 SSH 警告横幅。 - “/etc/ssh/sshd_config Banner = /etc/issue.net” (111.2) |
确保配置 SSH 警告横幅(CIS: L1 - 服务器 - 5.2.19) | 描述:不会向用户发出警告,指示其在系统上的操作受到监视 | 添加到 Banner /etc/issue.net/etc/ssh/sshd_config sshd 服务并重启 |
| 不允许用户为 SSH 设置环境选项。 (112) |
确保配置 SSH PermitUserEnvironment (CIS: L1 - 服务器 - 5.2.12) | 说明:攻击者可能会绕过 SSH 上的某些访问限制 | 从文件“/etc/ssh/sshd_config”中删除行“PermitUserEnvironment yes” |
| 应为 SSH 使用合适的密码。 (密码 aes128-ctr,aes192-ctr,aes256-ctr) (113) |
确保将适当的密码用于 SSH(CIS: L1 - 服务器 - 5.2.13) | 说明:攻击者可能会入侵安全保护较弱的 SSH 连接 | 添加到 Ciphers aes128-ctr,aes192-ctr,aes256-ctr/etc/ssh/sshd_config sshd 服务并重启 |
| 应禁用 avahi-daemon 服务。 (114) |
确保禁用 avahi-daemon 服务(CIS: L1 - 服务器 - 2.2.3) | 说明:攻击者有可能利用 avahi-daemon 中的漏洞来获取访问权限 | 禁用 avahi 守护程序服务: systemctl disable avahi-daemon (systemd)或 chkconfig avahi-daemon off (sysv) |
| 应禁用 cups 服务。 (115) |
确保禁用杯子服务(CIS: L1 - 服务器 - 2.2.4) | 说明:攻击者有可能利用 cup 服务中的缺陷来提升权限 | 禁用杯子服务: systemctl disable cups (systemd)或 chkconfig cups off (sysv) |
| 应禁用 isc-dhcpd 服务。 (116) |
确保未安装 isc-dhcp-server 包(CIS: L1 - 服务器 - 2.2.5) - 服务和包规则组合在一起 | 说明:攻击者有可能使用 dhcpd 向客户端提供错误信息,从而干扰正常运行。 | 删除 isc-dhcp-server 包: yum remove dhcp-server (RHEL/CentOS)或 apt remove isc-dhcp-server (Debian/Ubuntu) |
| 应卸载 isc-dhcp-server 包。 (117) |
确保未安装 isc-dhcp-server 包(CIS: L1 - 服务器 - 2.2.5) - 服务和包规则组合在一起 | 说明:攻击者有可能使用 dhcpd 向客户端提供错误信息,从而干扰正常运行。 | 删除 isc-dhcp-server 包: yum remove dhcp-server (RHEL/CentOS)或 apt remove isc-dhcp-server (Debian/Ubuntu) |
| 应卸载 sendmail 包。 (120) |
确保未安装 sendmail 包 | 说明:攻击者有可能使用此系统向其他用户发送包含恶意内容的电子邮件 | 卸载 sendmail 包: yum remove sendmail (RHEL/CentOS)或 apt remove sendmail (Debian/Ubuntu) |
| 应卸载 postfix 包。 (121) |
确保未安装后缀包 | 说明:攻击者有可能使用此系统向其他用户发送包含恶意内容的电子邮件 | 卸载后缀包: yum remove postfix (RHEL/CentOS)或 apt remove postfix (Debian/Ubuntu) |
| 应视情况禁用 Postfix 网络侦听。 (122) |
确保禁用后缀网络侦听 | 说明:攻击者有可能使用此系统向其他用户发送包含恶意内容的电子邮件 | 在文件 "/etc/postfix/main.cf" 中添加一行 "inet_interfaces localhost" |
| 应禁用 ldap 服务。 (124) |
确保 ldap 服务已禁用且未安装 sldapd 包(CIS: L1 - 服务器 - 2.2.6) | 说明:攻击者有可能操纵此主机上的 LDAP 服务,将假数据分发给 LDAP 客户端 | 卸载 Slapd 包: yum remove openldap-servers (RHEL/CentOS)或 apt remove slapd (Debian/Ubuntu) |
| 应禁用 rpcgssd 服务。 (126) |
确保已禁用 rpcgssd 服务 | 说明:攻击者有可能利用 rpcgssd/nfs 中的缺陷获取访问权限 | 禁用 rpcgssd 服务: systemctl disable rpc-gssd (systemd)或 chkconfig rpc-gssd off (sysv) |
| 应禁用 rpcidmapd 服务。 (127) |
确保禁用 rpcidmapd 服务 | 说明:攻击者有可能利用 rpc.idmapd/nfs 中的缺陷获取访问权限 | 禁用 rpcidmapd 服务: systemctl disable rpc-idmapd (systemd)或 chkconfig rpc-idmapd off (sysv) |
| 应禁用 portmap 服务。 (129.1) |
确保已禁用 portmap 服务 | 说明:攻击者有可能利用 portmap 中的缺陷获取访问权限 | 禁用 rpcbind 服务: systemctl disable rpcbind (systemd)或 chkconfig rpcbind off (sysv) |
| 应禁用网络文件系统 (NFS) 服务。 (129.2) |
确保禁用网络文件系统 (NFS) 服务 (CIS: L1 - 服务器 - 2.2.7 - 部分) | 说明:攻击者可以使用 nfs 装载共享和执行/复制文件。 | 禁用 nfs 服务: systemctl disable nfs-server (systemd)或 chkconfig nfs off (sysv) |
| 应禁用 rpcsvcgssd 服务。 (130) |
确保禁用 rpcsvcgssd 服务 | 说明:攻击者有可能利用 rpcsvcgssd 中的缺陷获取访问权限 | 从文件 "/etc/inetd.conf" 中删除行 "NEED_SVCGSSD = yes" |
| 应禁用 named 服务。 (131) |
确保已禁用命名服务且未安装 bind9 包(CIS: L1 - 服务器 - 2.2.8) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 DNS 服务将假数据分发给客户端 | 卸载绑定包: yum remove bind (RHEL/CentOS)或 apt remove bind9 (Debian/Ubuntu) |
| 应卸载 bind 包。 (132) |
确保已禁用命名服务且未安装 bind9 包(CIS: L1 - 服务器 - 2.2.8) - 服务和包规则组合在一起 | 说明:攻击者有可能利用 DNS 服务将假数据分发给客户端 | 卸载绑定包: yum remove bind (RHEL/CentOS)或 apt remove bind9 (Debian/Ubuntu) |
| 应禁用 dovecot 服务。 (137) |
确保 dovecot 服务已禁用且未安装 dovecot 核心包 - 服务和包规则组合在一起 | 说明:系统有可能充当 IMAP/POP3 服务器 | 卸载 dovecot 包: yum remove dovecot (RHEL/CentOS)或 apt remove dovecot-core (Debian/Ubuntu) |
| 应卸载 dovecot 包。 (138) |
确保 dovecot 服务已禁用且未安装 dovecot 核心包 - 服务和包规则组合在一起 | 说明:系统有可能充当 IMAP/POP3 服务器 | 卸载 dovecot 包: yum remove dovecot (RHEL/CentOS)或 apt remove dovecot-core (Debian/Ubuntu) |
确保 /etc/passwd 中不存在旧的 + 条目(156.1) |
确保 /etc/passwd 中不存在旧版 + 条目(CIS: L1 - 服务器 - 6.2.2) | 说明:攻击者有可能使用无密码的用户名 "+" 来获取访问权限 | 删除 /etc/passwd 中以 "+:'" 开头的所有条目 |
确保 /etc/shadow 中不存在旧的 + 条目(156.2) |
确保 /etc/shadow 中不存在旧版 + 条目(CIS: L1 - 服务器 - 6.2.3) | 说明:攻击者有可能使用无密码的用户名 "+" 来获取访问权限 | 删除 /etc/shadow 中以 "+:'" 开头的所有条目 |
确保 /etc/group 中不存在旧的 + 条目(156.3) |
确保 /etc/group 中不存在旧版 + 条目(CIS: L1 - 服务器 - 6.2.4) | 说明:攻击者有可能使用无密码的用户名 "+" 来获取访问权限 | 删除 /etc/group 中以 "+:'" 开头的所有条目 |
| 确保密码在 365 天或更短的时间内过期。 (157.1) |
确保配置密码过期(CIS: L1 - 服务器 - 5.4.1.1) | 说明:缩短密码的最长期限还会降低攻击者利用泄露的凭据或通过在线暴力攻击成功破解凭据的机会时效。 | 设置PASS_MAX_DAYS 365/etc/login.defs |
| 确保将密码过期警告天数设为 7 或更多。 (157.2) |
确保配置密码过期警告日期(CIS:L1 - 服务器 - 5.4.1.3) | 说明:提前发送警告,指示密码将过期,为用户留出想出新安全密码的时间。 用户在时间仓促的情况下有可能选择简单的密码,或将其记录在有泄露风险的位置。 | 设置PASS_WARN_AGE 7/etc/login.defs |
| 请确保对密码重用进行限制。 (157.5) |
确保密码重用有限(CIS: L1 - 服务器 - 5.3.3) | 描述:强制让用户无法重复使用过去的 5 个密码,可减小攻击者猜到密码的可能性。 |
remember=5添加到 PAM 密码模块/etc/pam.d/common-password |
| 确保密码哈希算法为 SHA-512 (157.11) |
确保密码哈希算法为 SHA-512(CIS: L1 - 服务器 - 5.3.4) | 说明:SHA-512 算法提供比 MD5 更强的哈希,可通过增加攻击者成功破解密码的难度,为系统提供额外保护。 注意:这些更改仅适用于在本地系统上配置的帐户。 | 将密码哈希算法设置为 sha512。 许多分发都提供了用于更新 PAM 配置的工具,可参阅相关文档了解详细信息。 如果未提供任何工具,请编辑相应的 /etc/pam.d/ 配置文件,在其中添加行 pam_unix.so,或进行修改,使其包含 sha512 选项:password sufficient pam_unix.so sha512 |
| 确保密码更改间隔时间最短为 7 或更多。 (157.12) |
确保配置密码更改之间的最短天数(CIS: L1 - 服务器 - 5.4.1.2) | 说明:通过限制密码更改的频率,管理员可防止用户为了绕过密码重用控制而重复更改其密码。 |
PASS_MIN_DAYS 7为现有用户设置/etc/login.defs并运行chage --mindays 7 <username> |
| 确保所有用户的上次密码更改日期都是过去的日期 (157.14) |
确保配置非活动密码锁定期(CIS: L1 - 服务器 - 5.4.1.4) | 描述:如果某个用户记录的密码更改日期是未来的日期,他们便能绕过设置的任何密码过期。 | 确保非活动密码锁定时间为 30 天或更短。可运行以下命令,将默认密码非活动期设置为 30天:# useradd -D -f 30 修改所有用户的用户参数,将其密码设置为与 # chage --inactive 30 匹配 |
| 确保系统帐户不是登录帐户 (157.15) |
确保所有系统帐户都是非登录帐户(CIS: L1 - 服务器 - 5.4.2) | 说明:应务必避免将非普通用户使用的帐户用于提供交互式 shell。 默认情况下,Ubuntu 将这些帐户的密码字段设置为无效字符串,但也建议将密码文件中的 shell 字段设置为 /usr/sbin/nologin。 这可避免将帐户用于运行任何命令。 |
将审核脚本返回的任何帐户的 shell 设置为 /sbin/nologin |
| 确保根帐户的默认组为 GID 0 (157.16) |
确保根帐户的默认组为 GID 0(CIS:L1 - 服务器 - 5.4.3) | 说明:对帐户使用 GID 0 root 有助于防止 root非特权用户意外访问拥有的文件。 |
运行以下命令将 root 用户默认组设置为 GID 0:# usermod -g 0 root |
| 确保根账号是唯一的 UID 0 帐户 (157.18) |
确保根是唯一的 UID 0 帐户(CIS: L1 - 服务器 - 6.2.5) | 说明:此访问权限只能限制为默认 root 帐户,并且只能从系统控制台访问。 必须使用批准的机制通过非特权帐户来进行管理性访问。 |
删除 root 以外的具有 UID 0 的任何用户,或为其分配新的 UID(如果适用)。 |
| 删除不必要的帐户 (159) |
确保删除不必要的帐户 | 说明:出于符合性目的 | 删除不必要的帐户 |
| 确保启用 auditd 服务 (162) |
确保已安装已审核的包 | 说明:系统事件的捕获为系统管理员提供了信息,使他们能够确定是否发生了对其系统的未经授权的访问。 | 安装 audit 包 (systemctl enable auditd) |
| 运行 AuditD 服务 (163) |
确保审核的服务正在运行 | 说明:系统事件的捕获为系统管理员提供了信息,使他们能够确定是否发生了对其系统的未经授权的访问。 | 运行 AuditD 服务 (systemctl start auditd) |
| 确保启用 SNMP 服务器 (179) |
确保未启用 SNMP 服务器(CIS: L1 - 服务器 - 2.2.14) | 说明:SNMP 服务器可以使用 SNMP v1 进行通信,此过程以明文传输数据,无需进行身份验证即可执行命令。 除非绝对必要,否则建议不要使用 SNMP 服务。 如果需要使用 SNMP,应将服务器配置为不允许 SNMP v1。 | 运行以下命令之一以禁用 snmpd:# chkconfig snmpd off、# systemctl disable snmpd、# update-rc.d snmpd disable |
| 确保未启用 rsync 服务 (181) |
确保未启用 rsync 服务(CIS: L1 - 服务器 - 2.2.16) | 说明:rsyncd 服务存在安全风险,因为它使用未加密的通信协议。 |
禁用 rsync 服务: systemctl disable rsyncd (systemd)或 chkconfig rsyncd off (sysv) |
| 确保未启用 NIS 服务器 (182) |
确保 NIS 服务器未启用(CIS: L1 - 服务器 - 2.2.17) | 说明:NIS 服务本质上是一种不安全的系统,该系统很容易受到 DOS 攻击和缓冲区溢出的影响,且对 NIS 映射查询的身份验证的效果也不佳。 通常使用轻型目录访问协议 (LDAP) 这类协议来替代 NIS。 建议禁用该服务,并使用更安全的服务 | 运行以下命令之一以禁用 ypserv:# chkconfig ypserv off、# systemctl disable ypserv、# update-rc.d ypserv disable |
| 确保未安装 rsh 客户端 (183) |
确保未安装 rsh 客户端(CIS: L1 - 服务器 - 2.3.2) | 说明:这些旧客户端存在许多安全漏洞,已替换为更安全的 SSH 包。 删除服务器后,最好确保同时删除这些客户端,以防止用户无意中使用这些命令暴露了其凭据。 请注意,删除rsh包会删除客户端,rshrcp并且rlogin。 |
使用适当的包管理器卸载 rsh: yum remove rsh (RHEL/CentOS)、 apt remove rsh (Debian/Ubuntu)或 zypper remove rsh (SUSE) |
| 禁止将 SMB V1 用于 Samba (185) |
确保禁用具有 Samba 的 SMB V1 (CIS: L1 - 服务器 - 2.2.12) | 说明:SMB v1 具有已知的严重漏洞,且不加密传输中的数据。 如果出于业务原因必须使用它,强烈建议采取其他步骤来缓解此协议固有的风险。 | 添加到min protocol = SMB2[global]分区并/etc/samba/smb.conf重启 smbd 服务 |
注意
Azure Policy 来宾配置设置的具体可用情况在 Azure 政府和其他国家云中可能会有所不同。
后续步骤
有关 Azure Policy 和来宾配置的其他文章:
- Azure Policy 来宾配置。
- 法规符合性概述。
- 在 Azure Policy 示例中查看其他示例。
- 查看了解策略效果。
- 了解如何 使用新的 azure-osconfig 自动修正函数Limited Public Preview 修正不符合的资源。