办公
互联网中间件
合作伙伴
智能管理
备份
大数据
1. 概述
本文档为在x86和x64平台上运行的Ubuntu Linux 14.04 LTS系统建立安全配置状态提供了说明性指导。
2. 服务
(1)关闭不需要用的服务
虽然应用系统更新和修补程序有助于纠正已知漏洞,但保护系统免受尚未报告的漏洞的最佳方法之一是禁用正常系统操作不需要的所有服务。这可以防止利用以后发现的漏洞。如果未启用服务,则无法利用该服务。建议限制开放端口,协议和服务,确保每个系统上仅运行具有经过验证的业务需求的端口,协议和服务。
(2)SSH服务器配置
SSH是常见登录服务(如telnet,ftp,rlogin,rsh和rcp)的安全加密替代品。强烈建议站点放弃较旧的明文登录协议,并使用SSH来防止会话劫持和嗅探网络上的敏感数据。
1)配置SSH协议设置为2
SSH支持两种不同且不兼容的协议:SSH1和SSH2。SSH1是原始协议,受安全问题的影响。SSHv1存在安全问题,而SSH v2不会。SSH2更先进,更安全。
检测:
运行以下命令并验证输出是否匹配:
# grep "^Protocol" /etc/ssh/sshd_config Protocol 2 |
修复:
编辑/etc/ssh/sshd_config文件以设置参数,如下所示:
Protocol 2 |
2)设置SSH 最大认证尝试次数为5或更低
将最大认证尝试次数参数设置为较小的数字可以最大程度地降低成功暴力攻击SSH服务器的风险。虽然建议的设置为5,但请根据实际策略设置数量。
检测:
运行以下命令并验证输出最大认证尝试次数是否为5或更小:
# grep "^MaxAuthTries" /etc/ssh/sshd_config MaxAuthTries 5 |
修复:
编辑/etc/ssh/sshd_config文件以设置参数,如下所示:
MaxAuthTries 5 |
3)设置禁用SSH 允许空密码
禁止对具有空密码的帐户进行远程shell访问会降低未经授权访问系统的可能性。允许空密码参数指定SSH服务器是否允许登录具有空密码字符串的帐户。
检测:
运行以下命令并验证输出是否匹配:
# grep "^PermitEmptyPasswords" /etc/ssh/sshd_config PermitEmptyPasswords no |
修复:
编辑/etc/ssh/sshd_config文件以设置参数,如下所示:
PermitEmptyPasswords no |
3. 账号密码安全
(1)密码策略
1)设置密码字段不为空
所有帐户必须具有密码或被锁定以防止未经授权的用户使用该帐户。具有空密码字段的帐户意味着任何人都可以在不提供密码的情况下以该用户身份登录。
检测:
运行以下命令并验证没有返回任何输出:
# cat /etc/shadow | awk -F: '($2 == "" ) { print $1 " does not have a password "}' |
修复:
如果/etc/shadow文件中的任何帐户没有密码,请运行以下命令锁定帐户,直到可以确定它没有密码为止:
# passwd -l <username> |
2)密码创建要求
强密码可以保护系统免受强力攻击。
检测:
运行以下命令并验证所有密码要求是否符合组织策略,并且minlen为8或更多:
# grep pam_pwquality.so /etc/pam.d/password-auth password requisite pam_pwquality.so try_first_pass retry=3 # grep pam_pwquality.so /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass retry=3 # grep ^minlen /etc/security/pwquality.conf minlen = 8 # grep ^dcredit /etc/security/pwquality.conf dcredit = -1 # grep ^lcredit /etc/security/pwquality.conf lcredit = -1 # grep ^ocredit /etc/security/pwquality.conf ocredit = -1 # grep ^ucredit /etc/security/pwquality.conf ucredit = -1 |
修复:
运行以下命令安装pam_pwquality模块:
apt-get install libpam-pwquality |
编辑/etc/pam.d/common-password文件以包含pam_pwquality.so的相应选项并符合站点策略:
password requisite pam_pwquality.so retry=3 |
编辑/etc/security/pwquality.conf以添加或更新以下设置以符合站点策略:
minlen = 8 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1 |
注意:可以设置附加模块选项,推荐要求仅包括try_first_pass和minlen设置为8或更多。/etc/security/pwquality.conf中的设置必须使用=符号周围的空格。
3)设置失败密码尝试的次数为5次
在n次连续登录尝试失败后锁定用户ID可以减轻对系统的暴力密码攻击。
检测:
执行以下操作以确定用户锁定的当前设置。
# grep "pam_tally2" /etc/pam.d/common-auth auth required pam_tally2.so onerr=fail audit silent deny=5 unlock_time=900 |
修复:
编辑/etc/pam.d/common-auth文件并添加以下auth行:
auth required pam_tally2.so onerr=fail audit silent deny=5 unlock_time=900 |
注意:如果用户因为已达到pam_tally2.so模块中deny=定义的最大连续失败计数而被锁定,则可以通过发出命令/sbin/pam_tally2 -u <username> --reset来解锁用户。此命令将失败计数设置为0,从而有效地解锁用户。
4)设置密码哈希算法为SHA-512
SHA-512算法提供比MD5强得多的散列,从而通过提高攻击者成功确定密码的工作量来为系统提供额外的保护。以下命令将密码加密从md5更改为sha512(更强大的哈希算法)。所有现有帐户都需要执行密码更改才能将存储的哈希值升级到新算法。
检测:
运行以下命令并确保sha512选项包含在所有结果中:
# egrep '^password\s+\S+\s+pam_unix.so' /etc/pam.d/common-password password sufficient pam_unix.so sha512 |
修复:
编辑/etc/pam.d/common-password文件以包含pam_unix.so的sha512选项,如下所示:
password [success=1 default=ignore] pam_unix.so sha512 |
注意:如果确定使用的密码算法不是SHA-512,则一旦更改,建议所有用户ID立即过期并在下次登录时强制更改其密码。为此,可以使用以下命令。任何需要过期的系统帐户都应由系统管理员单独完成,以防止出现任何潜在问题。
# cat /etc/passwd | awk -F: '( $3 >= 1000 && $1 != "nfsnobody" ) { print $1 }' | xargs -n 1 chage -d 0 |
(2)用户帐号和环境
1)设置root帐户的默认组为GID 0
使用GID 0作为_root_account有助于防止_root_拥有的文件被非特权用户意外地访问。
检测:
运行以下命令并验证结果为0:
# grep "^root:" /etc/passwd | cut -f4 -d: 0 |
修复:
执行以下命令,将root用户默认组设置为GID 0:
# usermod -g 0 root |
2)设置默认用户shell超时为900秒或更短
没有与shell关联的超时值可能允许未经授权的用户访问另一个用户的shell会话(例如,用户离开他们的计算机并且不锁定屏幕)。设置超时值至少可以降低发生这种情况的风险。默认TMOUT确定用户的shell超时。TMOUT值以秒为单位测量。
检测:
运行以下命令并验证返回的所有TMOUT行是否为900或更少,并且每个文件中至少存在一个。
# grep "^TMOUT" /etc/bashrc TMOUT=900 # grep "^TMOUT" /etc/profile TMOUT=900 |
修复:
编辑/etc/bashrc和/etc/profile文件(以及系统上支持的任何其他shell的相应文件),并添加或编辑任何TMOUT参数,如下所示:
TMOUT=900 |