code学习

linux等保三级检查命令

作者:网络安全晴雨表

一、身份鉴别

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复

杂度要求并定期更换;

1、应核查用户在登陆时是否采用了身份鉴别措施;

用户登录服务器需要使用账户+账户口令。

2、应核查用户列表确认用户身份标识是否具有唯一性;

(more /etc/passwd)

//查看命令结果,第三字段不存在相同数字、用户名不存在相同名称。

3、应核查用户配置信息或测试验证是否不存在空口令用户;

(more /etc/shadow)

//查看命令结果,红框内的乱码表示加密以后的账户口令

//红色框内的(!*)号代表该账户已锁定、或者禁用。

4、应核查用户鉴别信息是否具有复杂度要求并定期更换。

(more /etc/login.defs)

// 查看命令结果是否有设置密码长度,复杂度。

1)PASS_MAX_DAYS=90(密码登录有效期时间)

2)PASS_MIN_DAYS=0(密码最短修改时间)

3)PASS_MIN_LEN=8(密码最小长度)

4)PASS_WARN_AGE=7(密码过期前提前多少天提醒)

4.1、服务器密码复杂的策略

(more/etc/pam.d/system-auth)

//password requisite 里面设置密码相关的策略(pam _cracklib.so策略里)

retry=5(尝试登录次数)

authtok_type= difok=3(新密码与旧密码有多少位能一样)

minlen=7(密码长度)

ucreddir=-1 (最少包含一个大写字母)

lcredit=-3 (最少有三个小写字母)

dcredit=-3 (最少有三个数字)

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

1、应核查是否配置并启用了登录失败处理功能;

2、应核查是否配置并启用了限制非法登录功能,非法登录达到一定次数后采取特定动作,如账号锁定等;

本地登录的失败处理:

(more /etc/pam.d/system-auth)

(more /etc/pam.d/login)

使用SSH远程登录的失败处理:

(more /etc/pam.d/sshd)

//文件中包含auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_d

eny_root root_unlock_time=10

deny尝试登录次数

time锁定时间(秒)

even_deny root (锁定root账户)

2.1本地登录(system-auth文件)

2.2本地登录(login文件)

2.3远程SSH文件(sshd文件)

3、应核查是否配置并启用了登录连续超时及自动退出功能。

(more /etc/profile)

//文件中包含了(TMOUT=300)

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

1、是否运行SSHD服务。

1、是否运行SSHD服务

(systemctl status sshd.service)

或者

(service --status-all |grep sshd)

//检查命令结果显示为:

sshd.service - OpenSSH server daemon

Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)

Active: active (running) since 三 2021-07-14 15:56:20 CST; 43min ago

Main PID: 1414 (sshd)

//running 绿色表示正在运行

2、是否打开SSHD服务对应端口22端口

(netstat -an |grep 22)

//查看22端口是否正在被SSHD监听

3、是否打开了Telnet服务

(systemctl list-unit-files |grep telnet)

//查看命令结果是否存在telen服务(应为不存在)

4、是否打开了Telnet服务的对应端口23端口

(netstat -an |grep 23)

//查看23端口是否正在被Telnet监听(应为不存在)

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

1、应核查是否采用动态口令、数字证书、生物技术和设备指纹等两种或两种以上组合的鉴别技术对用户身份进行鉴别。

2、应核查其中一种鉴别技术是否使用密码技术来实现。

//询问管理员,除了输入密码登录还有什么方式能够进行身份鉴别,这个方法有没有采用密码技术。

二、访问控制

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

1、应核查是否为用户分配了账户和权限及相关设置情况;

(umask)

//查看服务器的umask=0027

2、应核查是否已禁用或限制匿名、默认账户的访问权限;

(more /etc/shadow)

//查看命令返回结果 第二字段为(!*)表示该账户已锁定

//uucp、nuucp、lp、adm、shutdown均为默认账户

3、查看文件的权限合理性;

(ls -l /etc/passwd)

(ls -l /etc/shadow)

(ls -l /etc/profile)

(ls -l /etc/inet.conf)

(ls -l /etc/rc3.d)

//(开头D为目录、L为链接、B设备文件)

//配置文件不大于644、可执行文件不大于755(r读、w写、x执行)

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

1、应核查是否已经重命名默认账户或默认账户已被删除;

(more /etc/shadow)

//查看命令结果,是否存在adm、lp、sync、shutdown、halt、mail、uucp、

operator、games、gopher、ftp等默认无用账户。

//默认情况下一般都没更改

2、应核查是否已修改默认账户的默认口令;

//询问管理员是否重命名默认账户与更改默认口令。

3、查看root账户能否远程登录;

(/etc/ssh/sshd_config)

//查看命令结果,应该为 PermitRootLogin NO(命令前面不能带#号,否则就算是有也是无效,#代表注释改行。)

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

1、应核查是否不存在多余或过期账户,管理员用户与账户之间是否一一对应;

//询问管理员,是否每个账号对应到个人

(more /etc/shadow)

//禁用或删除不需要的系统默认账户,如games,news,ftp,lp,halt

,shutdown等

//特权账户halt、shutdown是否已被删除

2、应测试验证多余的、过期的账户是否被删除或停用;

(more /etc/shadow)

//过期的账户,特权用户halt.shutdown已删除。

3、避免账户共用现象存在;

//询问管理员,是否一人一号登录系统

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

1、应核查是否进行角色划分;

//询问管理员是否建立了,系统管理员、安全管理员、审计管理员账户

2、应核查管理用户的权限是否已进行分离;

(more /etc/passwd)

//第一个段用户名

第二个段密码标志

第三个字段用户ID(0代表超级用户)

第四个字段用户组ID

第五个字段用户字端说明

第六个字段用户家目录

第七个字段用户的命令解释器

查看是否有除root账户外的第三个字段是0的

3、应核查管理用户权限是否为其工作任务所需的最小权限。

(more /etc/sudoers)

//Allow root to run any commands anywhere

root ALL=(ALL) ALL

系统管理员权限只分配了root用户

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

1、应核查是否由授权主体(如管理用户)负责配置访问控制策略;

// 询问系统管理员, 核查是否由指定授权人对操作系统的访问控制权限进行配置。

2、应核查授权主体是否依据安全策略配置了主体对客体的访问规则;

// 核查账户权限配置, 了解是否依据安全策略配置各账户的访问规则

3、应测试验证用户是否有可越权访问情形。

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

1、应核查访问控制策略的控制粒度是否达到主体为用户级别或进程级,客体为文件、数据库表、记录或字段级。

# ls – 1 /etc

# ls – 1 /tmp

# ls – 1 /etc/passwd

# ls – 1 /etc/shadow

# ls – 1 /etc/security/passwd

# ls – 1 /etc/security/login.cfg

# ls – 1 /etc/security/user

2、使用普通用户去编辑/etc/passwd文件看是否成功。

(vim /etc/passwd)

//普通用户无法编辑

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

1、应核查是否对主体、客体设置了安全标记;例如

(ls -Z(大写)/etc/passwd)

//-rw-r--r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd

//服务器对重要主体和客体设置安全标记

//第一部分身份标识system_u表示系统程序方面的标识

//user_u表示一般用户相关身份标识;第二部分角色定义文件进程和用户用途

//object_r表示文件或目录等资源

//system_r表示进程

//第三部分数据类型

//第四部分限制访问的需要(0-15级)(要求3级)

psswd_file_t:s0(此处起码需要3级)

2、应测试验证是否依据主体、客体安全标记控制主体对客体访问的强制访问控制策略。

(more /etc/selinux/config)

//查看SELinux是否开启

//SELinux配置

SELINUX=disable表示Selinux关闭

=ecforcing强制模式

=permissive宽容模式

三、安全审计

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

1、应核查是否开启了安全审计功能;

service rsyslog status(安全审计)

//查看命令结果Active: active (running) 表示正在运行

service auditd status(安全审计守护)

//查看命令结果Active: active (running) 表示正在运行

ps -ef |grep auditd(安全审计守护进程)

//查看命令结果发现有audit进程表示进程正在开启

auditctl -s(查看audit模块是否开启)

//查看命令结果(enabled 1“开启” 0“关闭”)

//安全审计

//安全审计守护

//安全审计守护进程

//安全审计模块

2、应核查安全审计范围是否覆盖到每个用户;

查看配置

(日志审核more /etc/rsyslog.conf)

//文件有相关的审计策略

(安全事件配more/etc/audit/filter.conf)(通常情况下没得这个文件夹)

//文件有相关的审计策略

(日志审核策more/etc/audit/audit.rules)(通常情况下显示—D -bXXX(xxx代表内存))

//文件里面有相关的安全审计策略

题外话:审计的相关资料

1、/etc/audit/auditd.conf 配置例子

#vi /etc/audit/auditd.conf

#第 5 行设置日志文件

log_file = /var/log/audit/audit.log

#第 11 行设置日志文件轮询的数目,它是 0~99 之间的数。如果设置为小于 2,则不会循环日志。如果没有设置 num_logs 值,它就默认为 0,意味着从来不循环日志文件

num_logs = 5

#第 14 行设置日志文件是否使用主机名称,一般选 NONE

name_format = NONE

#第五行设置日志文件大小,以兆字节表示的最大日志文件容量。当达到这个容量时,会执行 max_log_file _action 指定的动作

max_log_file = 6

#第 17 行设置日志文件到达最大值后的动作,这里选择 ROTATE(轮询)

max_log_file_action = ROTATE

2、auditctl 命令简介

auditctl 命令是 Linux 用户空间审计系统的最主要的部分,命令格式:

1

auditctl [选项] filter,action -S syscall -F condition -k label

主要参数说明见表 1

表 1. auditctl 命令选项

项目 可选参数 説明

filter user,exit,task,exclude filter 详细说明哪个内核规则匹配过滤器应用在事件中。以下是其中之一的与规则匹配的过

滤器: task、exit、user 以及 exclude

action always, never 是否审核事件(always 表示是)(never 表示否)

syscall all, 2, open 等 所有的系统调用都可以在/usr/include/asm/unistd_64.h 文件中找到。许多系统调用都能形成一个规则

condition euid=0, arch=b64 详细说明其他选项,进一步修改规则来与以特定架构、组 ID、进程 ID 和其他内容为基础的事件相匹配

label 任意文字 标记审核事件并检索日志

-S 表示系统调用号或名字

-F 表示规则域。

-k 表示设置审计规则上的过滤关键

3、

audit 审计规则分成三个部分:

控制规则:这些规则用于更改审计系统本身的配置和设置。

文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以审核对特定文件或目录的任何类型的访问。

系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用。

控制规则

控制规则可以在/etc/audit/audit.rules 中设置。主要包括:

-D #删除所有当前装载的审核规则#

-b 8192 #在内核中设定最大数量的已存在的审核缓冲区为 8Mb#

-e 2 #锁定审核配置#

文件系统规则

可以通过 auditctl 命令设置。监控文件系统行为(依靠文件、目录的权限属性来识别)

规则格式:

-w 路径

-p 权限

-k 关键字

其中-p 权限的动作分为四种

r — 读取文件或者目录。

w — 写入文件或者目录。

x — 运行文件或者目录。

a — 改变在文件或者目录中的属性。

例如要监控/etc/passwd 文件的修改行为,可以使用这个命令: #auditctl -w /etc/passwd -p wa

也可以自己将上述内容加入到文件/etc/audit/rules.d/audit.rules 中即可实现对该文件的监视。

3、应核查是否对重要的用户行为和重要安全事件进行审计。

日志总览;

(aureport -i)

//Range of time in logs:XXXXXXXXXX(日志中的时间范围)

Selected time for report:XXXXXXXXXX(选定的报告时间)

4、查看日志文件是否有6个月:

(more /var/log/audit/audit.log.X)(X代表变量,具体看系统存在几个日志文件)

(head -10 /var/log/audit/audit.log.X)

(tial -10 /var/log/audit/audit.log.X)

//可以使用head(查看前几行)、tail(查看末尾几行)两个命令

(msg=audit(1626333001)

//查询时间戳,找到最远记录

//https://tool.lu/timestamp/(时间戳查询器)

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

1、应核查审计记录信息是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。(tail -20/var/log/audit/audit.log(查看最近20行日志);

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

//审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果

type(消息类型),msg(时间、事件ID),syscall(系统调用类型),

success(此次syscall是否成功),exe(进程文件的执行路径)。

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

1、应核查是否采取了保护措施对审计记录进行保护;

(ls -l /var/log/audit)查看审计文件权限

(ls -l /var/log) 查看目录权限

//文件可以有读取权限,但不允许有写入权限。

2、应核查是否采取技术措施对审计记录进行定期备份,并核查其备份策略。

//询问管理员,查看相关配置。

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

1、应测试验证通过非审计管理员的其他账户来中断审计进程,验证审计进程是否受到保护。

(切换普通用户:service auditd stop停止守护进程)

//使用普通用户,结束审计进程失败

//部署了第三方审计工具, 可以实时记录审计日志, 管理员不可以对日志进行删除操作

四、入侵防范

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

1、应核查是否遵循最小安装原则;

(yum list installed)

//询问管理员当前的安装包是否存在多余、无用的服务

2、应核查是否未安装非必要的组件和应用程序;

(cat /etc/redhat-release)

//查看系统版本

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

1、应核查是否关闭了非必要的系统服务和默认共享;

(systemctl list-units --type=service --all)

//询问管理员是否存在多余服务

(关闭了shell、login、echo、talk、ntalk、sendmail服务。)

2、应核查是否不存在非必要的高危端口。

(netstat -ntlp或者netstat -anp)

//询问管理员是否存在多余端口

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

1、应核查配置文件或参数是否对终端接入范围进行限制。

(more /etc/hosts.deny与more /etc/hosts.allow)

//查看文件中是否存在ALL:ALL(禁止所有连接)

//sshd:192.168.1.10/255.255.255.0(允许这个IP连接)

2、是否采用了从防火墙设置了对接入终端的限制;

(systemctl status firewalld)

//查看防火墙是否开启(Active: active (running)正在运行 )

(firewall-cmd --zone=public --list-rich-rules)

//查看防火墙是否有策略

rule family IP类型

source address IP地址

port port 端口号

protocol 协议

reject 限制

accept 接触限制

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

1、应通过漏洞扫描、渗透测试等方式核查是否不存在高风险漏洞;

//WEB的服务使用工具进行扫描

2、应核查是否在经过充分测试评估后及时修补漏洞。

(more/var/log/secure | grep refused)

3、访谈补丁升级机制,查看补丁安装情况

(rpm -qa |grep patch)

//查看patch版本是多久,去官网核对。

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

1、应访谈并核查是否有入侵检测的措施;

(more/var/log/secure | grep refused)

//查看入侵线索

(Find/-name<daemon name>-print)

//入侵检测软件

2、应核查在发生严重入侵事件时是否提供报警。

//询问管理员,是否提供了入侵报警功能,如何报警。

3、查看主机防火墙状态systemctl status firewalld

(systemctl status firewalld)

//查看防火墙是否开启(Active: active (running)正在运行 )

五、恶意代码防范

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

1、应核查是否安装了防恶意代码软件或相应功能的软件,定期进行升级和更新防恶意代码库;

//询问管理员是否安装了防恶意代码软件或相应功能的软件,定期进行升级和更新防恶意代码库;

2、应核查是否采用主动免疫可信验证技术及时识别入侵和病毒行为;

//记录杀毒工具,软件版本、病毒库版本。

3、应核查当识别入侵和病毒行为时是否将其有效阻断。

//查看杀毒软件,杀毒记录。

六、可信验证

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

//不适用

七、 数据完整性

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

1、应核查系统设计文档,鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等在传输过程中是否采用了校验技术和密码技术保证完整性;

//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议)

2、应测试验证在传输过程中对鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等进行篡改、是否能否检测到数据在传输过程中的完整性收到破坏并能够及时恢复。

//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。

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

1、业务应用系统、数据库管理系统、中间件、系统管理软件及系统设计文档、数据安全保护系统、终端和服务器等设备中的操作系统及网络设备和安全设备中等。

//用校验技术或密码技术保证重要数据在存储过程中的完整性

八、数据保密性

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

1、应核查系统设计文档,鉴别数据、重要业务数据和重要个人信息等在传输过程中是否采用密码技术保证保密性;

//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。

2、应通过嗅探等方式抓取传输过程中的数据包,鉴别数据、重要业务数据和重要个人信息等在传输过程中是否进行了加密处理。

//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。

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

1、业务应用系统、数据库管理系统、中间件、系统管理软件及系统设计文档、数据安全保护系统、终端和服务器等设备中的操作系统及网络设备和安全设备中的重要配置数据等。

//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。

九、数据备份恢复

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

1、应核查是否安装备份策略进行本地备份;

//询问管理员是否设置了备份策略(时间、备份地点、备份策略(增量、全量))

2、应核查备份策略设置是否合理、配置是否正确;

//查看备份策略

3、应核查备份结果是否与备份策略一致;

//查看备份结果

4、应核查近期恢复测试记录是否能够进行正常的数据恢复。

//询问管理员,近期是否进行了备份恢复测试。

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

1应核查是否提供异地实时备份功能,并通过网络将重要配置数据、重要业务数据实时备份至备份场地。

//询问管理员是否有异地备份,备份策略是什么(时间、备份地点、策略(全量、增量))

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

1、访谈主机管理员哪些是重要数据处理系统, 数据处理系统是否有备份机制,是否采用本地热备份站点备份或异地活动互援备份

2、核查设备列表,重要数据处理系统是否采用热备服务器

//应核查重要数据处理系统

(包括边界路由器、边界防火墙、核心交换机、应用服务器和数据库服务器等)

是否采用热冗余方式部署。

十、剩余信息保护

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

1、应核查相关配置信息或系统设计文档,用户的鉴别信息所在的存储空间被释放或重新分配前是否得到完全清除。

//默认符合

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

1、应核查相关配置信息或系统设计文档,敏感数据所在的存储空间被释放或重新分配给其他用户前是否得到完全清除。

//默认符合

十一、个人信息保护

a) 应仅采集和保存业务必需的用户个人信息;

1、应核查采集的用户个人信息是否是业务应用必须的;

2、应核查是否制定了相关用户个人信息保护的管理制度和流程。

//不适用

b) 应禁止未授权访问和非法使用用户个人信息;

1、应核查是否采用技术措施限制对用户个人信息的访问和使用;

2、应核查是否制定了有关用户个人信息保护的管理制度和流程;

//不适用