第423集网络安全等级保护测评-Linux篇
网络安全等级保护测评 - Linux篇
1. 身份鉴别
1.1 身份标识和鉴别
测评要求: 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
测评方法
询问并验证管理员采用什么方法登录服务器(通过情况下都是用户名+口令),并记录口令的长度是否满足8位以及是否由大小写、字母、特殊符号组成,并定期更换。
检查步骤
步骤1: 检查账户唯一性
1 | # 查看/etc/passwd文件,检查是否有同名账户存在,各账户UID是否唯一 |
步骤2: 检查密码策略配置
1 | # 查看/etc/login.defs文件中的口令长度及更换周期 |
配置参数说明:
PASS_MAX_DAYS XX: 密码最大有效期(天)PASS_MIN_DAYS XX: 密码最小有效期(天)PASS_WARN_AGE XX: 密码过期前警告天数PASS_MIN_LEN XX: 密码最小长度
步骤3: 检查密码复杂度要求
1 | # 查看/etc/pam.d/system-auth文件,口令复杂度要求配置 |
配置示例:
1 | password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 |
参数说明:
minlen=N: 定义用户密码的最小长度dcredit=N: 数字(N为负数表示至少需要N个数字)ucredit=N: 大写字母(N为负数表示至少需要N个大写字母)lcredit=N: 小写字母(N为负数表示至少需要N个小写字母)ocredit=N: 特殊字符(N为负数表示至少需要N个特殊字符)
注意: ocredit(特殊字符)的值是2的时候,就代表有最多有2个特殊字符的长度额外能加1。!/*表示账号被禁用。
配置示例
1 | # 编辑密码策略配置文件 |
1.2 登录失败处理
测评要求: 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
测评方法
步骤1: 检查登录失败锁定配置
1 | # 查看/etc/pam.d/sshd文件中是否包含登录失败锁定配置 |
配置示例:
1 | auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600 |
参数说明:
deny=X: 连续失败X次后锁定账户unlock_time=XXX: 锁定时间(秒)even_deny_root: 锁定root账户root_unlock_time=XXX: root账户锁定时间(秒)
重要提示:
- 登录失败参数一定要写在配置文件内
#%PAM-1.0的下面(即第二行),如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的! - 通过ssh远程连接服务器时是在
pam.d/sshd文件里进行设置,如果本机登录服务器是在pam.d/login或者pam.d/system-auth里进行设置。
步骤2: 检查会话超时配置
1 | # 查看/etc/profile文件,是否配置超时自动断开连接功能 |
配置示例:
1 | # 设置超时时间为600秒(10分钟) |
配置示例
1 | # 编辑SSH PAM配置 |
1.3 远程管理加密
测评要求: 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
测评方法
首先询问管理员是否远程管理服务器,若只是本地管理此项不适用。
步骤1: 检查SSH服务
1 | # 检查是否运行了sshd服务 |
说明: 使用SSH的方式进行远程管理,SSH采用的是加密连接,可以将鉴别信息进行加密处理。
步骤2: 检查Telnet服务
1 | # 查看是否开启Telnet服务 |
说明: 若采用的是Telnet方式传输则判定为不符合,Telnet使用的是明文传输。
步骤3: 检查FTP服务
1 | # 查看是否启用FTP服务 |
说明: 若采用FTP服务同样判定为不符合,FTP使用明文传输。
安全配置建议
1 | # 禁用Telnet服务 |
1.4 双因子鉴别
测评要求: 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
测评方法
询问管理员并查看登录操作系统时,是否采用双因子鉴别,且其中一种必须为密码技术(大多数情况下业主此项都是不符合的)。
注意: 若服务器仅能通过堡垒机等第三方运维工具登录,在堡垒机采用了双因子,而服务器未采用双因子的情况下则此项同样符合。
双因子鉴别方案
方案1: SSH密钥 + 密码
1 | # 配置SSH同时要求密钥和密码 |
方案2: 使用堡垒机
- 部署堡垒机系统
- 配置双因子认证(密码 + 动态令牌/短信验证码)
- 所有服务器登录必须通过堡垒机
方案3: 使用第三方认证系统
- LDAP + OTP(一次性密码)
- RADIUS + 动态令牌
- 生物识别 + 密码
2. 访问控制
2.1 账户和权限分配
测评要求: 应对登录的用户分配账户和权限。
测评方法
步骤1: 检查默认账户
1 | # 使用管理员权限的身份登录Linux,查看/etc/shadow文件 |
禁用无用账户:
1 | # 锁定无用账户 |
步骤2: 检查root远程登录
1 | # 查看/etc/ssh/sshd_config文件,root账户是否能够进行远程登录 |
配置要求: PermitRootLogin no
注意: 此项基本上是默认符合。
2.2 默认账户处理
测评要求: 应重命名或删除默认账户,修改默认账户的默认口令。
测评方法
查看linux系统的默认账户root是否重命名和修改默认口令。
注意: 通过情况下root是不能重命名的,若修改的口令为强口令,并包含大小写字母、数字的特殊符号,并定期更换的情况下是可以判断为符合,否则就为部分符合或是不符合。
安全建议
1 | # 修改root密码为强密码 |
2.3 账户清理
测评要求: 应及时删除或停用多余的、过期的账户,避免共享账户的存在。
测评方法
- 访问系统管理员,操作系统平时有哪些人员涉及登录使用
- 查看
/etc/shadow文件,查看系统中的账户与实际人员能否对应,是否存在开放状态但未使用的账户
检查步骤
1 | # 查看所有账户 |
2.4 权限分离
测评要求: 应授予管理用户所需的最小权限,实现管理用户的权限分离。
测评方法
- 了解实际情况中存在哪些管理人员
- 查看
/etc/shadow文件中的开放账户,是否做到了与实际人员一一对应 - 除root外至少要建立审计账户
注意: 此项要求实现”三权分立”,所以必须除系统管理员外设置审计管理员,否则就判为不符合。
三权分立配置
1 | # 创建系统管理员账户 |
2.5 访问控制策略
测评要求: 应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
测评方法
询问管理员系统是由谁来配置访问控制策略的,并查看一些重要文件配置的权限是否合理。
检查重要文件权限:
1 | # 检查重要文件权限 |
合理权限设置:
1 | # /etc/shadow应该只有root可读 |
注意: 通常情况下linux系统是由root来配置的。
2.6 访问控制粒度
测评要求: 访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
测评方法
使用ls -l 文件名命令,查看重要文件和目录权限设置是否合理。
1 | # 检查重要文件权限 |
合理权限示例:
1 | # /etc/passwd: 644 |
2.7 安全标记
测评要求: 应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
测评方法
- 访谈管理员,明确系统中是否包含有敏感信息;若不含有则为不适用
- 是否采用第三方主机加固产品进行了安全标记的设置
注意: 第三方主机加固软件有椒图、网盾、中超伟业等。
SELinux安全标记
1 | # 检查SELinux状态 |
3. 安全审计
3.1 启用安全审计
测评要求: 应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计。
测评方法
步骤1: 检查审计服务状态
1 | # 检查auditd服务状态 |
步骤2: 检查审计配置
1 | # 查看rsyslog配置 |
步骤3: 检查第三方审计工具
若未开启系统安全审计功能,则确认是否部署了第三方安全审计工具,并进行相应的核查。
配置审计服务
1 | # 启用auditd服务 |
3.2 审计记录内容
测评要求: 审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
测评方法
使用管理员权限的身份登录Linux,通过命令查看审计日志:
1 | # 查看审计日志 |
审计日志格式示例:
1 | type=USER_AUTH msg=audit(1234567890.123:456): pid=1234 uid=0 auid=1000 ses=1 msg='op=PAM:authentication acct="root" exe="/usr/sbin/sshd" hostname=192.168.1.100 addr=192.168.1.100 terminal=ssh res=success' |
3.3 审计记录保护
测评要求: 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。
测评方法
询问管理员是否对审计记录保护,并定期备份,备份在哪里,并且日志记录保存时间是否大于6个月。
审计日志保护配置
1 | # 设置审计日志权限 |
3.4 审计进程保护
测评要求: 应对审计进程进行保护,防止未经授权的中断。
测评方法
切换开放状态的账户(非root账户)进行测试,看能否中断审计、日志服务:
1 | # 测试非root用户能否停止审计服务 |
检查审计相关文件权限:
1 | ls -l /var/log/messages |
保护配置
1 | # 设置审计配置文件权限 |
4. 入侵防范
4.1 最小安装原则
测评要求: 应遵循最小安装的原则,仅安装需要的组件和应用程序。
测评方法
通过命令查看操作系统中已安装的程序包,询问是否有目前不需要的组件和应用程序:
1 | # 查看已安装的软件包 |
清理不需要的软件
1 | # 卸载不需要的软件包 |
4.2 关闭不需要的服务
测评要求: 应关闭不需要的系统服务、默认共享和高危端口。
测评方法
步骤1: 检查运行的服务
1 | # 使用管理员权限的身份登录Linux,查看运行的服务 |
步骤2: 检查高危端口
1 | # 检查21(FTP)、23(Telnet)端口的运行情况 |
关闭高危服务
1 | # 关闭Telnet服务 |
4.3 管理终端限制
测评要求: 应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。
测评方法
步骤1: 检查TCP Wrappers配置
1 | # 使用管理员权限的身份登录Linux,查看/etc/hosts.deny与/etc/hosts.allow |
步骤2: 检查SSH访问限制
1 | # 查看SSH配置 |
步骤3: 询问网络层面限制
可以通过询问的方式,看在网络层面有没有限制特定网段才能远程操作系统。
配置访问限制
1 | # 配置TCP Wrappers |
4.4 数据有效性检验
测评要求: 应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。
测评方法
由于是由应用系统对外提供输入接口,并通过源代码设置或其他硬件措施实现数据有效性校验功能,故服务器层面不适用此测评项。
4.5 漏洞管理
测评要求: 应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞。
测评方法
- 检查是否定期进行漏洞扫描(以漏扫报告为准),并且是否对重要大漏洞进行打补丁(补丁安装前在测试环境中进行测试)
检查已安装的补丁:
1 | # 查看安装的补丁 |
漏洞管理流程
1 | # 1. 定期漏洞扫描 |
4.6 入侵检测
测评要求: 应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。
测评方法
询问是否安装了主机入侵检测软件,能够识别哪些入侵行为并作出说明措施,让运维人员查询相关进程进行核查。
软件: 深信服EDR、卡巴斯基的Linux版
安全设备: 基于主机的IDS设备,或者网络拓扑上是否部署IDS、IPS
云: 是否购买安全产品,如:云盾、安骑士
入侵检测配置
1 | # 检查入侵检测软件进程 |
5. 恶意代码防范
5.1 恶意代码防护
测评要求: 应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断。
测评方法
询问是否安装了防病毒软件,倘若安装了,则让管理人员调出恶意代码软件的进程进行核实。
防病毒软件
Linux防病毒软件:
- ClamAV(开源)
- Sophos Antivirus
- Kaspersky Endpoint Security
- Trend Micro ServerProtect
安装配置ClamAV
1 | # 安装ClamAV |
6. 可信验证
6.1 可信根验证
测评要求: 可基于可信根对计算设备的系统引导程序、系统程序、重要配置参数和应用程序等进行可信验证,并在应用程序的关键执行环节进行动态可信验证,在检测到其可信性受到破坏后进行报警,并将验证结果形成审计记录送至安全管理中心。
测评方法
操作系统未涉及可信技术的使用,不适用。
注意: 如需实现可信验证,需要使用支持TPM(可信平台模块)的硬件和相应的软件支持。
7. 数据完整性
7.1 传输过程完整性
测评要求: 应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
测评方法
根据身份鉴别C项来写,涉及到别的例如审计数据的传输再另看。
完整性保护措施
SSH传输:
- SSH使用加密和完整性校验保证数据传输完整性
HTTPS传输:
- 使用TLS/SSL协议保证数据传输完整性
文件完整性校验:
1 | # 生成文件MD5值 |
7.2 存储过程完整性
测评要求: 应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等。
测评方法
操作系统能够保证自身数据存储的完整性。
文件完整性监控
1 | # 使用AIDE监控文件完整性 |
8. 数据保密性
8.1 传输过程保密性
测评要求: 应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
测评方法
根据身份鉴别C项来写。
保密性保护措施
SSH加密传输:
- SSH使用加密算法保证数据传输保密性
VPN加密传输:
- 使用VPN建立加密隧道
文件加密传输:
1 | # 使用GPG加密文件 |
8.2 存储过程保密性
测评要求: 应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。
测评方法
操作系统自身满足。
存储加密
1 | # 使用LUKS加密磁盘 |
9. 数据备份恢复
9.1 本地数据备份
测评要求: 应提供重要数据的本地数据备份与恢复功能。
测评方法
操作系统层面不适用。
注意: 数据备份通常由应用系统或数据库系统实现。
9.2 异地实时备份
测评要求: 应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地。
测评方法
操作系统不适用。
注意: 异地备份通常由应用系统、数据库系统或专门的备份系统实现。
9.3 系统高可用性
测评要求: 应提供重要数据处理系统的热冗余,保证系统的高可用性。
测评方法
询问管理员是否为服务器做冗余部署。
高可用方案
方案1: 双机热备
- Keepalived + Nginx/HAProxy
- Heartbeat + DRBD
方案2: 集群方案
- MySQL主从复制
- Redis Sentinel
- MongoDB副本集
方案3: 负载均衡
- LVS + Keepalived
- Nginx负载均衡
- HAProxy负载均衡
10. 剩余信息保护
10.1 鉴别信息清除
测评要求: 应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。
测评方法
linux操作系统自身能够保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。
安全配置
1 | # 配置swap加密 |
10.2 敏感数据清除
测评要求: 应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
测评方法
linux操作系统自身能够保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
安全清除工具
1 | # 使用shred安全删除文件 |
11. 安全加固脚本
11.1 综合加固脚本
1 |
|
12. 测评检查清单
12.1 身份鉴别检查清单
- 检查账户唯一性
- 检查密码策略配置
- 检查密码复杂度要求
- 检查登录失败锁定配置
- 检查会话超时配置
- 检查SSH服务启用
- 检查Telnet/FTP服务禁用
- 检查双因子认证配置
12.2 访问控制检查清单
- 检查默认账户禁用
- 检查root远程登录禁用
- 检查账户清理情况
- 检查权限分离配置
- 检查重要文件权限
- 检查SELinux配置
12.3 安全审计检查清单
- 检查auditd服务状态
- 检查rsyslog服务状态
- 检查审计规则配置
- 检查审计日志内容
- 检查审计日志保护
- 检查审计进程保护
12.4 入侵防范检查清单
- 检查已安装软件包
- 检查运行的服务
- 检查高危端口
- 检查访问限制配置
- 检查漏洞管理流程
- 检查入侵检测软件
实战优化


