▼
本文以Cent OS、Redhat Linux和中标麒麟等典型的Linux操作系统为例,介绍如何实施主机安全测评。其他版本的Linux操作系统与其类似。
这里仍然依据等级保护三级信息系统的主机安全要求,其他等级系统中的主机可根据对应级别的基本要求,参照此内容进行调整,以满足自身的安全测评需求。
1)检查是否存在空口令的账户。使用“cat”命令打开“ /etc/shadow”文件,查看各个可登录用户的口令字段是否为空,谨防账户设置空密码。
2)检查是否设置了口令长度和有效期要求。访谈系统管理员,询问是否对操作系统用户登录的口令设置一定的复杂度,口令应包含大小写字母、数字和特殊字符,长度8位以上;使用“cat”命令查看“/etc/login.defs”文件,检查PASS_MIN_LEN变量的设置情况,确认口令最小长度是否符合安全要求;检查“login.defs”文件中 PASS_MAX_DAYS 变量和PASS_MIN_DAYS变量的设置情况,确认是否符合口令有效期要求。
3)检查是否设置登录超时注销功能。使用“cat”命令查看“/etc/profile”文件(cat/etc/profile |grep TMOUT),检查是否对TMOUT变量进行设置,如果命令的输出结果为空,表明系统没有设置登录超时注销功能。
4)检查是否设置登录失败锁定策略。使用“cat”命令查看“/etc/pam.d/system-auth”文件,检查是否设置了“auth required”,并配置了deny和unlock_time参数,用于防止非法访问者对账户信息进行暴力破解尝试。
5)检查是否有其他用户拥有root权限。使用“cat”命令查看“/etc/passwd”文件,命令格式如下图所示。从下图可以看出执行结果只有root用户,表明只有root用户具有root权限,符合安全要求。
检查具有root权限的用户情况
6)检查系统是否提供了不安全的登录方式,例如telnet,rlogin等。这些登录方式在传输用户名和口令时未进行加密,用户鉴别信息有可能被恶意人员截获,可使用“service--status-all|grep running”命令查看在运行的服务中有无telnet和rlogin服务。
1)检查是否运行了不必要的系统服务。使用“chkconfig”命令输出系统所有服务,筛选出处于开启状态的服务,查看是否存在不必要的系统服务如bluetooth、cups、isdn等。
2)检查是否使用了ssh代替telnet进行远程管理。使用“ps”命令输出所有进程的运行状态,筛选出sshd进程的信息,查看sshd进程是否分配了PID,以确认sshd服务进程正在运行。
3)检查是否存在所有用户都可写的目录,命令格式如下图所示。从下图中可以看出存在所有系统用户都可写的目录。
检查是否存在所有用户都可写的目录
4)检查匿名/默认用户的访问权限是否已被禁用或者严格限制。Linux操作系统中存在很多默认账户,如bin、daemon、adm、lp、mail、ftp等,这些账户默认是不能直接登录系统的,可使用“cat”命令查看“/etc/passwd”文件,查看每个匿名/默认用户的最后一个字段值是否设置为/sbin/nologin,或使用cat命令查看“/etc/shadow”文件,查看默认账户的密码字段是否为*、!!或!。
5)检查是否合理设置了重要文件的读写权限。可使用“ls-l”命令查看重要系统文件的访问权限,包括/etc目录下的shadow、passwd、profile、hosts.deny、hosts.allow、syslog.conf、services等,/etc/ssh/目录下的sshd_config,/etc/audit目录下的auditd.conf、audit.rules,/var/log目录下的各日志文件等。
6)检查是否禁止root账户远程登录。由于默认root账户具有所有权限,一旦被恶意攻击者掌握,后果将不堪设想,因此建议禁止root账户直接远程登录,通过设置专用登录账户,然后使用“su root”命令切换至root账户的方法进行远程管理。该设置位于“/etc/ssh/ssd_config”文件中,检查文件中Permit Root Login参数是否设置为“no”,并将注释符“#”去除。
1)检查系统是否运行了审计相关的服务进程syslogd和auditd。使用“service”命令查看系统中正在运行的服务,查看syslogd和auditd是否分配了PID,并确认2个进程正在运行中。
2)检查审计策略是否合理设置。审计策略配置情况需要查看配置文件,其中,“syslog”日志配置位于“/etc/rsyslog.conf”文件中,audit审计策略配置位于“etc/audit/audit.rules”文件中。
3)检查是否设置了日志文件的访问权限。使用“ls-l”命令显示“/var/log/syslog”文件的详细信息,查看是否只有管理账户root对syslog日志文件有读写权,其他账户对该文件没有任何权限;可使用系统中其他用户身份尝试读取syslog日志文件,查看是否被禁止访问。
4)检查系统日志的存放位置。日志文件默认存放在/var/log目录下,使用ls命令查看该目录下的所有日志文件。
5)检查审计子系统是否正常工作。在系统上以某个用户试图产生一些重要的安全相关事件(如鉴别失败等),检查安全审计的覆盖情况和记录情况与要求是否一致。
6)检查审计记录的保护措施是否有效。在系统上以某个系统用户试图删除、修改或覆盖审计记录,检查安全审计的保护情况与要求是否一致。
1)检查用户目录下的登录历史文件是否有异常操作记录。查看“.bash_history”文件,检查该文件中是否存在“sudo su root”这样的命令,如果有,则表明普通用户使用“su”命令进行过用户身份切换。
2)检查错误的提示信息是否会泄露系统信息。使用错误的口令尝试登录系统,查看系统给出的错误提示信息中是否包含了账户或系统的敏感信息从而导致信息泄露。
1)检查所安装的系统组件和应用程序是否必须,多余服务是否已禁用。使用“chkconfig”指令显示系统的各种服务,并终止不必要的服务,如chargen-dgram、chargen-stream、cvs、daytime-dgram、daytime-stream等。
2)检查系统补丁是否及时更新。使用“rpm-aq”命令查看系统中所有已安装的软件包,检查是否存在未及时更新的部分。
1)检查是否限制了服务器的访问地址。使用“cat”命令查看操作系统的相关配置文件,包括/etc/hosts.allow和/etc/hosts.deny,查看是否有允许访问或禁止访问的主机地址。
2)检查系统的防火墙配置策略是否合理。防火墙安全配置中可以根据协议、端口和 IP地址等进行访问限制,并可以对ICMP协议包进行过滤,可使用“iptables -L”命令查看Linux系统内置的iptables防火墙的策略配置情况。
3)检查是否对CPU、内存、硬盘等资源的访问进行了合理限制。使用“ulimit -a”指令显示当前对各种资源的使用限制信息。在测试中也可以检查是否部署了专用的资源监控软件,以实时监控主机资源使用情况,查看监控软件管理控制台是否能够对主机的CPU、硬盘、内存、网络等使用情况进行实时显示,能否设置各类资源使用情况的报警阈值,在主机资源使用异常时进行报警。
4)检查是否设置了超时锁定机制。使用“cat”命令查看“/etc/profile”文件中是否对TMOUT变量进行了设置,确认超时锁定的时间是否合理。
▲
- The end -
原文始发于微信公众号(计算机与网络安全):HW:Linux测评
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/1163590.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论