Linux系统配置核查-等保测评网络安全等级保护测评 S3A3 计算环境操作系统(Linux)

概述

网络安全等级保护S3A3安全计算环境之操作系统(Linux)中主要包括以下11个部分:

身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、可信验证、数据完整性、数据保密性、数据备份恢复、剩余信息保护、个人信息保护


身份鉴别

基本要求

测评要求

应用指南

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

针对这条条款我们搞清楚的总共有3个点:

① 登录用户的身份标识与鉴别方式,身份标识是否具有唯一性

② 目前身份鉴别信息是否具有复杂度,并且是否定期更换

③ 系统层面强制要求身份鉴别信息具有复杂度并定期更换的配置有哪些

符合建议项

1.查看系统账户

cat /etc/passwd
cat /etc/shadow

目前有哪些账户可登录,是否存在空口令账户

grep nullok /etc/pam.d/system-auth
lastlog

2.查看口令复杂度策略(对root账户无效,询问管理员root账户复杂度策略)

cat /etc/login.defs
cat /etc/pam.d/system-auth

Centos 6.x/RHEL6 中使用pam_cracklib模块。

在Centos7.X /RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理,并兼容6中的pam_cracklib模块。

[SysAdmin@~]$ cat /etc/pam.d/system-auth
password    requisite     pam_pwquality.so minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 try_first_pass local_users_only retry=3 enforce_for_root authtok_type=

特别注意

密码复杂度要求仅对新用户或者修改密码有用,对已经存在的用户无效。

3、限制口令的重复使用:

cat /etc/pam.d/system-auth

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

4、查看系统账户有效期:

cat /etc/login.defs
cat /etc/shadow

查看每个账户状态

chage -l root

        通过用户名+口令的方式进行身份鉴别的话,那只能去询问管理人员当前使用的口令复杂度情况了。复杂口令一般要求由大小写字母、数字、特殊字符中的三种组成,并且长度8位以上。是否定期更换口令的话我们可以通过chage -l [用户名] 这个命令去查看最近一次修改密码的日期是多久。

另外 lslogins -a 可查看所有用户口令过期时间

结果记录

1)经核查,用户在登录时采用了用户名+口令的身份鉴别措施,用户通过堡垒机输入账号口令登录服务器;
2)经核查用户列表,用户身份标识具有唯一性,目前用户列表root、SysAdmin、SecAdmin、AudAdmin;
3)经核查用户配置信息并测试验证,不存在空口令用户;
4)经核查,用户鉴别信息具有复杂度要求并定期更换,
使用命令查看口令复杂度策略:cat /etc/login.defs、cat /etc/pam.d/system-auth,
PASS_MAX_DAYS   90
PASS_MIN_DAYS   5
PASS_MIN_LEN    8
PASS_WARN_AGE   7     
用户口令8位,采用大小写字母、数字和特殊字符组合,有效期为90天。
查询限制口令的重复使用次数:cat /etc/pam.d/system-auth
限制重复使用次数为5次。
查看系统账户的有效期:cat /etc/login.def、cat /etc/shadow,或者查看每个账户的状态:chage -l account,如:chage -l root
两次改变密码之间相距的最小天数    :5
两次改变密码之间相距的最大天数    :90
在密码过期之前警告的天数  :7

或者

服务器采用账户+口令的方式进行登录,身份标识具有唯一性,已设置口令复杂度,由大写字母、小写字母、数字、特殊字符至少三种混合组成,口令最小长度为8位,已设置口令定期更换时长为90天。

经核查:1)/etc/shadow第二字段不为空,访问操作系统需要用户输入账户和密码;2)/etc/passwd文件中不存在同名用户,且无法创建同名用户,提供有用户身份标识唯一性检查功能;3)/etc/shadow文件中操作系统第二字段均不为空,不存在空口令账户;4)/etc/login.defs文件中配置PASS_MAX_DAYS:99999、PASS_MIN_DAYS:0 、PASS_MIN_LEN 5、PASS_WARN_AGE:7;/etc/pam.d/system-auth文件中未设置密码复杂度pam_pwquality.so try_first_pass local_user_only retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-4 ocredit=-1 difok=3 enforce_for_root authtok_type=;5)当前root口令由12位大小写字母、数字和特殊符号组成,口令未定期更换。

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

符合建议项

1、登录失败:查看相关配置文件是否配置登录失败处理策略

cat /etc/pam.d/system-auth
cat /etc/pam.d/password-auth
cat /etc/pam.d/sshd

最多连续5次认证登录都出错时,600秒后解锁,root用户也可以被锁定,root用户600秒后解锁。

添加位置要写在第一行,即#%PAM-1.0的下面。

auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600

1.1 限制ssh登录失败处理功能

修改配置文件sshd文件:

在/etc/pam.d/sshd文件(注意添加位置,和pam.d模块判定方式有关):

auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300

连续登录失败5次后,锁定该账户300S。立即生效,无需重启服务。

1.2 限制从终端(本地登录)的登录失败处理功能

修改system-auth文件:

在/etc/pam.d/system-auth文件下添加上述对应参数即可生效。

auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300

在SSH配置文件

cat /etc/ssh/sshd_config | grep MaxAuthTries

2、查看是否配置登录会话超时策略:

cat /etc/profile

是否存在

export TMOUT=900
readonly TMOUT
或
echo $TIMEOUT
echo $TMOUT

2.操作超时自动退出功能

2.1 全局配置TMOUT值

在/etc/profile文件下添加:TMOUT=600

对所有登录方式生效。

记得刷新 source /etc/profile

(ps:对FTP登录方式无效)

一般应该是在/etc/profile这个文件中对所有用户进行设置,可能有极个别的会单独为每个用户配置超时时间。

所以直接查看/etc/profile文件内容,然后再用echo $TMOUT语句看看运行环境中的TMOUT变量到底是多少。

在SSH上配置

cat /etc/ssh/sshd_config | grep ClientAliveInterval

结果记录

1)经核查,配置并启用登录失败处理功能,查看登录失败处理功能相关参数,cat /etc/pam.d/system-auth 文件中存在“auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=600
”;
2)经核查,配置并启用了限制非法登录功能,所有用户登录失败5次锁定600秒;
3)经核查,配置并启用登录连接超时及自动退出功能,本地登录超时时间900秒,远程登录超时时间300秒。

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

符合建议项

检查远程管理方式

ps -ef | grep ssh
ps -ef | grep telnet

netstat -tuanp

先查看端口情况,看到不对劲的,立马去看看是不是开了telnet

netstat -tlnp | grep ssh

查看远程管理是否使用SSH方式进行远程管理。

结果记录

经核查,用户通过堡垒机输入账号密码通过SSH协议远程登录服务器,可以防止鉴别信息在网络传输过程中被窃听。

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

符合建议项

结果记录

经核查,用户在登录操作系统的过程中只使用了口令鉴别技术,未采用动态口令、数字证书、生物技术或设备指纹等鉴别技术对用户身份进行鉴别。

访问控制

应用指南

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

符合建议项

创建用户,三权分立

cat /etc/passwd

查看目前存在哪些帐户,询问管理员,是否启用访问控制功能,是否依据安全策略控制用户对资源的访问。

ls -l /etc/passwd /etc/shadow /etc/sudoers /etc/group /etc/gshadow /etc/profile /etc/crontab /etc/securetty /etc/ssh/ssh_config /etc/ssh/sshd_config

一、确定当前账户情况

通过查看/etc/passwd、/etc/shadow、/etc/group文件,查看可登录的普通账户有哪些,以及用户组的情况。

1.通过文件来判断:

1.1 /etc/passwd文件:

通过该文件,判断出哪些是普通用户(UID>1000,该设置值在login.defs文件中)、系统用户(UID<1000)和超级用户(UID=0)。

再判断哪些用户不可登录,如shell字段为/sbin/nologin、/bin/false的就不可登录。

通过id命令查看,用法:id [user]

包含用户id,用户组id,附加组id,若不指定用户,则默认显示当前用户基本信息

1.2 /etc/shadow文件:

用户第二字段为*或!!为锁定状态,不允许登录。

结果记录

1)经核查,为用户分配了账户和权限,目前系统内账号包括超级管理员root、系统管理员SysAdmin、安全管理员SecAdmin、审计管理员AudAdmin;
2)经核查,不存在匿名,默认用户只允许超级管理员可以登录。/etc/group权限644,/etc/passwd权限为644,/etc/shadow权限为000,/etc/profile权限为644,/etc/crontab权限为644,/etc/ssh/sshd_config权限为400。

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

符合建议项

cat /etc/passwd
cat /etc/shadow

记录没有被禁用的系统默认的用户名

bin、daemon、shutdown、halt、sync、adm、lp、news、uucp、operator、games、gopher

删除多余用户

删除多余用户组

groupdel groupname:adm、lp、news、uucp、games、dip、pppusers、popusers、slipusers

正常情况下Linux默认账户除了root都被禁止登录了,所以我们正常考虑的话就考虑root账户。限制默认账户的方式有很多种,譬如重命名、禁用、降低权限、限制远程访问等等。针对Linux系统,一般不会去重命名或者禁用root,用的比较多的就是限制root账户远程登录。

2、查看远程连接是否

PermitRootLogin no

cat /etc/ssh/sshd_config | grep Root

确认 /etc/ssh/sshd_config 中 PermitRootLogin 参数配置 PermitRootLogin,yes代表允许root远程ssh登录,no代表禁止ssh远程登录

核查

/etc/ssh/sshd_config
cat /etc/ssh/sshd_config
cat /etc/ssh/sshd_config | grep Root

PermitRootLogin no

结果记录

经核查,其他默认用户均已禁用,默认账户超级管理员root的默认口令已修改。查询配置文件/etc/ssh/sshd_config,SSH 远程管理 PermitRootLogin 状态为no,禁止root用户远程登录。

注意

需要重命名root或者禁用删除,但依据 28448-2019,1、2为或的关系,满足一个就给符合

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

符合建议项

确认管理人员与账户之间的对应关系,确认是否存在多人共用统一账户的情况存在。

结果记录

经核查,系统目前只启用root、SysAdmin、SecAdmin、AudAdmin,不存在多余或过期账户,管理员用户与账户之间是否一一对应。

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

符合建议项

具有最少4个账户(包括一个超管权限账户root),然后对应到人

● 三权分立原则

至少建立系统管理员、安全管理员、审计管理员三种权限帐号。

个人认为,不使用root超级管理员账户,该账户的管理权限应掌握在安全管理员手中,仅上线前用于环境部署工作。

可以参考能力验证给出的权限表

1. 系统管理员

用于管理整个系统,可在 /etc/sudoer 中授予各式各样的权限,但无审计管理的权限,不可中断审计进程及修改审计配置等,且不可威胁到root用户。可授予新增操作员、修改对应文件、服务等的一些操作管理。

例如仅可修改普通用户口令,不可修改root账户口令

2. 安全管理员

负责各类安全策略的制定与落实。包括不限于服务器口令安全策略、备份安全策略、审计安全策略、账户安全策略、防病毒策略、运维安全策略等等。例如:

? 各类设备应划分系统管理员、安全管理员和审计管理员,此外数据库服务器应创建数据库管理员账号;
? 应为每个用户创建账号并分配权限, 禁止出现共享账号。及时停用离职人员账号,避免出现多余账户;
? 用户账户权限分配遵从“最小化”和“必须使用”原则,离岗人员的权限需收回;
? 各类设备应仅允许审计管理员能够查询审计日志,管理日志策略、日志文件和日志进程;
? 配置超时登录机制,登录用户无操作自动退出系统。其中, 关键资产阈值 15分钟, 重要资产阈值 30 分钟, 一般资产阈值 60 分钟。

3. 审计管理员

负责对系统审计日志方面的管理。

例如具有sudo systemctl audit(rsyslog)等进程的管理权限。

对于auidt,syslog轮替规则、审计规则具有配置权限等。

4.操作员

普通权限账户,用于正常的工作,无其他用途。

结果记录

1)经核查,系统进行角色划分,分为超级管理员、系统管理员、安全管理员、审计管理员;
2)经核查,管理用户的权限已经进行分离;
3)经核查,管理用户权限为其工作任务所需的最小权限。

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

要求解读

操作系统的访问控制策略应由授权主体(例如安全管理员)进行配置,非授权主体不得更改访问控制策略。访问控制策略规定了操作系统用户对操作系统资源(例如文件和目录)具有哪些权限、能进行哪些操作。通过在操作系统中配置访问控制策略,可以实现对操作系统各用户权限的限制。

结果记录

1)经核查,系统由授权主体安全管理员SecAdmin负责配置访问控制策略;
2)经核查,授权主体安全管理员SecAdmin依据安全策略配置了主体对客体的访问规则并统一管理;
3)经测试,系统管理员SysAdmin和审计管理员AudAdmin不可越权访问。

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

符合建议项

依据能力验证官方给出的结果记录描述,该条对于操作系统自主访问控制基本默认符合。

主体为用户级,客体为文件、目录级别。

结果记录

经核查,访问控制策略的控制粒度达到主体为用户级或进程级,客体为文件、数据库表、记录或字段级。查看cat /etc/login.defs中的Umask为077。

g)应对敏感信息资源设置安全标记,并控制主体对有安全标记信息资源的访问。

要求解读

敏感标记是强制访问控制的依据,主体和客体都有,存在形式多样,既可能是整型数字,也可能是字母,总之,它表示主体和客体的安全级别。敏感标记由强认证的安全管理员设置。安全管理员通过对重要信息资源设置敏感标记来决定主体以何种权限对客体进行操作,实现强制访问控制。
在操作系统能够对信息资源设置敏感标记的前提下,应严格按照安全策略控制用户对相关资源的操作。

        这条应该是作为做等保人员比较难测评的一条条款了,其实做了这么久,也不太明白真实符合的情况是什么样的,因为客户基本不可能会去自己配置。初级书中叫我们去查看 /etc/selinux/config 这个文件,这里可以使用 sestatus 命令查看,确认状态为 enabled,再确认具体的工作模式

结果记录

经核查,系统未对主体、客体设置安全标记。

安全审计

基本要求

测评要求

应用指南

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

符合建议项

1、检查系统是否开启审计功能:

systemctl is-enabled auditd

Syslog and audit status

systemctl status auditd
systemctl status rsyslog

service auditd status
service rsyslog status

2、是否审核了审计功能启用前的进程:

grep "^s*linux" /boot/grub2/grub.cfg

3、查看audit.rules中是否记录了修改日期和时间信息的事件(time-change)、修改用户/组信息事件(identity)、修改系统网络环境事件(system-locale)、记录用户登录退出事件(logins)、会话初始化信息(session)、访问控制权限修改事件(perm_mod)、未经授权的文件访问失败事件(access)、记录文件被重命名或修改属性、系统管理员操作(action)、内核模块的加载和卸载(modules)等等。

cat /etc/audit/audit.rules

ausearch -ts today

4、若有第三方审计工具或系统则记录其运行状态是否正常。

/var/log/messages 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure 与安全相关的日志信息

/var/log/maillog 与邮件相关的日志信息

/var/log/cron 与定时任务相关的日志信息

/var/log/spooler 与UUCP和news设备相关的日志信息

/var/log/boot.log 守护进程启动和停止相关的日志消息

ls -l /var/log/secure /var/log/audit/audit.log /var/log/cron /var/log/lastlog /var/log/messages /etc/rsyslog.conf /etc/audit/auditd.conf

结果记录

1)经核查,系统开启了安全审计功能,系统审核策略:rsyslog.service和auditd.service均为active (running) ,可保证6个月留存期;
2)经核查,部署了外部Syslog日志服务器收集审计日志,审计范围覆盖到每个用户;
3)经核查,部署了外部Syslog日志服务器收集审计日志,对重要的用户行为和重要安全事件进行审计。

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

符合建议项

1.  查看当前系统时间:date

确认当前系统时间是否为北京时间。

2.  查看日志信息(默认符合)

ausearch -i |more

在/var/log/目录下的文件中查看即可,如message日志

结果记录

经核查,Linux日志包括类型、信息、pid、uid、auid、ses、具体信息、用户名、地址、终端、结果。同时部署外部Syslog日志服务器收集审计日志,审计记录信息包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。

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

 1.确认本地审计记录文件权限

日志文件权限不高于644

2.是否定期备份

确认是否将syslog、audit日志定期备份到日志审计设备中(可以问业主如果没做外发有无设置日志定期保存到别的地方,如果是初测一般都没做)

3.查看轮替规则

若未定期备份审计记录,确认各日志的轮替规则

syslog配置文件 /etc/logrotate.conf

weekly        #每周清理一次日志文件

rotate 4      #保存四个轮换日志

create        #清除旧日志的同时,创建新的空日志文件

dateext       #使用日期为后缀的回滚文件  #可以去var/log目录下看看

include /etc/logrotate.d  #包含/etc/logrotate.d目录下的所有配置文件

结果记录

1)经核查,采取了保护措施对审计记录进行保护,日志数据本地保存,覆盖周期不小于6个月;
2)经核查,部署了外部Syslog日志服务器收集审计日志,对审计记录进行定期备份,每6个月打包一次审计记录。

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

符合建议项

1.  判断哪些用户可以对审计进程进行操作

默认情况下,仅root权限账户可中断审计进程

查看sudo文件配置情况:cat /etc/sudoers,若存在以下配置,则能中断审计进程

结果记录

经核查,通过系统管理员SysAdmin和安全管理员SecAdmin无法中断审计进程。同时部署了外部Syslog日志服务器收集审计日志,对审计记录进行定期备份,每6个月打包一次审计记录。

入侵防范

基本要求

测评要求

应用指南

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

符合建议项

查询linux中安装的程序,一般使用yum list installed 或者rpm -qa,关键是linux中随随便便都安装得有几百个组件,而且很多组件都是存在着依赖关系。你很难或者至少很难快速的判断某组件到底是必需的还是非必需的,而被测评单位方的人也一样,他也不可能知道。

感觉从上述命令中非常难下手,稍微明显一些的,可以查看开机自启服务

systemctl list-unit-files | grep enabled

有些可能明显用不到的,比如web应用服务器上留有当时测试的mysql 程序,后续项目更新升级后使用数据库服务器,而原先的就忘了卸载删除。以及一些明显有问题的服务,例如 telnet。

1.查看是否启用多余的inetd.Services服务:

chkconfig --list

Chargen services、daytime services、Discard wervices、Echo services、Time services

以上服务均为Debug和测试时使用。

systemctl | grep running

是否对安全隐患的漏洞进行补丁修补或指定补丁策略。

2.查看已安装组件和应用程序

yum list installed

结果记录

1)经核查,服务器遵循最小安装原则;
2)经核查,服务器未安装非必要的组件和应用程序。

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

1.  服务

对于组件、服务、进程、端口而言,它们之间是存在着关系的:安装程序-->启动相关服务-->启动相关进程-->监听相关端口。而且,一个程序(组件)可能有数个服务,而一个服务也可能实际启动了数个进程,当然一个进程应该就对应一个端口。

● Centos 6.x使用 service --status-all 来查看服务

● Centos 7.x 使用 systemctl 命令来查看服务

可以根据类型列出单元 systemctl list-units --type service 

估计也看不太懂,具体哪些服务是多余的,看到有明显不符合的,例如telnet 之类的就给不符合吧

2.  端口

使用命令:netstat -tuanp 查看系统中监听的端口以及对应的进程,进行判断哪些是多余的服务、端口,一般默认装机完毕25、111为多余端口,对应的服务也就是多余的。

3.  共享情况

Linux 默认共享是没有的,但是可以安装对应的共享服务

符合建议项

1、检查:

systemctl -a

查看

CUPS、Rsh services、Talk、Telnet、tftp、、IMAP、POP3、SNMP、DHCP、rsync、NIS

等等服务应该关闭。

2.

systemctl | grep running
ss -ntlp
ss -ntlpu

查看是否开启端口:

21、23

1. Telnet服务(默认端口23):telnet是一个不安全的网络协议,会以明文形式传输用户名和密码。建议关闭telnet服务,使用更安全的SSH服务。

2. FTP服务(默认端口21):FTP也是一个不安全的协议,密码以明文形式传输。建议关闭FTP服务,并使用更安全的SCP或SFTP替代。

数据库端口是否修改默认端口号:

1433、1521、3306、6379、5432、27017

等等。

MySQL: 3306
PostgreSQL: 5432
Oracle Database: 1521
SQL Server: 1433
MongoDB: 27017
Redis: 6379
MariaDB: 3306
Elasticsearch: 9200 (HTTP), 9300 (TCP)

结果记录

1)经核查,服务器未开启非必要的系统服务和默认共享;
2)经核查,服务器不存在非必要的高危端口,仅开启SSH协议(22端口)、https服务(443端口)。

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

符合建议项

1、查看服务器是否通过

hosts.allow/hosts.deny(cat /etc/hosts.allow、cat /etc/hosts.deny)

或ssh中Listenaddress(cat /etc/ssh/sshd_config)、或iptables(iptables -L -v -n)限制可接入的网络地址。

/etc/hosts.deny 和 /etc/hosts.allow 是 Linux 系统中用于控制网络访问的配置文件。

/etc/hosts.deny 文件允许你指定哪些客户端将被拒绝访问系统。你可以在这个文件中使用 TCP Wrappers 语法来配置访问控制规则。

修改/etc/hosts.allow和/etc/hosts.deny 这两个文件,把需要通过的IP写在/etc/hosts.allow 文件里

cat /etc/hosts.allow
cat /etc/hosts.deny

cat /etc/hosts.allow | grep -v ^#
cat /etc/hosts.deny | grep -v ^#
[root@localhost ~]# cat /etc/hosts.allow
sshd:127.0.0.1:allow
[root@localhost ~]# cat /etc/hosts.deny
sshd:ALL
[root@localhost ~]# service sshd restart #重启服务使配置生效

1.2 firewall

查看当前防火墙是否开启

systemctl status firewalld.service

firewall-cmd --state

例如使用以下命令添加允许访问22端口的规则

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.12.28" port protocol="tcp" port="22" accept'
firewall-cmd --reload

3.  sshd_config文件

结果记录

经核查,服务器通过堡垒机输入账号密码登录,堡垒机限制终端接入范围,仅来自ip 192.168.1.4 的终端可以接入堡垒机从而登录服务器。同时,服务器通过/etc/hosts.allow和/etc/hosts.deny进行限制,仅允许ip 192.168.1.4 的终端远程登录。

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

结果记录

不适用,根据GB∕T 28448-2019 《信息安全技术 网络安全等级保护测评要求》测评对象范围描述,操作系统无该项要求。

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

这条一般是结合漏洞扫描结果,确认是否存在已知漏洞

或装有统一管理的安全软件,后台可以统一查看对应服务器是否存在相应漏洞,可以进行安全检查

结果记录

1)定期对操作系统进行漏洞扫描,对扫描发现的漏洞进行评估和补丁更新测试,及时进行补丁更新;
2)本次测评通过漏洞扫描、渗透测试等方式未发现高风险漏洞;
3)对操作系统补丁进行测试和安装,补丁情况为较新稳定版本。

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

该条查看是否安装入侵检测软件,例如EDR等,一般可以通过进程查到,这种就需要去询问运维人员了

符合建议项

2.网络入侵检测

结果记录

1)经访谈安全管理员并核查,服务器部署阿里云安骑士主机入侵检测系统,网络部署阿里巴巴安全组件和阿里云助手;
2)经核查,在发生严重入侵事件时阿里云安骑士主机入侵检测系统可以提供报警。

恶意代码防范

基本要求

应用指南

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

针对于Linux来说,一种就是购买统一管理的防病毒软件,常见的有EDR、等,免费常见的一般为 clamav(安装步骤这里就略过了)

查看病毒库版本:freshclam -V  或 clamscan --version

确定病毒库的版本距今不超过1个月,不然就是高风险项。

结果记录

1)经核查,服务器安装了终端安全EDR,定期进行升级和更新恶意代码库。
2)经核查,终端安全EDR采用主动免疫验证技术即使识别入侵和病毒行为;
3)经核查,当识别入侵和病毒行为时终端安全EDR可以将其有效阻断。

可信验证

基本要求

测评要求

应用指南

可信验证这个条款,目前市面上的主流产品并没有普及。条款要求基于“可信根”对计算机设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,那么这个“可信根”又是什么东西。

个人认为就是可信的源头,那么针对于服务器这类的可信,源头是哪里呢?那么肯定是从硬件开始可信,通过 硬件 →内核 → 应用 一步步来实现最终的可信链路。所以一般的情况下就是要有这样的可信硬件产品。可以参考下图,是银河麒麟操作系统多安全策略框架,这样的策略下应该是能实现可信验证了。

总结来说就是要购买可信硬件并部署,通过从硬件开始可信,可能是可信芯片啥的,这个具体没有接触过,细节就不大清楚了。所以如果没有硬件做可信支持的话,那么这条条款肯定是不符合的。

结果记录

1)经核查,未基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序
等进行可信验证;
2)经核查,未在应用程序的关键执行环节进行动态可信验证。

数据完整性

针对测评对象为操作系统,我们需要考虑的应为鉴别数据、重要审计数据、重要配置数据等。

Linux 服务器采用SSH进行远程管理

首先,SSH会使用加密算法来将数据进行加密,就像把信封上的信写成密码一样,这样只有合法的接收方才能读懂里面的内容。这样就能防止数据在传输途中被别人偷窥或修改。

其次,SSH还会对数据做数字签名,就像在信封上盖上自己的印章一样。这可以帮助接收方验证数据的完整性和真实性,确保数据没有被偷偷篡改。

另外,SSH还会使用一种叫做消息鉴别码的方法来检查数据的完整性。这个鉴别码就像是一个特殊的密码,只有知道密码的人才能验证数据是否正常,防止数据在传输过程中被损坏或修改。

通过这些方法,SSH能够确保通信过程中数据的完整性。它可以保护数据不被窃听、篡改或损坏,并确保只有合法的接收方能够读取和理解数据。

所以通过SSH协议进行远程管理的话,鉴别数据以及传输过程中的配置数据,这些完整性都能得到保障。另外审计数据一般是通过syslog协议发送到日志服务器上,syslog协议并不提供保密性和完整性的保证。它主要用于系统日志的传输和存储,并没有内置的加密或签名机制来确保传输的日志消息的机密性和完整性。

结果记录

b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

一般不符合

数据保密性

a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

Linux默认采用SSH 协议进行管理,传输过程中的保密性能得到保障。

b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

Linux 口令存储在 /etc/shadow 文件中,查看该文件

第二列:加密后的password字段,$6代表采用SHA-512($1代表MD5,$2代表SHA-256),$ASdUaZ2O代表盐,$OynRX1SkB···加盐后哈希值”;普通用户未设置密码时为!!,代表禁止登录

也可使用命令 passwd -S root 来查看当前用户使用哪种算法存储口令

使用SHA512对密码进行存储时,实际上是将密码的哈希值存储在系统中。当用户输入密码时,系统会将输入的密码再次转换为哈希值,然后与存储的哈希值进行比较来验证密码的正确性。虽然SHA512算法本身是公开的,但通过使用哈希函数和“盐值”(salt)来增加密码的复杂性,可以提高密码的安全性。"盐值"是在计算哈希值时与密码结合使用的随机值,它可以防止利用预先计算的哈希值进行彩虹表攻击。

SHA512算法是一种哈希算法,用于存储密码的哈希值。作为密码存储算法的一种实现,它被广泛用于将密码转换为安全的存储形式。

哈希算法本身并不直接属于密码算法。密码算法通常是指用于加密和解密数据的算法,如对称加密(AES、DES)、非对称加密(RSA、ECC)和散列算法(MD5、SHA1)。这些算法用于保护数据的机密性和完整性。

在密码学中,密码存储算法是一种用于存储用户密码的方式,其目标是保护用户密码的安全性。哈希算法在其中扮演了重要角色,通过将密码转换为哈希值来存储,以防止明文密码被泄露。

因此,尽管SHA512算法本身不是密码算法,但它是一种用于密码存储的安全哈希算法。通过合理的使用和管理(如添加“盐值”),可以增加密码的安全性,从而达到一定程度上的保密性。

数据备份恢复

a)应提供重要数据的本地数据备份与恢复功能

首先针对于操作系统,到底要备份什么东西?操作系统可以说就是提供一个环境的问题,重点是这台服务器做什么用的,比如一个简单的web服务器,可以直接下载一个phpstudy软件,里面包含了数据库以及中间件,然后开发那边给上代码这个应用系统就直接可以用了。那么在这台服务器上要备份其实就是一些软件的配置数据,备份这些数据后,能帮助应用系统快速迁移或系统损坏后能保证其正常运行。常见的手段有两台服务器做主备,通过第三方软件整机备份,或者是打了快照,出现异常通过快照恢复(但要注意,数据库服务器这种直接恢复快照会同时造成数据丢失,所以算是一种备份弥补措施)。

另外一种为了满足等保要求,可以使用cron计划任务对操作系统中的配置数据进行备份。例如备份/etc/下所有配置文件,这样操作系统的密码复杂度要求,登录失败处理功能等等配置文件都会进行备份。

b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地

这种一般的三级系统做的比较少,像比较重要的如银行系统会做异地备份。按照字面意思是要提供一个备份功能,可以通过通信网络将重要数据实时备份到备份场所。

1. 异地实时备份功能:这是一项技术功能,旨在将数据备份到不同的物理场所。通常用于增加数据的可靠性和冗余性,以防止灾难性事件(如硬件故障、自然灾害等)导致数据丢失。

2. 利用通信网络:这指的是利用计算机网络或通信基础设施,在源设备和备份场地之间传输数据。这可以包括使用局域网、广域网、互联网或专用线路等不同的网络技术。

3. 将重要数据实时备份:这意味着备份过程是实时的,即数据在生成或更新后立即备份。这样可以确保备份数据与源数据的同步性,并尽量减少备份数据之间的时间差。

4. 备份至备份场所:备份数据被传输到一个备份场所,也称为离线备份位置或远程备份站点。备份场所通常是在物理上分离于源设备的另一个地点,以确保在源设备发生故障或灾难时可以恢复数据。

综上所述,这句话表达了一个要求,在数据备份方面提供一个功能,通过通信网络将重要数据实时备份到另一个地理位置的备份场所。这样可以增加数据的安全性和可靠性,并提供数据恢复的保障。

c)应提供重要数据处理系统的热冗余,保证系统的高可用性

重要数据处理系统的热冗余:热冗余是指在系统中使用冗余组件或备份系统来保证在主系统出现故障时能够无缝切换到备份系统。这样可以确保系统持续运行且不中断,以提供高可用性和持续的服务。

系统的高可用性:高可用性是指系统能够提供持续不断的服务,减少延误和故障的影响。在重要数据处理系统中,高可用性是关键要求之一,以确保数据的连续性和业务的顺利运行。

Linux操作系统提供了多种措施来实现热冗余,以确保系统的高可用性。以下是一些常见的例子:

1. Linux高可用集群(Linux-HA):这是一种基于Linux操作系统的集群解决方案,通过将多个服务器组合成一个集群,实现冗余和故障转移。集群中的服务器可以通过网络通信来共享任务和负载,并提供故障检测和自动故障转移功能。

2. 心跳检测:Linux操作系统可以使用心跳检测机制来监视主服务器的状态。心跳程序定期发送心跳信号到备份服务器,以确保主服务器正常工作。如果主服务器停止响应或发生故障,备份服务器将接管服务,并顺利进行切换。

3. 负载均衡:Linux操作系统提供多种负载均衡技术,如IPVS(IP Virtual Server)、HAProxy等,在多台服务器之间均衡分发网络请求和负载。这些负载均衡器可以监测服务器的健康状态,并自动将请求转发到可用的服务器,提高系统的可用性和性能。

4. Pacemaker集群管理器:Pacemaker是一个用于管理集群的开源软件,可以实现高可用性和故障转移。它可以监控集群中的节点和资源,并在故障发生时自动进行故障转移,保证系统的连续运行。

总的来说,Linux操作系统提供了一系列工具和技术,用于实现热冗余和高可用性。这些措施通过集群、心跳检测、负载均衡和集群管理器等功能,确保系统在主服务器故障时能够自动切换到备份服务器,并提供连续的服务。

剩余信息保护

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

这条暂时没有测评方法,大多机构应该也是给的默认符合。

结果记录

服务器为Linux系统,能够保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。

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

Linux操作系统这条我们主要还是考虑命令行shell 命令历史记录。

echo $HISTSIZE
echo $HISTFILESIZE

history 显示全部历史命令

结果记录

服务器已配置HISTSIZE=0,能保证敏感数据在存储空间被释放前得到清除。

个人信息保护

根据GB/T 28448-2019 《信息安全技术 网络安全等级保护测评要求》,本项测评对象不包括操作系统,不适用。