赞
踩
指引:1.观察管理员登录方式。2.查看系统配置,记录配置参数。(more /etc/pam.d/system-auth、more /etc/login.defs)
用户登录服务器需要使用账户+账户口令。
命令:more /etc/passwd
//查看命令结果,第三字段不存在相同数字、用户名不存在相同名称。
more /etc/shadow
//查看命令结果,红框内的乱码表示加密以后的账户口令
//红色框内的(!*)号代表该账户已锁定、或者禁用。
命令:more /etc/pam.d/system-auth
//password requisite 里面设置密码相关的策略(pam _cracklib.so策略里),因为真正要对密码复杂性进行限制,还需要cracklib来完成.
retry=5(用户有5次出错的机会)
difok=3(新密码与旧密码有多少位能一样)
minlen=8(最少密码长度)
ucreddir=-1 (最少包含一个大写字母,如果去掉减号就是最多只能包含一个大写字母)
lcredit=-3 (最少有三个小写字母)
dcredit=-3 (最少有三个数字)
dictpath=/usr/share/cracklib/pw_dict(密码字典)
修改前
修改后
linux密码策略详解参考:linux密码策略详解_lose的技术博客_51CTO博客
命令:more /etc/login.defs
// 查看命令结果是否有设置密码长度,复杂度。
cat /etc/login.defs
初始配置
1)PASS_MAX_DAYS 99999
2)PASS_MIN_DAYS 0
3)PASS_MIN_LEN 5
4)PASS_WARN_AGE 7
更改后的配置
1)PASS_MAX_DAYS 90 (密码登录有效期时间)
2)PASS_MIN_DAYS 30 (密码最小过期天数)
3)PASS_MIN_LEN 8 (密码最小长度)
4)PASS_WARN_AGE=7(密码过期前提前多少天提醒)
修改前
修改后
指引:1.以root身份登录进入Linux,查看文件内容:cat /ete/pam.d/system-auth 2.查看/etc/profile中的TIMEOUT环境变量,是否配置超时锁定参数
本地登录的失败处理:
more /etc/pam.d/system-auth
more /etc/pam.d/login
使用SSH远程登录的失败处理:
more /etc/pam.d/sshd
命令:more /etc/pam.d/system-auth
注意添加的位置,要写在第一行
简要说明:帐户登录连续 10 次失败,就统一锁定 150秒,150 秒后可以解锁,root账户的锁定时间为10秒。
如果不想限制 root 帐户,可以把 even_deny_root 和root_unlock_time这两个参数去掉。
root_unlock_time 表示 root 帐户的锁定时间,onerr=fail 表示连续失败,deny=10,表示 超过10次登录失败即锁定。
修改前
修改后
命令:more /etc/pam.d/login
修改前
修改后
命令 :more /etc/pam.d/sshd
修改前
修改后
命令:more /etc/profile
将以下命令写到/etc/profilez的末尾
export TMOUT=300 #300秒无操作自动退出登录
readonly TMOUT #将值设置为readonly 防止用户更改,在shell中无法修改TMOUT
指引:1.访谈系统管理员,进行远程管理的方式。2.以root身份登录进入Linux查看是否运行了sshd服务,service sshd status若未使用SSH方式进行远程管理,则查看是否使用了Telnet 方式进行远程管理service telnet status, 查看是否存在Telnet服务
2.以root身份登录进入Linux查看是否运行了sshd服务
systemctl status sshd.service 或者 service --status-all |grep sshd 或者 service sshd status
//检查命令结果显示为:
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Thu 2022-05-1213:16:05 CST; 4 months 2 days ago
//running 绿色表示正在运行
netstat -an |grep 22 //查看22端口是否正在被SSHD监听
命令:service sshd status
netstat -an |grep 23 //查看23端口是否正在被Telnet监听(应为不存在)
指引:访谈和核查系统管理员在登录操作系统的过程中使用了哪些身份鉴别方法,是否采用了两种或两种以上组合的鉴别技术,如口令教字证书Ukey、令牌、指纹等,是否有一种鉴别方法在鉴别过程中使用了密码技术。
指引:查看more /etc/passwd文件中可登录用户,并访谈配合人员各个账户的用途及权限。
more /etc/shadow
//查看命令返回结果 第二字段为(!*)表示该账户已锁定
//uucp、nuucp、lp、adm、shutdown均为默认账户
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执行)
指引:1.查看more /etc/passwd文件中,默认账户是否禁用或者重命名。2.利用命令cat /etc/ssh/sshd_config | grep PermitRootLogin查看root是否已禁止远程登录,并访谈配合人员默认账户口令组成。
more /etc/shadow
//查看命令结果,是否存在adm、lp、sync、shutdown、halt、mail、uucp、
operator、games、gopher、ftp等默认无用账户,默认情况下都没有更改。
询问管理员是否重命名默认账户与更改默认口令。
cat /etc/ssh/sshd_config | grep PermitRootLogin
//查看命令结果,应该为 PermitRootLogin NO(命令前面不能带#号,否则就算是有也是无效,#代表注释改行。)
指引:查看more /etc/passwd文件中可登录用户,并访谈配合人员各个账户的用途及权限。
//询问管理员,是否每个账号对应到个人
more /etc/shadow
//禁用或删除不需要的系统默认账户,如games,news,ftp,lp,halt,shutdown等
//特权账户halt、shutdown是否已被删除
询问管理员,是否一人一号登录系统
指引:查看more /etc/passwd文件中可登录用户,并访谈配合人员各个账户的用途及权限。
询问管理员是否建立了,系统管理员、安全管理员、审计管理员账户
more /etc/passwd
//第一个段用户名
第二个段密码标志
第三个字段用户ID(0代表超级用户)
第四个字段用户组ID
第五个字段用户字端说明
第六个字段用户家目录
第七个字段用户的命令解释器
查看是否有除root账户外的第三个字段是0的
more /etc/sudoers
//Allow root to run any commands anywhere
root ALL=(ALL) ALL
系统管理员权限只分配了root用户
指引:访谈系统管理员,是否指定授权人对操作系统访问控制权限进行配置
// 询问系统管理员, 核查是否由指定授权人对操作系统的访问控制权限进行配置。
// 核查账户权限配置, 了解是否依据安全策略配置各账户的访问规则
指引:1.使用“ls -1文件名”命令,查看重要文件和目录权限设置是否合理。(对于Linux系统已经对一些默认账户和系统文件分配了不同的权限,也就是说主体已经达到了用户级,客体已经达到了文件级,该项主要检查新建用户和文件是否存在权限过大、权限滥用的情况。)
ls –l /etc
ls –l /tmp
ls –l /etc/passwd
ls –l /etc/shadow
ls –l /etc/security/passwd
ls –l /etc/security/login.cfg
ls –l /etc/security/user
ls -l /etc/profile
指引:核查操作系统中SELinux的状态(more /etc/selinux/config | grep SELINUX)
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级)
more /etc/selinux/config | grep SELINUX
//查看SELinux是否开启
//SELinux配置
SELINUX=disable 表示Selinux关闭
=ecforcing 强制模式
=permissive 宽容模式
指引:1.利用命令service rsyslog status查看日志服务状态是否开启。2.利用命令service auditd status查看审计服务状态是否开启。3.利用命令auditctl –l 查看审计规则 。
service rsyslog status(日志服务状态)
//查看命令结果Active: active (running) 表示正在运行
service auditd status(安全审计服务状态)
//查看命令结果Active: active (running) 表示正在运行
ps -ef |grep auditd(安全审计守护进程)
//查看命令结果发现有audit进程表示进程正在开启
auditctl -s(查看audit模块是否开启)
//查看命令结果(enabled 1“开启” 0“关闭”)
利用命令auditctl -l 查看审计规则
查看配置
日志审核:more /etc/rsyslog.conf
//文件有相关的审计策略
(安全事件配more/etc/audit/filter.conf)(通常情况下没得这个文件夹)
//文件有相关的审计策略
(日志审核策more/etc/audit/audit.rules)(通常情况下显示—D -bXXX(xxx代表内存))
//文件里面有相关的安全审计策略
日志总览:
aureport -i
//Range of time in logs:XXXXXXXXXX(日志中的时间范围)
Selected time for report:XXXXXXXXXX(选定的报告时间)
指引:利用命令cat /var/log/audit/audit.log查看系统记录的日志内容。
//审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果
type(消息类型),msg(时间、事件ID),syscall(系统调用类型),success(此次syscall是否成功),exe(进程文件的执行路径)。
指引:访谈配合人员审计记录的存储、备份和保护的措施,是否将操作系统日志定时发送到日志服务器上等,并使用syslog方式或snmp方式将日志发送到日志服务器。如果部署了日志服务器,登录日志服务器查看操作系统的日志是否在收集的范围内,备份保留时长最少要达到六个月。(查看有没有配置syslog:/etc/rsyslog.conf)
(ls -l /var/log/audit)查看审计文件权限
(ls -l /var/log) 查看目录权限
//文件可以有读取权限,但不允许有写入权限。
访谈配合人员审计记录的存储、备份和保护的措施,是否将操作系统日志定时发送到日志服务器上等,并使用syslog方式或snmp方式将日志发送到日志服务器。如果部署了日志服务器,登录日志服务器查看操作系统的日志是否在收集的范围内,备份保留时长最少要达到六个月。(查看有没有配置syslog:/etc/rsyslog.conf)
(more /var/log/audit/audit.log.X)(X代表变量,具体看系统存在几个日志文件)
(head -10 /var/log/audit/audit.log.X)
(tail -10 /var/log/audit/audit.log.X)
//可以使用head(查看前几行)、tail(查看末尾几行)两个命令
(msg=audit(1626333001)
//查询时间戳,找到最远记录
//https://tool.lu/timestamp/(时间戳查询器)
指引:1)访谈对审计进程监控和保护的措施。2)测试使用非安全审计员中断审计进程,查看审计进程的访问权限是否设置合理。3)查看是否有第三方系统对被测操作系统的审计进程进行监控和保护。
(切换普通用户:service auditd stop停止守护进程)
//使用普通用户,结束审计进程失败
//部署了第三方审计工具, 可以实时记录审计日志, 管理员不可以对日志进行删除操作
指引:利用命令yum list installed查看安装的插件和软件包。(Linux一般都是最小安装,询问有没有安装和业务无关的软件)
利用命令yum list installed查看安装的插件和软件包
//询问管理员当前的安装包是否存在多余、无用的服务
cat /etc/redhat-release
//查看系统版本
指引:1.利用命令netstat -ntlp查看开启的端口。2.利用命令systemctl | grep running查看正在运行的服务。
命令 systemctl list-units --type=service --all 或者 systemctl | grep running
//询问管理员是否存在多余服务(关闭了shell、login、echo、talk、ntalk、sendmail服务。)
netstat -ntlp或者netstat -anp //询问管理员是否存在多余端口
要求:操作系统通过堡垒机白名单对服务器接入范围进行了限制,仅固定网段能够远程管理设备。
指引:采用查看方式,在root权限下,使用命令more、cat或vi查看/etc/ hosts.deny 中是否有“ALL: ALL”(禁止所有的请求)查看/etc/hosts.allow中,是否有如下配置(举例):sshd:192.168.1.10/255.255.255.0;http://gate.openarch.com限制ip及其访问方式。
etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。
我们通常只对管理员开放SSH登录,那我们就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。
- $ cat /etc/hosts.deny |head -n 20
- #
- # hosts.deny This file contains access rules which are used to
- # deny connections to network services that either use
- # the tcp_wrappers library or that have been
- # started through a tcp_wrappers-enabled xinetd.
- #
- # The rules in this file can also be set up in
- # /etc/hosts.allow with a 'deny' option instead.
- #
- # See 'man 5 hosts_options' and 'man 5 hosts_access'
- # for information on rule syntax.
- # See 'man tcpd' for information on tcp_wrappers
- all:all:deny //拒绝所有服务
设置完拒绝所有人连接后,设置只允许管理员连接
- [root@localhost ~]# more /etc/hosts.allow
- #
- # hosts.allow This file contains access rules which are used to
- # allow or deny connections to network services that
- # either use the tcp_wrappers library or that have been
- # started through a tcp_wrappers-enabled xinetd.
- #
- # See 'man 5 hosts_options' and 'man 5 hosts_access'
- # for information on rule syntax.
- # See 'man tcpd' for information on tcp_wrappers
- sshd:192.168.1.*:allow //表示允许192.168.1.*一个ip段连接sshd服务
- all:192.168.1.11 //表示接受11这个ip的所有请求!
注:当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准。
systemctl status firewalld
//查看防火墙是否开启(Active: active (running)正在运行 )
firewall-cmd --zone=public --list-rich-rules
//查看防火墙是否有策略
rule family IP类型
source address IP地址
port 端口号
protocol 协议
reject 限制
accept 接触限制
合规实践:应对在应用系统输入、上传、传输的数据进行校验,防止XSS、SQL注入、可执行文件上传等安全事件发生,可通过代码层面或应用框架进行过滤限制,或通过高可用性的WEB应用防护措施进行防护。
指引:询问配合人员有没有定期做漏洞扫描,如果有需要他提供漏扫报告,查看有没有高风险问题,如果有,看有没有进行修复。
//WEB的服务使用工具进行扫描
more /var/log/secure | grep refused
rpm -qa |grep patch //查看patch版本是多久,去官网核对
指引:询问配合人员是否安装了主机入侵检测软件,查看已安装的主机入侵检查系统的配置情况,是否具备报警功能。询问并查看是否有第三方入侵检测系统,如IDS、IPS,查看主机防火墙状态systemctl status firewalld(是否开启防火墙)。
指引:询问并查看系统中安装了什么防病毒软件。询问配合人员病毒库是否经常更新。查看病毒库的最新版本更新日期是否超过一个月。应核查是否采用主动免疫可信验证技术及时识别入侵和病毒行为,应核查当识别入侵和病毒行为时是否将其有效阻断。
指引:询问配合人员有没有在硬件层面用到可信根芯片或硬件。
指引:1.采用本地登录方式,不存在鉴别信息在网络传输时被窃听的风险。2.登录(堡垒机/VPN)使用(HTTPS/HTTP)协议,对远程传输的鉴别信息进行加密;3.Linux远程管理采用SSH协议,则支持完整性保护。
//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。
指引: Linux操作系统鉴别数据和配置数据存储默认满足存储完整性要求。
//用校验技术或密码技术保证重要数据在存储过程中的完整性
//询问管理员,重要数据在传输的时候使用什么协议(Linux一般使用SSH协议),是否有检查机制。
指引:cat /etc/shadow:核查用户口令是否加密存储,以及所使用的加密算法。
指引:询问配合人员:
1)重要数据的备份和恢复策略是什么;
2)核查备份策略设置是否合理、配置是否正确;
3)核查备份结果是否与备份策略一致;
4)核查近期恢复测试记录,查看是否能够进保正常的数据恢复。
指引:1.访谈和查看操作系统配置数据的异地备份措施、存储位置、备份频率、保留时长等;
2..访谈和查看数据恢复措施和恢复演练记录。
//询问管理员是否有异地备份,备份策略是什么(时间、备份地点、策略(全量、增量))
指引:检查拓补图和资产表,涉及重要数据处理的主机是否有热备机器或集群等。
//应核查重要数据处理系统(包括边界路由器、边界防火墙、核心交换机、应用服务器和数据库服务器等)是否采用热冗余方式部署。
//linux默认符合
//linux默认符合
1、应核查采集的用户个人信息是否是业务应用必须的
2、应核查是否制定了相关用户个人信息保护的管理制度和流程
1、应核查是否采用技术措施限制对用户个人信息的访问和使用
2、应核查是否制定了有关用户个人信息保护的管理制度和流程
- #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

- auditctl 命令是 Linux 用户空间审计系统的最主要的部分,命令格式:
- auditctl [选项] filter,action -S syscall -F condition -k label
主要参数说明见下表,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 表示设置审计规则上的过滤关键
- 控制规则:这些规则用于更改审计系统本身的配置和设置。
- 文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以审核对特定文件或目录的任何类型的访问。
- 系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用。
控制规则可以在/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 中即可实现对该文件的监视。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。