检查项:
Ensure package manager repositories are configured
检查项:
确保"配置了包管理器存储库"
描述:
系统需要配置包管理器存储库以确保它们接收到最新补丁和更新。
原理:
如果系统的软件包存储库配置错误,则可能无法识别重要的修补程序,或者恶意存储库可能会引入受损软件。
配置方法:
根据站点策略配置包管理器存储库。
检测方法:
运行以下命令并验证是否正确配置了存储库:
# yum repolist
检查项:
Ensure GPG keys are configured
检查项:
确保"配置了GPG密钥"
描述:
大多数包管理器在安装过程中实现GPG密钥签名以验证包的完整性。
原理:
确保从有效源获取更新以防止可能导致无意中在系统上安装恶意软件的欺骗非常重要。
配置方法:
根据站点策略更新您的包管理器GPG密钥。
检测方法:
运行以下命令并验证是否正确配置了GPG密钥:
# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
检查项:
Ensure gpgcheck is globally activated
检查项:
确保"全局激活gpg检查"
描述:
gpgcheck选项,在/etc/yum.conf的[main]节和/etc/yum/repos.d/*中,决定在安装之前是否提前检查其签名。
原理:
确保在安装之前始终检查RPM的包签名以确保从受信任的来源获取软件非常重要。
配置方法:
1.编辑/etc/yum.conf文件,在main节中设置gpgcheck=1
2.编辑/etc/yum.repos.d/*目录下的所有文件,设置gpgcheck=1
检测方法:
1.检查/etc/yum.conf中gpgcheck是否设置为1
# grep ^gpgcheck /etc/yum.conf
gpgcheck=1
2.运行以下命令并验证返回的所有gpgcheck实例是否都设置为“1”:
# grep ^gpgcheck /etc/yum.repos.d/*
检查项:
Ensure AIDE is installed
检查项:
确保"已安装AIDE"
描述:
AIDE获取文件系统状态的快照,包括修改时间,权限和文件哈希值,然后可用于与文件系统的当前状态进行比较以检测对系统的修改。
原理:
通过监视文件系统状态,可以检测到受损文件,以防止或限制意外或恶意错误配置或修改后的二进制文件的暴露。
配置方法:
1.运行以下命令安装aide
# yum install aide
2.查阅AIDE文档,根据你的环境配置AIDE
说明文档:http://aide.sourceforge.net/stable/manual.html
3.初始化AIDE
# aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
检测方法:
运行以下命令判断aide是否安装:
# rpm -q aide
aide-<version>
未安装时:package aide is not installed
检查项:
Ensure filesystem integrity is regularly checked
检查项:
确保定期检查文件系统完整性"
描述:
需要定期检查文件系统完整性,以检测文件系统的更改。
原理:
定期文件检查允许系统管理员定期确定是否以未经授权的方式更改了关键文件。
配置方法:
1.运行以下命令
# crontab -u root -e
2.将以下行添加到crontab:
0 5 * * * /usr/sbin/aide --check
注意:该建议的检查每天凌晨5点进行。 根据站点策略更改检查的频率和时间。
检测方法:
运行以下命令以确定是否计划运行辅助检查的cron作业。
# crontab -u root -l | grep aide
# grep -r aide /etc/cron.* /etc/crontab
检查项:
Ensure permissions on bootloader config are configured
检查项:
确保配置了bootloader配置的权限"
描述:
grub配置文件包含关于启动设置和解锁启动选项的密码的信息。
原理:
grub配置通常位于/boot/grub/grub.conf,并链接为/boot/grub/menu.lst和/etc/grub.conf。 设置root权限以进行读写只能防止非root用户查看引导参数或更改它们。 读取引导参数的非root用户可能能够在引导时识别安全性方面的弱点并能够利用它们。
配置方法:
运行以下命令为grub配置文件这是权限:
# chown root:root /boot/grub/grub.conf
# chmod og-rwx /boot/grub/grub.conf
注意:此建议是围绕grub引导加载程序设计的,如果您的环境中正在使用LILO或其他引导加载程序,则配置等效设置。
检测方法:
运行以下命令并验证Uid和Gid均为0 / root,Access权限不授予组或other
# stat /boot/grub/grub.conf
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
检查项:
Ensure bootloader password is set
检查项:
确保配置了bootloader密码
描述:
设置引导加载程序密码将要求重新引导系统的任何人必须输入密码才能设置命令行引导参数。
原理:
在执行引导加载程序时需要引导密码将防止未经授权的用户输入引导参数或更改引导分区。 这可以防止用户削弱安全性(例如,在启动时关闭SELinux)。
配置方法:
1.使用grub-md5-crypt创建加密密码:
# grub-md5-crypt
Password: <password>
Retype Password: <password>
<encrypted-password>
2.复制并粘贴到/boot/grub/grub.conf的全局部分:
password --md5 <encrypted-password>
注意:
此建议是围绕grub引导加载程序设计的,如果您的环境中正在使用LILO或其他引导加载程序,则配置等效设置。
检测方法:
运行以下命令并验证输出匹配:
# grep "^password" /boot/grub/grub.conf
password --md5 <encrypted-password>
检查项:
Ensure authentication required for single user mode
检查项:
确保单用户模式需要身份验证"
描述:
当系统在引导期间检测到问题或通过从引导装载程序手动选择时,使用单用户模式进行恢复。
原理:
在单用户模式下要求身份验证可防止未经授权的用户通过单用户模式重启系统,以获得没有凭据的root权限。
配置方法:
编辑/etc/sysconfig/init并将SINGLE设置为'/ sbin/sulogin':
SINGLE=/sbin/sulogin
检测方法:
运行以下命令并验证SINGLE是否设置为"/sbin/sulogin"
# grep ^SINGLE /etc/sysconfig/init
SINGLE=/sbin/sulogin
注:SINGLE=/sbin/sushell,可以通过检查文件
检查项:
Ensure interactive boot is not enabled
检查项:
确保未启用交互式引导
描述:
交互式引导允许控制台用户以交互方式选择在引导时启动哪些服务
原理:
PROMPT选项使控制台用户能够以交互方式引导系统并选择在引导时启动哪些服务。关闭控制台上的PROMPT选项,以防止控制台用户可能覆盖已建立的安全设置。
配置方法:
编辑/etc/sysconfig/init并将PROMPT设置为'no':
PROMPT=no
检测方法:
运行以下命令并验证PROMPT是否设置为"no"
# grep "^PROMPT=" /etc/sysconfig/init
PROMPT=no
注:PROMPT=yes,可以通过检查文件
检查项:
Ensure core dumps are restricted
检查项:
确保核心转储受到限制
描述:
核心转储是可执行程序的内存。
原理:
它通常用于确定程序中止的原因。 它还可用于从核心文件中收集机密信息。 系统提供了为核心转储设置软限制的功能,但这可以被用户覆盖。 设置核心转储的硬限制可防止用户覆盖软变量。 如果需要核心转储,请考虑为用户组设置限制(请参阅limits.conf(5))。 此外,将fs.suid_dumpable变量设置为0将阻止setuid程序转储核心。
配置方法:
1.将以下行添加到/etc/security/limits.conf文件或/etc/security/limits.d/*文件中:
* hard core 0
2.在/etc/sysctl.conf文件中设置以下参数
fs.suid_dumpable = 0
3.运行以下命令以设置活动内核参数:
# sysctl -w fs.suid_dumpable=0
检测方法:
运行以下命令并验证输出匹配:
# grep "hard core" /etc/security/limits.conf /etc/security/limits.d/*
* hard core 0
# sysctl fs.suid_dumpable
fs.suid_dumpable = 0
检查项:
Ensure XD/NX support is enabled
检查项:
确保已启用XD/NX支持
描述:
x86系列中的最新处理器支持在每个内存页面的基础上阻止代码执行的能力。 一般而言,在AMD处理器上,此功能称为No Execute(NX),而在Intel处理器上则称为Execute Disable(XD)。 此功能可以帮助防止利用缓冲区溢出漏洞,并应尽可能激活。 必须采取额外步骤以确保启用此保护,尤其是在32位x86系统上。 其他处理器(如Itanium和POWER)从一开始就包含此类支持,并且这些平台的标准内核支持该功能。
原理:
启用可以防止缓冲区溢出攻击的任何功能可以增强系统的安全性。
配置方法:
在32位系统上安装具有PAE支持的内核,64位系统不需要安装:如有必要,请将引导加载程序配置为加载新内核并重新引导系统。 您可能需要在BIOS中启用NX或XD支持。
注意:在实施此建议之前,请确保您的系统支持XD或NX位并具有PAE支持,因为如果您的硬件不支持这些,可能会阻止它启动
检测方法:
运行以下命令并验证内核是否已识别并激活NX/XD保护。
# dmesg | grep NX
NX (Execute Disable) protection: active
检查项:
Ensure address space layout randomization (ASLR) is enabled
检查项:
确保启用地址空间布局随机化(ASLR)
描述:
地址空间布局随机化(ASLR)是一种利用缓解技术,它随机排列进程的关键数据区域的地址空间。
原理:
随机放置虚拟内存区域将使得难以编写内存页面漏洞,因为内存放置将一直在变化。
配置方法:
1.在/etc/sysctl.conf文件中设置以下参数:
kernel.randomize_va_space = 2
2.运行以下命令以设置活动内核参数:
# sysctl -w kernel.randomize_va_space=2
检测方法:
运行以下命令并验证输出匹配:
# sysctl kernel.randomize_va_space
kernel.randomize_va_space = 2
检查项:
Ensure prelink is disabled
检查项:
确保禁用prelink
描述:
prelinkis一个程序,它修改ELF共享库和ELF动态链接二进制文件,使动态链接器在启动时执行重定位所需的时间显着减少。
原理:
预链接功能可能会干扰AIDE的操作,因为它会更改二进制文件。 如果恶意用户能够破坏诸如libc之类的公共库,则预链接还可能增加系统的漏洞。
配置方法:
运行以下命令将二进制文件恢复到正常状态并卸载prelink:
# prelink -ua
# yum remove prelink
检测方法:
运行以下命令并验证未安装prelink:
# rpm -q prelink
package prelink is not installed
检查项:
Ensure SELinux is not disabled in bootloader configuration
检查项:
确保在引导加载程序配置中未禁用SELinux
描述:
将SELINUX配置为在引导时启用,并验证它未被grub引导参数覆盖。
原理:
必须在grub配置的启动时启用SELinux,以确保不会覆盖它提供的控件。
配置方法:
编辑/boot/grub/grub.conf并删除所有内核行上selinux = 0和enforcing = 0的所有实例。
注意:此建议是围绕grub引导加载程序设计的,如果您的环境中正在使用LILO或其他引导加载程序,则配置等效设置。
检测方法:
运行以下命令并验证没有内核行设置selinux = 0或enforcing = 0参数:
# grep "^\s*kernel" /boot/grub/grub.conf
检查项:
Ensure the SELinux state is enforcing
检查项:
确保SELinux状态强制执行
描述:
设置SELinux以在系统启动时启用。
原理:
必须在启动时启用SELinux,以确保它提供的控件始终有效。
配置方法:
编辑/etc/selinux/config文件以设置SELINUX参数:
SELINUX=enforcing
检测方法:
运行以下命令并确保输出匹配:
# grep SELINUX=enforcing /etc/selinux/config
SELINUX=enforcing
# sestatus
SELinux status: enabled
Current mode: enforcing
Mode from config file: enforcing
检查项:
Ensure SELinux policy is configured
检查项:
确保已配置SELinux策略
描述:
配置SELinux以满足或超过默认目标策略,该策略仅限制后台驻留程序和系统软件。
原理:
安全配置要求因站点而异。 有些网站可能会要求一项比默认策略更严格的政策,这是完全可以接受的。 此项旨在确保至少满足默认建议
配置方法:
编辑/etc/selinux/config文件以设置SELINUXTYPE参数:
SELINUXTYPE=targeted
注意:如果您的组织需要更严格的策略,请确保将它们设置在/etc/selinux/configfile中。
检测方法:
运行以下命令并确保输出匹配“targeted”或“mls”:
# grep SELINUXTYPE=targeted /etc/selinux/config
SELINUXTYPE=targeted
# sestatus
Policy from config file: targeted
检查项:
Ensure SETroubleshoot is not installed
检查项:
确保未安装SETroubleshoot
描述:
SETroubleshoot服务通过用户友好界面通知桌面用户SELinux拒绝。 该服务提供有关配置错误,未经授权的入侵和其他潜在错误的重要信息。
原理:
SETroubleshoot服务是在服务器上运行的非必要的守护程序,尤其是在禁用X Windows的情况下。
配置方法:
运行以下命令以卸载setroubleshoot:
# yum remove setroubleshoot
检测方法:
运行以下命令并验证未安装setroubleshoot:
# rpm -q setroubleshoot
package setroubleshoot is not installed
检查项:
Ensure the MCS Translation Service (mcstrans) is not installed
检查项:
确保未安装MCS Translation Service(mcstrans)
描述:
mcstransd守护进程向请求信息的客户端进程提供类别标签信息。标签转换在/etc/selinux/targeted/setrans.conf中定义。
原理:
由于此服务不经常使用,因此请将其删除以减少系统上运行的潜在易受攻击程序的数量。
配置方法:
运行以下命令卸载mcstrans:
# yum remove mcstrans
检测方法:
运行以下命令并验证未安装mcstrans:
# rpm -q mcstrans
package mcstrans is not installed
检查项:
Ensure no unconfined daemons exist
检查项:
确保不存在无限制守护程序
描述:
未在SELinux策略中定义的守护程序将继承其父进程的安全上下文。
原理:
由于守护进程是从init进程启动和派生的,因此它们将继承安全上下文标签initrc_t。 这可能会导致给予进程更多权限而非其需要的意外后果。
配置方法:
调查在审计行动中发现的任何无限制守护进程。它们可能需要为它们分配一个现有的安全上下文,或者为它们构建一个策略。
注意:有时某些守护进程(如备份或集中管理软件)可能需要无限制地运行。 在做出此类例外之前,应仔细分析和记录任何此类软件。
配置方法:
运行以下命令并验证没有输出:
# ps -eZ | egrep "initrc" | egrep -vw "tr|ps|egrep|bash|awk" | tr ':' ' ' |awk '{ print $NF }'
检查项:
Ensure SELinux is installed
检查项:
确保SELinux已安装
描述:
SELinux提供强制访问控制
原理:
如果没有安装强制访问控制系统,则只能使用默认的自由访问控制系统。
配置方法:
运行以下命令安装libselinux:
# yum install libselinux
配置方法:
运行以下命令并验证是否已安装libselinux:
# rpm -q libselinux
libselinux-<version>