Linux服务器
Linux服务器的等级测评主要涉及六个方面的内容,分别是身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、可信验证。
控制点
1.
身份鉴别
为确保服务器的安全,必须对服务器中的每个用户或与之相连的服务器设备进行有效的标识与鉴别。只有通过鉴别的用户,才能被赋予相应的权限,进入进入服务器操作系统,并在规定的权限范围内进行操作。
a)
安全要求:应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
要求解读:
Linux系统的用户鉴别过程与其他UNIX系统相同:系统管理员为用户建立一个账户并为其指定一个口令,用户使用指定的口令登录后重新配置自己的口令,这样用户就获得了一个私有口令。etc/passwd文件中记录用户的属性信息包括用户名、密码、用户标识、组标识等。目前,Linux系统中的口令不再直接保存在/etc/passwd文件中,通常使用一个“x”来代替etc/passwd文件中的口令字段,将/etc/shadow作为真正的口令文件来保存包括个人口令在内的数据。
当然,普通用户不能读取etc/shadow文件,只有超级用户才有权读取。
Linux中的/etc/login.defs是登录程序的配置文件,在文件中可以配置密码的过期天数、密码的长度约束等参数。如果/etc/pam.d/system-auth文件中有与该文件相同的选项,则以/etc/pam.d/system-auth文件的设置为准,也就是说/etc/pam.d/system-auth 的配置优先级高于/etc/login.defs文件。
Linux文件系统具有调用PAM的应用程序认证用户、登录服务、屏保等功能,其中重要的文件是/etc/pam.d/system-auth(在Redhat、CentOS和Fedora系统上)或/etc/pam.d/common-passwd(在Debian、Ubuntu和Linux Mint系统上)。这两个文件的配置优先级高于其它文件。
检查方法
1. 访谈系统管理员,了解系统用户是否已设置密码,核查登录过程中系统账户是否使用密码进行验证登录。
2. 以具有相应权限的账户身份登录操作系统,使用more命令查看/etc/shadow文件,核查系统中是否存在空口令账户。
3. 使用more命令查看/etc/login.defs文件,核查是否设置了密码长度和定期更换规则。使用mroe命令查看/etc/pam.d/system-auth文件,核查是否设置了密码长度和密码复杂度规则。
4. 检查是否存在旁路或身份鉴别措施可绕过的安全风险(应为不存在)。
期望结果
1. 登录时需要密码。
2. 不存在空口令账户。
3. 得到类似如下反馈信息。
PASS_MAX_DAYS 90#登录密码有效期90天
PASS_MIN_DAYS 0#登录密码最短修改时间,增加可以防止非法用户短期内多次修改密码
PASS_MIN_LEN 7#登录密码最小长度为7位
PASS_WARN_AGE 7#登录密码过期前7天提示修改
4. 不存在可绕过的安全风险。
b)
安全要求:应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
要求解读:Linux操作系统具有调用PAM的应用程序认证用户、登录服务、屏保等功能。在Redhat5以后的版本中,使用pam_tally2.so模块控制用户密码认证失败的次数,可以实现对登录次数、超时时间、解锁时间等的控制。如果认证规则只针对某个程序,则可以在PAM目录(/etc/pam.d)下形如sshd、1ogin、system-auth等对应于各程序的认证规则文件中修改。本地登录失败处理功能在/etc/pam.d/system-aut或/etc/pam.d/login文件中进行配置。SSH远程登录失败处理功能在/etc/pam.d/sshd文件中进行配置。
检查方法
1. 核查系统是否配置并启用了登录失败处理功能。
2. 以root身份登录Linux操作系统,核查/etc/pam.d/system-auth或/etc/pam.d/login文件中本地登录失败处理功能的配置情况,以及/etc/pam.d/sshd文件中SSH远程登录失败处理功能的配置情况。
3. 核查/etc/profile中的TIMEOUT环境变量是否配置了超时锁定参数。
期望结果
得到类似如下反馈信息。
-
查看本地登录失败处理功能相关参数,/etc/pam.d/system-auth或/etc/pam.d/login文件中存在“auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=10”。
-
查看远程登录失败处理功能相关参数,/etc/pam.d/sshd文件中存在“auth required pam_tally2.so onerr=fail deny=5 ulock_time=300 even_deny_root root_unlock_time=10”。
-
/etc/profile文件中设置了超时锁定参数,例如在该文件中设置了TMOUT=300s。
c)
安全要求:当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
要求解读:Linux操作系统提供了远程访问与管理接口,以便管理员进行管理操作,网络登录的方式也是多种多样的,可以使用Telnet协议登录,也可以使用SSH协议登录。但是,Telnet协议是不安全的,因为其在数据传输过程中账户与密码均为明文。由于黑客通过一些网络嗅探工具能够很容易地窃取网络中明文传输的账户与密码,所以不建议通过Telnet协议对服务器进行远程管理。针对Telnet协议不安全的问题,可以在远程登录时使用SSH协议。SSH协议的原理与Telnet协议类似,且具有更高的安全性。SSH是一个运行于传输控制层的应用程序。与Telnet协议相比,SSH协议提供了强大的认证与加密功能,可以保证远程连接过程中传输的数据是经过加密处理过的(保证了账户与密码的安全)。
检查方法
1. 询问系统管理员,了解采取的远程管理的方式。以root 身份登录Linux操作系统。
-
查看是否运行了sshd服务。
service-status-all | grep sshd
-
查看相关端口是否已经打开。
netstat -an|grep 22
-
若未使用SSH方式进行远程管理,则查看是否使用了Telnet协议进行远程管理。
service --status-a11 | grep running
2. 使用抓包工具查看协议是否是加密的。
3. 本地化管理,此项不适用。
期望结果
1. 使用SSH方式进行远程管理(防止鉴别信息在传输过程中被窃听)。Telnet协议默认不符合此项。
2. 抓包工具截获的信息为密文,无法读取,协议为加密协议。
3. 本地化管理,此项不适用。
d)
安全要求:应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
要求解读:采用组合的鉴别技术对用户进行身份鉴定是防止欺骗的有效方法。在这里,两种或两种以上组合的鉴别技术是指同时使用不同种类的(至少两种)鉴别技术,且其中一种鉴别技术至少应使用密码技术来实现。
检查方法
询问系统管理员,了解系统是否采用由口令、数字证书、生物技术等中的两种或两种以上组合的鉴别技术对用户身份进行鉴别,并核查其中一种鉴别技术是否使用密码技术来实现。
期望结果
至少采用了两种鉴别技术,其中之一为口令或生物技术,另外一种为基于密码技术的鉴别技术(例如使用基于国密算法的数字证书或数字令牌)。