linux安全基线
(一) 密码策略
1. 密码长度:密码长度至少8位。
检查点:检查/etc/pam.d/system-auth文件是否存在如下配置,参数minlen要求>=8。
修复说明:
将 /etc/login.defs 文件中的 PASS_MIN_LEN 参数设置为:8(密码位数不小于8位):
2. 密码复杂度:密码包含一位大写字母,一位小写字母和一位数字。
检查点:检查/etc/pam.d/system-auth中的password requisite行,
在 password requisite pam_cracklib.so后增加配置如下字段:
difok=3 ucredit=-1 lcredit=-1 dcredit=1
修复说明:
编辑/etc/pam.d/system-auth增加如下参数:
生效后,该系统任意用户设置新密码都将满足复杂度,否则会提示重新设置:
3. 强制密码历史: 检查是否配置强制密码历史不得小于3次
检查点:/etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件存储文件的旧密码,可以检查确保用户不会重复使用之前用过的旧密码。
修复说明:
修复示例:
编辑文件/etc/pam.d/system-auth添加如下行
password sufficient pam_unix.so remember=3
4. 密码锁定: 检查是否配置密码输错锁定机制,登录失败小于等于10次,锁定时间大于等于300秒。
检查点:/etc/pam.d/password-auth 和 /etc/pam.d/system-auth都需要配置如下deny、unlock_time项; 建议次数(deny)小于等于10,锁定时间(unlock_time)大于等于300秒。
修复说明:
编辑/etc/pam.d/system-auth,修改或添加如下行
auth required pam_tally.so onerr=fail deny=6 unlock_time=300
5. 账户超时:检查登录超时配置,时间≤1800(秒)。
检查点:检查/etc/profile是否配置export TMOUT=1800及以上。使用命令“vi /etc/profile”修改配置文件,设置为“TMOUT=1800”,超时的时长至多为30分钟。
修复说明:
编辑/etc/profile,添加或修改export TMOUT=1800
6. 密码最长使用期限:检查密码过期时间天数是否≤90(天)
检查点:密码过期时间允许管理员强制密码在达到定义的寿命后过期。是否设置了用户口令最长有效时间限制,查看/etc/login.defs中 PASS_MAX_DAYS是否小于等于90天。
修复说明:
将 /etc/login.defs 文件中的 PASS_MAX_DAYS 参数设置为:90
并修改不合规用户的用户参数:
# chage --maxdays 90 <user>
7. 密码最短使用期限:检查密码最短使用期限的配置是否≥7(天)
检查点:是否设置了用户密码最短有效时间,查看/etc/login.defs中PASS_MIN_DAYS是否大于等于7天。
修复说明:
/etc/login.defs文件中PASS_WARN_AGE设置为 7
8. SSH登录尝试次数:是否限制了SSH登录失败,锁定IP的次数
检查点:检查系统/etc/ssh/sshd_config文件中MaxAuthTries 值是否小于等于6。
修复说明:
编辑/etc/ssh/sshd_config文件,设置MaxAuthTries值为6
(二) 系统配置
9. Core Dump配置:检查系统core dump状态,是否限制诊断信息。
检查点: Core dump的作用是诊断及排查Linux底层系统发生的错误,也叫memory dump,crash dump。但core dump会包括一些较敏感的信息,如密码、使用者的PAN、SSN等,对于开发环境,这项错误信息有用,但基于安全性,在生产环境,建议关闭该配置。
检查/etc/security/limits.conf是否配置:
* soft core 0
* hard core 0
修复说明:
编辑/etc/security/limits.conf,修改或添加如下配置
* soft core 0
* hard core 0
10. 启用进程保护机制:检查地址空间格局随机化(ASLR)是否启用。
检查点:/etc/sysctl.conf中kernel.randomize_va_space应设置为:kernel.randomize_va_space=2。
ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。
修复说明:
不通过,说明未在/etc/sysctl.conf文件中配置kernel.randomize_va_space=2,
步骤1、编辑/etc/sysctl.conf如下:
步骤2、添加kernel.randomize_va_space=2如下:
步骤3、执行sysctl –w kernel.randomize_va_space=2,激活配置参数。如下:
(三) 文件权限管理
系统文件的权限读、写、执行需满足如下要求:
11. 检查/etc/shadow
检查点:文件的权限应为:600及以下,所属用户应为:root,所属用户组应为:root。/etc/shadow文件用来存储安全性至关重要的用户账户相关的备份信息,例如散列密码和其它安全信息。注:该文件权限400、200、000都可。
修复说明:
示例:
执行以下命令设置 /etc/shadow 的权限:
# chown root:root /etc/shadow
# chmod 600 /etc/shadow
12. 检查/etc/shadow-
检查点:文件的权限应为:600及以下,所属用户应为:root,所属用户组应为:root。/etc/shadow文件用来存储安全性至关重要的用户账户相关的备份信息。
修复说明:
示例:
执行以下命令设置 /etc/shadow 的权限:
# chown root:root /etc/shadow-
# chmod 600 /etc/shadow-
13. 检查/etc/gshadow
检查点:/etc/gshadow- 文件的权限应为:600,所属用户应为:root,所属用户组应为:root。
修复说明:
示例:
执行以下命令设置 /etc/shadow 的权限:
# chown root:root /etc/gshadow
# chmod 600 /etc/gshadow
14. 检查etc/gshadow-
检查点:文件的权限应为:600及以下,所属用户应为:root,所属用户组应为:root。/etc/gshadow-文件用来存储安全性至关重要的组相关的备份信息,例如散列密码和其它安全信息。
修复说明:
执行以下命令设置 /etc/gshadow- 的权限:
# chown root:root /etc/gshadow-
# chmod 600 /etc/gshadow-
15. 检查/etc/passwd
检查点:/etc/passwd 文件的权限应为:644,所属用户应为:root,所属用户组应为:root。
/etc/passwd文件包含许多系统应用程序使用的用户账户信息,因此对于这些应用程序操作必须是可读的。
修复说明:
执行以下命令设置 /etc/passwd 的权限:
# chown root:root /etc/passwd
# chmod 644 /etc/passwd
16. 检查/etc/group
检查点:/etc/group 文件的权限应为:644,所属用户应为:root,所属用户组应为:root。
/etc/group文件包含系统定义的所有有效组的列表。允许root有读写权限,其他人有读权限。
修复说明:执行以下命令设置 /etc/passwd 的权限:
# chown root:root /etc/passwd
# chmod 644 /etc/passwd
17. 检查/etc/passwd 中的所有组在 /etc/group是否存在
检查点:/etc/passwd 中的所有组在 /etc/group都应存在。
随着时间的推移,系统管理错误和更改可能导致组在 /etc/passwd 中但不在 /etc/group 中定义。
修复说明:
执行相应的操作更正发现的差异。
如删除/etc/passwd中所属组不在/etc/group中的用户
或者在/etc/group中新建组使得/etc/passwd中所有用户的所属用户组均在/etc/group中。
18. 检查/etc/crontab 权限是否配置
检查点:/etc/crontab 文件的权限应为:600,所属用户应为:root,所属用户组应为:root。
cron使用 /etc/crontab 文件控制任务。确保root是 /etc/crontab 文件的所有者和所属组,且只有所有者可以访问该文件。
修复说明:
执行以下命令设置 /etc/crontab 的权限:
# chown root:root /etc/crontab
# chmod og-rwx /etc/crontab
19. 检查 /etc/hosts.deny 权限是否配置
检查点:/etc/hosts.deny 文件的权限应为:644,所属用户应为:root,所属用户组应为:root。
/etc/hosts.deny文件包含许多系统应用程序使用的网络信息,因此这些应用程序必须可读才能运行。
修复说明:
执行以下命令设置 /etc/hosts.deny 的权限:
# chown root:root /etc/hosts.deny
# chmod og-rwx /etc/hosts.deny
20. 检查 /etc/hosts.allow 权限是否配置
检查点:/etc/hosts.allow 文件的权限应为:644,所属用户应为:root,所属用户组应为:root。
/etc/hosts.allow文件包含许多应用程序使用的网络信息,因此这些应用程序必须可读才能运行。
修复说明:
执行以下命令设置 /etc/hosts.allow 的权限:
# chown root:root /etc/hosts.allow
# chmod og-rwx /etc/hosts.allow
(四) 服务管理
21. rsyslog服务启用(修复方法适用于CentOS7, 不适用CentOS6)
检查点:检查rsyslog服务是否启用,rsyslog会创建系统上已经不存在的日志文件。此设置控制这些新创建的文件权限,rsyslog应设置为开机启动。
修复说明:
执行以下命令启用rsyslog:
# systemctl enable rsyslog
22. 检查rsh服务器是否未启用
检查点:检查rsh服务器是否未启用。Berkeley rsh-server(rsh,rlogin,rexec)软件包包含以明文形式交换凭证的遗留服务。rsh服务器应未启用,即rsh, rlogin, 和 rexec应未启用。
修复说明:
执行以下命令禁用rsh, rlogin, 和 rexec :
# systemctl disable rsh.socket
# systemctl disable rlogin.socket
# systemctl disable rexec.socket
23. tftp服务未启用
检查点:检查tftp服务器是否未启用,TFTP是一种简单的文件传输协议,通常用于从引导服务器自动传输配置或引导计算机。 tftp和atftp都用于定义和支持TFTP服务器。应未启用。
修复说明:
执行以下命令禁用tftp :
# systemctl disable tftp.socket
24. talk服务未启用
检查点:应未启用。使用talk软件,用户可以通过终端会话跨系统发送和接收消息。 默认情况下安装通话客户端(允许发起通话会话)。
修复说明:
执行以下命令禁用ntalk:
# systemctl disable ntalk
25. telnet服务未启用
检查点:应未启用。telnet服务器软件包包含telnet守护进程,它通过telnet协议接受来自其他系统的用户的连接。
修复说明:
执行以下命令禁用telnet :
# systemctl disable telnet.socket
26. NIS服务未启用
检查点:应未启用。网络信息服务(NIS)(正式称为黄页)是用于分发系统配置文件的客户端 - 服务器目录服务协议。 NIS服务器是允许配置文件分发的程序集合。
修复说明:
执行以下命令禁用ypserv:
# systemctl disable ypserv
27. SNMP服务未启用
检查点:应未启用。简单网络管理协议(SNMP)服务器用于从SNMP管理系统监听SNMP命令,执行命令或收集信息,并将结果发送回请求系统。注:若有业务系统需启用此服务,可报备说明。
修复说明:
执行以下命令禁用snmpd:
# systemctl disable snmpd