百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

等保2.0 Linux主机测评过程

ahcoder 2025-01-17 10:51 10 浏览


以下结果以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。


一、身份鉴别

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。

输入 more /etc/shadow,得知系统所有用户,此语句字段格式有九段。

第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密,所以看到是一堆乱码,CentOS7以上都是采取的SHA256加密算法进行加密),如果是有些用户在这段是x,*,!!,表示这个用户不能登录到系统或者是没用密码不能登录;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从UNIX的诞生日1970年01月01日算起到最近一次修改口令的时间间隔(天数),你可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段,目前为空,以备将来Linux发展之用;

上图这个例子是CentOS默认的,只有一个root用户需要密码登录,其他都是系统默认用户,基本使用不了。

输入命令查看密码长度和定期更换设置:more /etc/login.defs

得知最长密码使用时间为99999天;最短使用时间为0,代表为设置,就是想换就换;最短密码长度为5天;登录密码过期提前7天提示修改。

查看密码复杂度配置:more /etc/pam.d/system-auth 默认未配置。


b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。

输入more /etc/pam.d/system-auth ,查看是否存在如下语句


onerr=fail 表示定义了当出现错误时的缺省返回值;
even_deny_root 表示也限制root用户;
deny 表示设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
unlock_time 表示设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time 表示设定root用户锁定后,多少时间后解锁,单位是秒;


默认未开启。

输入以下命令检查超时自动退出功能:more /etc/profile

查看是否存在timeout 语句。


c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;

若操作系统只在本地管理或通过KVM等硬件方式管理则该项符合。在远程管理时如通过堡垒机采用SSH、HTTPS协议进行远程管理则满足本测评项要求。检查系统自身的网络登录方式,是否使用了安全的SSH协议,禁用了明文传输的Telnet协议:

1)查看SSH服务是否开启;登录时也能看出,一般默认开启。

ps -e | grep sshd


2)查看telnet是否开启,默认未开启:

systemctl status telnet.socket


d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

Linux操作系统目前仅有“用户名+口令”一种鉴别方式,一般是不符合的,目前常见的有通过数字证书Ukey来实现双因子认证。或借助于堡垒机来进行多重认证,降低安全风险。


二、访问控制

a) 应对登录的用户分配账户和权限;

检查重要文件和目录权限设置是否合理,Linux系统对文件的操作权限包括四种:读(r,4);写(w,2);执行(x,1);空(-,0),文件的权限分为属主(拥有者)、属组、其它用户和用户组的权限。配置文件权限值不能大于644,对于可执行文件不能大于755。

ls -l 重要文件名如/etc/passwd


b) 应重命名或删除默认账户,修改默认账户的默认口令;

输入 more /etc/shadow 得知用户表,见身份鉴别的a项,查看是否有默认账户且还在使用,centos默认可用账户只有root,其他账户虽不会被使用,但是应禁用和删除。一般默认存在很多无用账户。

root作为Linux系统的重要默认用户,一般要求禁止远程登录,检查命令如下:

more /etc/ssh/sshd_config


默认为允许,不符合。


c) 应及时删除或停用多余的、过期的账户,避免共享账户的存在;

根据上一项的检查结果,并与配合人员访谈各在用账户的使用情况。默认账户games、news、 ftp、 1p等应被被禁用,特权账号halt、shutdown应被删除。默认符合。


d) 应授予管理用户所需的最小权限,实现管理用户的权限分离;

在实际生产中,Linux系统很难完全满足该项要求,因为超级管理员用户root一旦被禁用会影响系统和应用的正常使用。但仍应严格限制具有root级权限的账户,其他用户仅应通过使用sudo被赋予root级权限。通过以下命令核查root级权限都授予哪些账户。管理员权限仅分配给root用户。

命令:

more /etc/sudo.conf

此项默认符合。


e) 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;

对于Linux主机,是由系统管理员通过root账户为其它账户分配权限,所以该项主要检查权限分配是否合理,访问控制策略配置是否符合安全要求。 此项默认符合。


f) 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;

Linux系统已经对一些默认账户和系统文件分配了不同的权限,也就是说主体已经达到了用户级,客体已经达到了文件级,该项主要检查新建用户和文件是否存在权限过大、权限滥用的情况。

Linux操作系统默认关闭SELinux服务,开启后会影响系统和业务应用的正常使用。也可通过对操作系统内核进行二次开发或使用加固软件来实现强制访问控制。

more /etc/selinux/config


三、安全审计

a) 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;

查看审计服务状态看到审计服务默认已开启:

service auditd status 或者 service rsyslog status

auditd进程主要记录安全信息及对系统安全事件进行追溯,rsyslog进程用于记录系统中的各种信息(例如硬件报警信息和软件日志。Linux 在安全审计配置文件 /etc/audit/audit.rules中配置安全时间审计规则)


b) 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;

输入以下命令查看日志信息是否足够详细:

tail -20 /var/log/audit/audit.log


默认符合。


c) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;

检查审计记录保存的目录,验证是否能被普通用户轻易删除,访谈管理员对审计记录的保护措施和备份策略,是否使用syslog或snmp方式将操作系统日志发送到日志服务器,检查审计记录是否备份不少于六个月。


d) 应对审计进程进行保护,防止未经授权的中断。

测试使用非审计管理员中断审计进程,是否能成功,询问和检查是否安装第三方审计进程保护软件。


四、入侵防范

a) 应遵循最小安装的原则,仅安装需要的组件和应用程序;

查看系统当前版本,是否及时安装安全补丁:

uname -a


查看操作系统中已安装的程序包,检查是否有目前不需要的组件和应用程序:

yum list installed


b) 应关闭不需要的系统服务、默认共享和高危端口;

输入以下命令检查系统当前运行的服务:

systemctl list-unit-files | grep enable


具体那些服务是多余服务我没有定论现在,大家帮忙补充。

输入以下命令检查系统当前开启的端口:

netstat -ntlp


Linux系统自身不存在默认共享,创建共享文件夹需安装samba,输入以下命令检查是否已经安装samba:

rpm -qi samba


如果安装了samba可能存在默认共享,如果未安装就无默认共享。


c) 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;

Linux系统中/etc/hosts.allow控制可以访问本机的IP地址,/ete/hosts.deny控制禁止访问本机的IP。实际测评中基本都像下图未在此处进行配置,多在防火墙或堡垒机上进行限制。

more /etc/hosts.allow

more /etc/hosts.deny

默认未设置。


d) 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;

此项主要针对应用系统和部分数据库和一些管理软件,主机不涉及人机接口输入或通信接口输入控制,该项不适用。


e) 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;

该项需结合漏扫,是否定期进行漏扫,具有漏扫报告、初测是否发现高风险漏洞,复测后高风险漏洞是否被修补。输入以下命令查看补丁更新情况,是否及时安装最新补丁:

rpm -qa grep patch



f) 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。

检查操作系统是否安装入侵检测软件,如Dragon Squire by Enterasys Networks/主机IPS/IDS 等。网络中部署的入侵防范设备也可以,可以执行 find /-name<daemon name> -print 核查是否安装了主机入侵检测软件。


五、恶意代码防范

应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。

市面上针对Linux操作系统的杀毒软件较少,实际测评过程中基本未遇到安装杀毒软件的Linux主机,不过由于Linux系统自身安全性较高,该项不符合也不判定为高风险问题。默认给不符合,然后做补偿降低风险。


六、可信验证

可基于可信根对计算设备的系统引导程序、 系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。

该项目前尚未遇到符合的情况,但是最新的windows主机已经开始使用tpm可信根了,未来应该会越来越多,对该项的要求是可,不符合只算低风险项。


七、数据备份恢复

访谈管理员Linux系统的审计日志如何备份的,是否有热备或集群。

统一在审计数据里面体现吧。


八、剩余信息保护

a) 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;

CentOS系统该项默认符合。

b) 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。

CentOS系统该项默认符合。

相关推荐

Linux基础运维篇:Linux日志管理(第013课)

日志是什么Linux系统中的日志就像是一个记录员,它会把系统中发生的各种事情都记录下来,比如系统什么时候启动了、哪些用户登录了系统、运行了哪些程序、程序有没有出错、硬件有没有问题等等。这些记录对于系...

目标取代deb包格式,深度Linux操作系统公布“如意玲珑”项目

IT之家7月16日消息,7月13日,在上海站的deepinMeetup如意玲珑专场上,深度操作系统官方正式宣布了项目全新的品牌名称——如意玲珑(Linyaps)。目前如意玲珑已...

基于 Linux 快速搭建私有化 Helm Chart 仓库(ChartMuseum 实战指南)

一、前言在Kubernetes中,Helm是最流行的包管理工具,用于简化应用部署与管理。如果你希望在内网环境中部署、管理自己的HelmCharts,就需要搭建一个私有化HelmChart...

Linux环境开发效率--那些强大的命令

之前写了一篇关于linux下常用的几个命令,参考Linux入门--提高工作效率的命令。接下来接着介绍一些在linux下做开发经常使用到得命令,其中有打包压缩命令tar,文件查找命令find,文件内容查...

怎么使用再生龙打包(备份)liunx系统

liunx系统区别于Windows,由于分区格式的特殊性并不能像GHOST那样进行备份封包,有款开源的针对liunx系统备份还原的软件-再生龙(clonezilla),可能有部分人已经用过,本篇文章让...

python打包那些事儿(python的打包)

python是个万金油,什么活都能干,开发一些小应用的时候,要想其他人也方便使用,就需要对程序进行打包生成可执行文件,不再依赖python环境或者其他文件。前几天写了一个视频去水印的小程序,主要依赖f...

「项目部署」使用Jenkins一键打包部署SpringBoot应用

前言嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。一般而言,一个项目部署的由:拉取代码->构建->测试->打包->部署等过程组成,如果我们经常需要部署项目,特别是在微服...

Linux面试最高频的5个基本问题(linux面试题必会题目)

CPU利用率和CPU负载的区别是什么提到CPU利用率,就必须理解时间片。什么是CPU时间片?我们现在所使用的Windows、Linux、MacOS都是“多任务操作系统”,就是说他们可以“同时”运行多...

jtti:如何将Linux服务器的文件系统创建成镜像

如何将Linux服务器的文件系统创建成镜像?如何把Linux文件系统创建成一个镜像文件,也就是"系统打包"?这类操作不仅适用于迁移、备份,还能用于批量部署、自定义系统安装,甚至可以作为...

用Nuitka打包 Python,效果竟如此惊人!

使用Python开发一个程序后,将Python脚本打包成独立可执行文件是一项常见需求。Nuitka是一个Python到C的编译器,它会将Python代码转换为等效的C代码,然后使用标...

Linux基础运维篇:Linux软件包管理(第014课)

什么是软件包管理在Linux系统中,软件包管理就像是一个“软件管家”,负责软件的安装、卸载、更新以及软件之间依赖关系的处理。它把软件及其相关的文件、配置信息等打包在一起,方便用户进行管理和操作。...

给你的Nodejs后端项目打个包(node为基础的后端框架)

前阵子,碰到个问题用Nodejs做了个小项目需要交付客户使用之前Nodejs做的都是自用,所以也没碰到需要打包保护源码之类的问题上网搜了半天,找到的大多是针对Vue的前端项目打包/混淆,例如用...

爆强!直接把 Python 编写的图形程序打包为安卓 APP

请大家多多关注点赞哦如果想使用Python语言编写图形界面程序,那么有不少的框架可以提供支持,比如Tkinter、QtforPython、WxPython等等。不过这些框架都是只能创建桌面图...

几行代码教你zip打包(打包zip命令)

01准备有时我们不想去手动一个个去操作,然后傻等他打包完,python依赖库zipfile很方便地帮助我们封装了解压压缩,shutil用于文件目录处理,方法类似于linux命令。1、安装pipin...

Linux基础运维篇:Linux文件操作超详细版(第007课)

一、Linux文件系统基础1.文件类型Linux一切皆文件,常见文件类型:普通文件(-):文本文件(.txt)、二进制文件(可执行程序)、压缩文件等。目录文件(d):用于组织文件和子目录(类似...