6、Linux主机加固
控制点 |
安全要求 |
要求解读 |
测评方法 |
预期结果或主要证据 |
身份鉴别 |
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 |
Linux系统的用户鉴别过程与其他UNIX系統相同:系统管理员为用户建立一个账户并为其指定一个口令,用户使用指定的口今登录后重新配置自己的自已的口令,这样用户就具备一个私有口令。etc/password文件中记录用户的属性信息,包括用户名、密码、用户标识、组标识等信息。现在Linux系统中不再直接保存在/etc/password文件中,通常将password文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然,shadow文件是不能被普通用户读取的,只有超级用户才有权读取。 Linux中的/etc/login.defs是登录程序的配置文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。如果/etc/pam.d/system-auth文件里有相同的选项,则以/etc/pam.d/system-auth里的设置为准,也就是说/etc/pam.d/system-aut的配置优先级高于/etc/login.defs。 Linux系统具有调用PAM的应用程度认证用户。登示服务、屏保等功能,其中一个重要的文件使是etc/pam.d/system-auth(在Redhat Cent0S和Fedora系上)。/etc/pam.d/system-auth或/etc/login.defs中的配置优先级高于其他地方的配置。 另外,root用户不受pam认证规则的限制,相关配置不会影响root用户的密码,root用户可以随意设置密码的。login.defs文件也是对root用户无效的。 |
1)访谈系统管理员系统用户是否已设置密码,并查看登录过程中系统账户是否使用了密码进行验证登录。 2)以有权限的账户身份登录操作系统后,使用命令more查看/etc/shadow文件,核查系统是否存在空口令账户 3)使用命令more查看/etc/login. defs文件,查看是否设置密码长度和定期更换要求 #more /etc/login. defs 使用命令more查看/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的应用程度认证用户、登录服务、屏保等功能,其中一个重要的文件便/etc/pam.d/system-auth ,Redhat5以后版本使用pam_tally2.so模块控制用户密码认证失败的次数上限,可以实现登录次数、超时时间,解锁时间等。 这只是针对某个程序的认证规则,在PAM目录(/etc/pam d)下形如sshd、login 等等的对应各程序的认证规则文件中进行修改。若所有密码认证均应用规则, 可直接修改system_auth文件 |
1)系统配置并启用了登录失败处理功能 2)以root身份登录进入Linux, 查看文件内容: # cat /ete/pam.d/system -auth或根据linux版本不同在common文件中 3)查看/etc/profile中的TIMEOUT环境变量,是否配置超时锁定参数 |
得出类似反馈信息,如下: 1)和2)查看登录失败处理功能相关参数,/etc/pam.d/system—auth文件中存在"account required /lib/security/pam_tally.so deny=3 no_ magic root reset" ; 3)记录在文件/etc/profile中设置了超时锁定参数,在profile下设置TMOUT= 300s |
|
c)当进行远程管理时,应采取必要措施、防止鉴别信息在网络传输过程中被窃听 |
Linux提供了远程访问与管理的接口,以方便管理员进行管理操作,网络登录的方式也是多样的,例如可以使用Telnet登录,也可以使用SSH登录。但是,Telnet不安全。I因为其在教据传输过程中,账户与密码均明文传输,这是非常危险的。黑客通过一些网络对嗅探工是能够轻易地的窃取网络中明文传输的账户与密码,因此不建议通过Telnet协议对服务器进行远程管理。针对Telnet协议不安全这种情况,可以在远程登录时使用SSH协议。其原理跟Telnet类似,只是其具有更高的安全性。SSH是一个运行在传输控制层上的应用程序,与Telnet相比,它提供了强大的认证与加密功能,可以保证在远程连接过程中,其传输的数据是加密处理过的。因此保障了账户与口令的安全 |
访谈系统管理员,进行远程管理的方式。 1)以root身份登录进入Linux查看是否运行了sshd服务,service - status-all | grep sshd 查看相关的端口是否打开,netstat -an|grep 22 |