Centos操作系统简介:
- CentOS是一个基于Linux的开源操作系统,于2004年推出。它是Red Hat Enterprise Linux(RHEL)的一个变种,适用于服务器和企业环境。CentOS的名称代表"Community Enterprise Operating System"。
- Linux常用命令
- 实验环境堡垒机
- 实验工具和软件分享
实验内容:
1. 身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
1)查看用户登录服务器的过程,是否对用户进行身份鉴别;
2)使用命令more /etc/passwd
,查看是否存在重复的用户名或UID;
[root@ENST ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
zhaoliang:x:1000:1000:zhaoliang:/home/zhaoliang:/bin/bash
3)核查用户口令是否具有复杂度要求和长度要求:执行more /etc/pam.d/system-auth
,查看pam_cracklib.so
或pam_pwquality.so
后是否进行复杂度和长度配置;
【注】:
pam_cracklib.so
或pam_pwquality.so
后设置的参数包括 minlen=8(最小长度为8位) 、 dcredit=-1(至少包括一个数字)、lcredit=-1(至少包括一个小写字母)、ucredit=-1(至少包括一个大写字母)、ocredit=-1(至少包括一个特殊字符)、enforce_for_root(即使是root用户设置密码,也强制执行复杂性策略);
auth required pam_tally2.so
deny=a(a为失败登录次数阀值) unlock_time=b(b为超出失败登录次数限制后,解锁的时间,单位为秒) even_deny_root(root用户失败登录次数,超过deny=a次后拒绝访问) root_unlock_time=c (与even_deny_root相对应的选项,c为root用户在登录失败次数超过限制后被锁定指定时间,单位为秒)
【补充说明】:
关于PAMLinux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持。在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证。PAM应用在许多程序与服务上,比如登录程序(login、su)的PAM身份验证(口令认证、限制登录),passwd强制密码,用户进程实时管理,向用户分配系统资源等。
PAM的主要特征是认证的性质是可动态配置的。PAM的核心部分是库(libpam)和PAM模块的集合,它们是位于文件夹/lib/security/中的动态链接库(.so)文件,以及位于/etc/pam.d/目录中(或者是/etc/pam.conf配置文件)的各个PAM模块配置文件。/etc/pam.d/目录中定义了各种程序和服务的PAM配置文件,其中system-auth
文件是PAM模块的重要配置文件,它主要负责用户登录系统的身份认证工作,不仅如此,其他的应用程序或服务可以通过include接口来调用它(该文件是system-auth-ac的软链接)。此外password-auth配置文件也是与身份验证相关的重要配置文件,比如用户的远程登录验证(SSH登录)就通过它调用。而在Ubuntu、SuSE Linux等发行版中,PAM主要配置文件是common-auth
、common-account
、common-password
、common-session
这四个文件,所有的应用程序和服务的主要PAM配置都可以通过它们来调用。
[root@ENST ~]# more /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
4)核查用户口令是否进行口令长度和有效期配置:执行more /etc/login.defs
|grep PASS_MAX_DAYS、more /etc/login.defs
|grep PASS_MIN_DAYS,more /etc/login.defs
|grep PASS_MIN_LEN、more /etc/login.defs
|grep PASS_WARN_AGE查看 PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_MIN_LEN 、 PASS_WARN_AGE的值;
【注】:
PASS\_MAX\_DAYS
(密码最长有效期) n (n代表天数,<=180)
PASS\_MIN\_DAYS
(密码最短有效期) 0 (登录密码最短修改时间,增加可防止非法用户短期内多次修改登录密码)
PASS\_MIN\_LEN
(密码最短长度) m (m 代表长度,>=8)
PASS\_WARN\_AGE
(登录密码过期前多少天提示修改) s (s 代表天数,>=5)
[root@ENST ~]# more /etc/login.defs
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
5)核查是否存在空口令:执行more /etc/shadow
:查看每一行第二列的值是否为空;
【注】:
shadow每一行第二列为:空,说明存在空口令;凝思操作系统默认口令:R0ck9
[root@ENST ~]# more /etc/shadow
root:$6$Exl9dqTNTKYeTHDg$wyb.2C.LOTCVd7XQlxCVa70aovIVq1lFp4AunNNjilmOP8.A1q.::0:999
99:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:19954::::::
dbus:!!:19954::::::
polkitd:!!:19954::::::
sshd:!!:19954::::::
postfix:!!:19954::::::
chrony:!!:19954::::::
zhaoliang:$6$PJVxMe45nz70HBUk$SaODQXIpt2KFNyOrIQdqTgmw3GQQbYj5RnM/::0:99999:7::::
6)结合工具验证的结果,是否存在空口令或弱口令。
7)存在弱口令、空口令或无身份鉴别机制的情况,判为高风险。
【说明:主要是看渗透测试是否发现弱口令,使用漏洞扫描设备存在用户被锁的风险,请慎重。】
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。
1)由于pam模块中其他限制多通过incloud应用system-auth文件配置,本次执行命令more /etc/pam.d/system-auth
查看配置参数,more /etc/pam.d/login
或more /etc/sshd
查看是否引用,核查是否进行了本地登录失败超出一定次数,账户锁定一段时间的配置;
【注】:
more /etc/pam.d/system-auth
在身份鉴别a)中已经展示,不再重复展示;
[root@ENST ~]# more /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth substack system-auth
auth include postlogin
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
[root@ENST ~]# more /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
2)执行命令more /etc/profile|grep TMOUT
,核查是否进行了会话空闲超时退出功能的配置。
【注】:
/etc/profile中对会话空闲超时退出功能进行了配置:TMOUT=n,(n的单位为秒)
[root@ENST ~]# more /etc/profile
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
判例场景:
1)内部局域网的系统,登录模块无登录失败处理功能,有口令长度、复杂度校验机制,可判部分符合,低风险;
2)内部局域网的系统,登录模块无登录失败处理功能,无口令长度、复杂度校验机制,可判部分符合,中风险;
3)若业务系统与互联网有通讯,且系统登陆模块未提供有效的口令暴力破解防范机制,可判不符合,高风险。
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听;
1)核查在远程管理过程中,通过哪些过程进行登录,每个阶段是否都保证了鉴别信息传输的保密性,是否采用了加密的协议进行通信,或是否对用户口令等信息进行传输加密;如果服务器使用SSH协议,执行命令ssh -V
,核查SSH协议是否是安全可靠的;
[root@ENST ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
2)使用命令systemctl list-unit-files|grep enabled
或chkconfig --list
,核查telnet是否开机启动;使用命令netstat -a |grep 23
查看,核查telnet服务当前是否运行。
【注】:
输出的开机启动项里不存在telnet服务;telnet服务当前未运行【注意:输出grep --color=auto telnet
,是查询telnet的进程,不是telnet服务的进程】。
root@ENST ~]# systemctl list-unit-files|grep enabled
auditd.service enabled
autovt@.service enabled
chronyd.service enabled
crond.service enabled
dbus-org.fedoraproject.FirewallD1.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
firewalld.service enabled
getty@.service enabled
irqbalance.service enabled
kdump.service enabled
lvm2-monitor.service enabled
microcode.service enabled
NetworkManager-dispatcher.service enabled
NetworkManager-wait-online.service enabled
NetworkManager.service enabled
postfix.service enabled
rhel-autorelabel-mark.service enabled
rhel-autorelabel.service enabled
rhel-configure.service enabled
rhel-dmesg.service enabled
rhel-domainname.service enabled
rhel-import-state.service enabled
rhel-loadmodules.service enabled
rhel-readonly.service enabled
rsyslog.service enabled
sshd.service enabled
SVT.service enabled
systemd-readahead-collect.service enabled
systemd-readahead-drop.service enabled
systemd-readahead-replay.service enabled
tuned.service enabled
dm-event.socket enabled
lvm2-lvmetad.socket enabled
lvm2-lvmpolld.socket enabled
default.target enabled
multi-user.target enabled
remote-fs.target enabled
runlevel2.target enabled
runlevel3.target enabled
runlevel4.target enabled
[root@ENST ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
root@ENST:~# netstat -tan | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 172.18.2.14:22 172.18.200.100:46095 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
root@ENST:~# netstat -tan | grep 23
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
3)在不可控网络中采用明文方式进行远程管理,鉴别信息明文传输时,判不符合,高风险。
【注】:
若仅允许本地管理,不允许远程管理,现场描述需与入侵防范C项以及数据完整性、保密性描述一致。
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现;
1)核查是否采用静态口令(用户名/口令)、密码技术(数字证书、动态口令)和生物技术(指纹、视网膜、人脸识别)三种中的两种或两种以上鉴别技术对用户进行身份鉴别;
2)核查采用的鉴别技术中是否有一种鉴别技术使用了密码技术实现,使用的密码产品是否具有销售许可证或检测证书。
【注意:如果使用静态口令(用户名/口令)和生物技术(指纹、视网膜、人脸识别)对用户进行身份鉴别,给中风险。】
2. 访问控制
a)应对登录的用户分配账户和权限;
1)执行命令more /etc/passwd
,核查系统中能够登录的账户,访谈各账户的权限,查看UID为0的用户;(详情查看身份鉴别a))
2)执行命令more /etc/ssh/sshd\_config |grep PermitRootLogin
,核查是否禁止root账户远程登录;
[root@ENST ~]# more /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin yes #此处是用#注释掉,默认情况下允许root账户远程登录
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
3)如果开启了ftp服务,执行命令more /etc/vsftpd/vsftpd.conf |grep anonymous\_enable
核查是否启用了ftp服务的匿名账户。
b)应重命名或删除默认账户,修改默认账户的默认口令;
1)执行命令more /etc/passwd
,核查能够登录的默认账户root是否被修改了账户名;(详情查看身份鉴别a)
2)访谈和核查是否修改了root用户的默认口令,并执行命令passwd -S root
,核查root账户的默认口令是否被修改。
【注】:
PS = Passworded
,表示已设置密码 LK = Locked
,表示已锁住密码 NP = No Password
,表示无密码
[root@ENST ~]# passwd -S root
root PS 1969-12-31 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
1)执行命令more /etc/passwd
,核查系统中的账户,访谈系统管理员是否存在多余的、过期的账户;(详情查看身份鉴别a)
2)核查系统中的账户,访谈系统管理员是否存在共享账户,是否实现账户与自然人的一一对应。
【注】:
有时即使是空口令,通过ssh也不一定能登录,核查/etc/ssh/sshd\_config文件 PasswordAuthentication yes PermitEmptyPasswords yes加上这些配置可以空口令SSH登录
[root@ENST ~]# chage -l root
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@ENST ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 192.168.56.205 三 9月 25 15:14:35 +0800 2024
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
halt **从未登录过**
mail **从未登录过**
operator **从未登录过**
games **从未登录过**
ftp **从未登录过**
nobody **从未登录过**
systemd-network **从未登录过**
dbus **从未登录过**
polkitd **从未登录过**
sshd **从未登录过**
postfix **从未登录过**
chrony **从未登录过**
[root@ENST ~]# last
root pts/0 192.168.56.205 Wed Sep 25 15:14 still logged in
root pts/0 192.168.56.205 Tue Sep 24 23:37 - 02:13 (02:36)
root pts/0 192.168.56.205 Tue Sep 24 16:47 - 20:31 (03:44)
reboot system boot 3.10.0-1160.119. Tue Sep 10 10:22 - 15:34 (15+05:11)
reboot system boot 3.10.0-1160.119. Sun Sep 1 15:28 - 10:22 (8+18:54)
reboot system boot 3.10.0-1160.119. Thu Aug 29 16:56 - 10:22 (11+17:26)
reboot system boot 3.10.0-1160.119. Fri Aug 23 17:02 - 13:00 (4+19:57)
root pts/1 192.168.49.200 Tue Aug 20 10:33 - 20:48 (10:14)
root pts/0 192.168.49.200 Tue Aug 20 09:17 - 12:28 (03:11)
root pts/1 192.168.49.200 Mon Aug 19 22:17 - 23:44 (01:26)
root pts/0 192.168.49.200 Mon Aug 19 21:31 - 00:34 (03:02)
root pts/0 192.168.49.200 Mon Aug 19 17:54 - 18:10 (00:16)
root tty1 Mon Aug 19 17:52 - 16:45 (3+22:52)
reboot system boot 3.10.0-1160.119. Mon Aug 19 17:52 - 16:45 (3+22:53)
root pts/0 192.168.49.200 Mon Aug 19 17:29 - crash (00:23)
root tty1 Mon Aug 19 17:26 - 17:42 (00:16)
reboot system boot 3.10.0-1160.el7. Mon Aug 19 17:24 - 16:45 (3+23:20)
wtmp begins Mon Aug 19 17:24:47 2024
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
1)访谈在操作系统中建立了哪些管理账户,核查各管理账户的管理权限是否是所需的最小权限;访谈和核查是否通过第三方系统(如堡垒机、3A/4A、权限管理系统和审计系统)建立了管理账户,并授予各管理账户所需的最小权限;
2)核查各管理账户是否实现了权限分离,各管理账户是否实现了权限的相互制约。
3)麒麟、凝思等国产操作系统设置了系统管理员sysadmin、安全管理员secadmin、审计管理员auditadmin,root仍为超级管理员。需核实系统管理员级安全管理员对于audit.log
、audit.rules
等文件的访问权限。
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
1)访谈和核查是否指定专门的授权人员配置访问控制策略;
2)执行以下命令,查看配置文件权限: ls -al /etc/shadow
ls -al /etc/passwd
ls -al /etc/sudoers
ls -al /etc/ssh/sshd\_config
ls -al /etc/rsyslog.conf
ls -al /etc/group
ls -al /etc/audit/audit.rules
ls -al /etc/login.defs
执行以下命令,查看可执行文件权限:ls -al /usr/bin/ ls -al /usr/sbin/ 核查授权主体是否按照访问控制策略设置访问规则,是否设置了合理的访问控制策略。执行命令“umask”,核查文件默认权限是否合理。
[root@ENST ~]# umask
0022
3)测试验证用户是否有可越权访问情形。
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
核查或访谈访问控制粒度是否达到主体为用户级或进程级,客体为文件、数据库表级。
g)应对主体、客体设置安全标记,并控制主体对有安全标记信息资源的访问。
1)执行命令more /etc/selinux/config|grep SELINUX
,核查selinux的配置情况,是否配置了强制访问控制功能;
2)执行命令more /etc/selinux/config|grep SELINUXTYPE
,核查SELINUXTYPE的值,是否有效实现主体对有安全标记信息资源的访问。
【注】:
SELINUX
的值为enforcing,配置了强制访问控制功能;
SELINUXTYPE
的值为targeted,使用策略为默认,主要限制网络服务。(部分符合)
SELINUXTYPE的
值为strict,限制每个进程。(符合)
SELINUXTYPE
的值为mimimum,限制部分网络服务。(部分符合)
SELINUXTYPE
的值为mls,多级安全限制,较为严格。(符合)
[root@ENST ~]# more /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3. 安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
1)执行命令systemctl status rsyslog
,核查系统日志是否正常运行;执行命令systemctl status auditd
,核查日志审计功能是否正常运行;
执行命令“systemctl list-unit-files|grep enabled|grep rsyslog”和“systemctl list-unit-files|grep enabled|grep auditd”,核查rsyslog和auditd是否加入开启启动项;
执行命令“uptime” ,核查系统时钟是否正确。
【注】:
rsyslog或syslog运行情况为running; auditd运行情况为running; rsyslog和auditd的对应值为enabled; 系统时钟正确。
root@ENST:~# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled)
Active: active (running) since 三 2024-10-02 09:27:51 CST; 1 weeks 6 days ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 613 (rsyslogd)
CGroup: /system.slice/rsyslog.service
└─613 /usr/sbin/rsyslogd -n
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
root@ENST:~# systemctl status auditd
● auditd.service - Security Auditing Service
Loaded: loaded (/lib/systemd/system/auditd.service; enabled)
Active: active (running) since 三 2024-10-02 09:27:49 CST; 1 weeks 6 days ago
Docs: man:auditd(8)
https://people.redhat.com/sgrubb/audit/
Process: 339 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS)
Main PID: 338 (auditd)
CGroup: /system.slice/auditd.service
└─338 /sbin/auditd -n
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
[root@ENST ~]# systemctl list-unit-files|grep enabled|grep rsyslog
rsyslog.service enabled
[root@ENST ~]# systemctl list-unit-files|grep enabled|grep auditd
auditd.service enabled
[root@ENST ~]#
2)核查安全审计功能是否覆盖到系统的所有用户;
3)执行命令more /etc/audit/audit.rules
或auditctl -l
,核查是否对重要用户行为和重要安全事件进行审计。
或通过访谈和核查,是否采用第三方审计系统,对所有用户行为进行审计,登录第三方审计系统,审计内容是否覆盖重要的用户行为和重要安全事件。
【注】:
audit.rules输出结果如下,即为没有规则(no rules)
[root@ENST ~]# more /etc/audit/audit.rules
## This file is automatically generated from /etc/audit/rules.d
-D
-b 8192
-f 1
[root@ENST ~]# auditctl -l
No rules
4)LINUX主机和数据库日志和审计是分开的,如果只开启了日志,未开启审计,算部分符合,中风险。
5)日志记录不全、有审计数据但无法直观展示等情况,判中风险。
6)关键设备(资产重要程度为非常重要的设备)无任何审计措施,或未开启任何审计功能,且未采用堡垒机、审计设备等措施,判不符合,高风险。
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
执行命令ausearch -i | less
,核查审计记录内容是否包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。
【注】:上述命令意思为输出审计文件为方便人阅读的模式,并通过管道符,定义一页一页阅读。
[root@ENST ~]# ausearch -i | less
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
1)执行命令more /etc/rsyslog.conf
,核查是否将系统日志转发到日志服务器或日志第三方日志审计系统中,核查日志保存时间是否大于6个月。
【注】:
/etc/rsyslog.conf中进行了转发配置:“*.info;mail.none @IP”,将日志转发到日志服务器中,或安装了第三方审计系统的客户端,将日志转发到审计系统中;日志在日志服务器或第三方审计系统的保存时间超过6个月,如运行不到6个月,记录日志共保存了几个月。
[root@ENST ~]# more /etc/rsyslog.conf
# rsyslog configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES ####
# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on
# File to store the position in the journal
$IMJournalStateFile imjournal.state
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
2)执行以下命令,核查日志文件的权限:(麒麟、凝思等国产操作系统需核查sysadmin以及secadmin对于以下文件的访问权限)
ls -al /var/log/audit/audit.log
ls -al /var/log/messages
ls -al /var/log/secure
是否能对日志文件进行非预期的删除、修改或覆盖等;
首先判断设备日志留存时间是否满足6个月,不满足6个月,直接判不符合,高风险。满足6个月的前提下,参照以下情况判定:
(若系统投运不足6个月,则在结果记录中应描述投运时间以及日志留存时间,按高风险判定,后面修正)
①访谈和核查日志服务器和第三方审计系统的设置权限,是否能对日志文件进行非预期的删除、修改或覆盖等。有集中审计或日志转存。判符合。
②核查系统中是否部署网络安全监测装置,是否将关键(非常重要)网络、安全设备将syslog发送至网监装置。若部署了网络安全监测装置,且交换机、网络设备日志均接入网监装置,可判部符合,中风险。
③核查系统/设备是否实现了日志定期备份,访谈运维人员日志定期备份的方式以及保存的地点,以及日志备份的责任人,若系统/设备已实现定期备份,且有专人负责,能够接触到备份日志的权限可控,可判定为部分符合,中风险;
④核查系统/设备是否实现了权限分离,配置独立的审计账户,赋予合理的权限,核查审计管理员是否可以查看、操作日志记录,若实现了权限分离且赋予了相应权限,可判部分符合,中风险,但结果记录中需描述日志备份情况。
⑤核查日志没有定期备份且设备没有权限分离(没有审计帐户)、设备日志策略不满足要求(日志内容、日志存储容量等)的情况,判定为不符合,高风险。
【注】:
/var/*log、/var/audit/audit.log、/var/messages、/var/secure等日志文件的权限不大于600。【说明:这条不符合,本测评项为不符合;这条符合,其他为不符合,本测评项也为不符合】日志服务器或第三方审计系统具有权限设置,非合理理由无法删除、修改或覆盖日志文件。
d)应对审计进程进行保护,防止未经授权的中断。
1)执行命令more /etc/sudoers
,核查是否将审计管理权限授予除审计管理员之外其他用户;
[root@ENST ~]# more /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
##
## This file must be edited with the 'visudo' command.
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/b
in/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/sy
stemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl d
isable
## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe
# Defaults specification
#
# Refuse to run if unable to disable echo on the tty.
#
Defaults !visiblepw
#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults always_set_home
Defaults match_group_by_gid
# Prior to version 1.8.15, groups listed in sudoers that were not
# found in the system group database were passed to the group
# plugin, if any. Starting with 1.8.15, only groups of the form
# %:group are resolved via the group plugin by default.
# We enable always_query_group_plugin to restore old behavior.
# Disable this option for new behavior.
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults env_keep += "HOME"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
2)使用非审计管理员的其他用户中断审计进程,是否成功;
3)访谈和核查是否部署第三方监控系统对rsyslog、auditd进行监控,发生中断时进行及时报警。
4. 入侵防范
a)应遵循最小安装的原则,仅安装需要的组件和应用程序;
1)执行命令“dpkg -l”查看是否安装了多余的组件和应用程序。
【说明:本测评项一般不宜发现多余的组件和应用程序,小技巧:有些组件或应用程序在安装时会生成一个用户,可以在查询用户时】
root@ENST:~# dpkg -l
b)应关闭不需要的系统服务、默认共享和高危端口;
1)执行命令“systemctl list-unit-files|grep enabled
”,核查是否开机启动了多余的服务;(省略)
执行命令“systemctl |grep running
",核查当前正在运行的服务中是否存在多余服务;或抽取常见的多余服务,执行命令:
ps -ef | grep talk
ps -ef | grep ntalk
ps -ef | grep pop
ps -ef | grep Imapd
ps -ef | grep sendmail
ps -ef | grep pop3
ps -ef | grep cupsd
ps -ef | grep bluetooth
root@ENST:~# systemctl |grep running
2)执行命令“netstat -anp
”,核查是否开启了多余的、高危的端口,如21、23、25等;执行命令“firewall-cmd --list-all
”或“iptables -L
”,核查防火墙策略配置,是否关闭了多余端口。
【注】:命令详解见Linux常用命令-netstat
[root@ENST ~]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1008/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1319/master
tcp 0 52 172.18.2.9:22 172.18.200.100:11698 ESTABLISHED 227478/sshd: root@p
tcp6 0 0 :::22 :::* LISTEN 1008/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1319/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 818/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 666/chronyd
udp6 0 0 ::1:323 :::* 666/chronyd
raw6 0 0 :::58 :::* 7 693/NetworkManager
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 13057 1/systemd /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 22286 1319/master public/pickup
unix 2 [ ACC ] STREAM LISTENING 22297 1319/master private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 22300 1319/master private/rewrite
unix 2 [ ACC ] STREAM LISTENING 22318 1319/master private/proxymap
unix 2 [ ACC ] STREAM LISTENING 22312 1319/master private/verify
unix 2 [ ACC ] STREAM LISTENING 22290 1319/master public/cleanup
unix 2 [ ] DGRAM 18720 666/chronyd /var/run/chrony/chronyd.sock
unix 2 [ ACC ] STREAM LISTENING 22333 1319/master private/error
unix 2 [ ACC ] STREAM LISTENING 22336 1319/master private/retry
unix 2 [ ACC ] STREAM LISTENING 22339 1319/master private/discard
unix 2 [ ACC ] STREAM LISTENING 22303 1319/master private/bounce
unix 2 [ ACC ] STREAM LISTENING 22342 1319/master private/local
unix 2 [ ACC ] STREAM LISTENING 22345 1319/master private/virtual
unix 2 [ ACC ] STREAM LISTENING 22306 1319/master private/defer
unix 2 [ ACC ] STREAM LISTENING 22348 1319/master private/lmtp
unix 2 [ ACC ] STREAM LISTENING 18469 1/systemd /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 22351 1319/master private/anvil
unix 2 [ ACC ] STREAM LISTENING 22354 1319/master private/scache
unix 2 [ ACC ] STREAM LISTENING 22309 1319/master private/trace
unix 2 [ ACC ] STREAM LISTENING 15423 1/systemd /run/lvm/lvmpolld.socket
unix 2 [ ACC ] STREAM LISTENING 13131 1/systemd /run/lvm/lvmetad.socket
unix 2 [ ] DGRAM 13151 1/systemd /run/systemd/shutdownd
unix 2 [ ACC ] STREAM LISTENING 22327 1319/master private/relay
unix 2 [ ACC ] SEQPACKET LISTENING 15461 1/systemd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 21110 693/NetworkManager /var/run/NetworkManager/private-dhcp
unix 2 [ ACC ] STREAM LISTENING 22321 1319/master private/proxywrite
unix 3 [ ] DGRAM 1429 1/systemd /run/systemd/notify
unix 3 [ ] STREAM CONNECTED 22341 1319/master
unix 3 [ ] STREAM CONNECTED 21856 1/systemd /run/systemd/journal/stdout
unix 3 [ ] STREAM CONNECTED 22305 1319/master
unix 3 [ ] STREAM CONNECTED 18043 657/systemd-logind
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;
1)执行命令“iptables -L”,核查是否在系统防火墙上进行对管理终端IP进行限制。或执行命令“more /etc/hosts.deny
”和“more /etc/hosts.allow
”,核查是否对管理终端IP进行限制;
【注】:若仅允许本地管理,不允许远程管理,现场描述需与身份鉴别C项以及数据完整性、保密性描述一致 。 iptables说明见详解
root@ENST:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@ENST:~# more /etc/hosts.allow
# /etc/hosts.allow: list of hosts that are allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: LOCAL @some_netgroup
# ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
root@ENST:~# more /etc/hosts.deny
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
# See the manual pages hosts_access(5) and hosts_options(5).
#
# Example: ALL: some.host.name, .some.domain
# ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "rpcbind" for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
#
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;
此项主要针对应用系统、系统管理软件的测评,不适用。
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;
1)访谈补丁分发的方式,核查定期进行系统漏洞扫描的报告和漏洞修补的记录,核查进行漏洞修补的记录;执行命令“ rpm -qa | grep patch”,核查补丁版本;
2)本操作系统在漏洞扫描中,是否发现高风险安全漏洞。
3)若该系统未进行过漏洞扫描,且放弃验证测试。无法确认设备是否存在高危漏洞并及时修补。按不符合算,判高风险
f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警;
1)访谈和核查操作系统上是否安装了主机入侵检测组件;
2)查看拓扑图,核查是否在重要网络节点处部署入侵检测系统探针,能够对本服务器的入侵行为进行检测;
3)核查部署的入侵检测系统对严重入侵行为是否具有报警功能。
4)未部署主机入侵检测组件或功能,但网络中部署了入侵检测装置,判部分符合,低风险。
5)未部署主机入侵检测组件或动能,且网络中也未部署入侵检测装置,判不符合,中风险。
5. 恶意代码防范
应采用免受恶意代码攻击的技术措施或主动免疫可信验证机制及时识别入侵和病毒行为,并将其有效阻断
1)访谈和核查系统是否安装了防恶意代码软件,如clamav,且运行正常;
2)核查防恶意代码软件的版本和病毒库版本是否进行了及时的更新。
6. 数据完整性
a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
经核查,外部与主机设备操作系统的数据传输包括:
远程管理主机设备操作系统,使用的传输协议,是否能够保证鉴别信息和重要配置数据在传输过程中的完整性;
针对传输过程,使用命令“ssh -Q mac
”查看ssh服务支持的消息完整性校验算法,包括MD5、SHA-1等密码算法等,通过这些算法对鉴别数据、重要配置数据的完整性进行保护的情况,可判定为符合。
与其他外部主机设备是否有鉴别数据和重要配置数据的传输,如果有,在传输过程中使用通信协议,是否能够保证鉴别信息和重要配置数据在传输过程中的完整性。
root@ENST:~# ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
umac-64@openssh.com
umac-128@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha1-96-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-md5-etm@openssh.com
hmac-md5-96-etm@openssh.com
umac-64-etm@openssh.com
umac-128-etm@openssh.com
b)应采用校验技术或密码技术保证重要数据在储存过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等
执行命令“more /etc/shadow
”,查看对口令加密使用的密码算法。(略)
【说明:Linux在"/etc/shadow"中对口令进行加密存储,但每个版本使用的加密算法不一样,主要有三类:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256。】
针对存储过程,鉴别信息采用MD5、SHA-256、SHA-512等密码算法(哈希算法)的情况,可判定为符合。
经核查,主机操作系统上存储的鉴别信息是否为采用哈希运算后的哈希值,保证鉴别信息的完整性;
或者主机操作系统上部署了保证重要文件完整性的组件或软件,保证鉴别信息、重要配置文件的完整性。未采用密码算法的,判例场景如下:1、鉴别数据明文存储,判不符合。
7. 数据保密性
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;
1)核查在远程管理过程中,通过哪些过程进行登录,每个阶段是否都保证了鉴别信息传输的保密性,是否采用了加密的协议进行通信,或是否对用户口令等信息进行传输加密;如果服务器使用SSH协议,执行命令“ssh -V”,核查SSH协议是否是安全可靠的;
2)使用命令“systemctl list-unit-files|grep enabled
”或“chkconfig --list
”,核查telnet、rsh、rlogin是否开机启动;使用命令“netstat -an”或“ps -ef”查看,核查telnet、rsh、rlogin服务当前是否运行。
针对传输过程,使用命令“ssh -Q cipher
”查看ssh服务支持的对称加密算法,包括AES、3DES等密码算法等,通过这些算法对鉴别数据的保密性进行保护的情况,可判定为符合。
未采用密码算法的,判例场景如下:
1、鉴别数据明文传输,网络层在远程通信有机密性保护。判低风险
2、应用层可以保障通信机密性保护,网络层无保障。判符合
3、网络层和应用层均无机密性保护。但网络可控,判中风险。
root@ENST:~# ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等;
执行命令“more /etc/shadow
”,查看对口令加密使用的密码算法。
【说明:Linux在"/etc/shadow"中对口令进行加密存储,但每个版本使用的加密算法不一样,主要有三类:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256。】
或者主机操作系统上部署了保证重要文件机密性的组件或软件,保证鉴别信息、重要配置文件的保密性;
针对存储过程,鉴别信息采用MD5、SHA-256、SHA-512等密码算法(哈希算法)的情况,可判定为符合。
未采用密码算法的,判例场景如下:1、鉴别数据明文存储,但网络可控,有严格管理措施,判中风险。
8. 数据备份恢复
a)应提供重要数据的本地数据备份与恢复功能;
1)核查是否对鉴别数据、配置数据(如:/etc/pam.d、/etc/passwd、/etc/sudoers、/etc/shadow、/etc/ssh/sshd_config等)进行备份,采用什么数据备份方式;
2)核查重要配置数据的备份周期是否合理,备份位置是否合理;
3)核查数据恢复记录,是否定期进行备份恢复,备份恢复是否成功。
b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份。
服务器的重要配置数据无异地实时备份需求,不适用。
c)应提供重要数据处理系统的热冗余,保证系统的高可用性;
1)访谈和核查是否是重要数据处理系统;
2)访谈和核查是否采取技术措施实现热冗余,是否采用技术措施保证系统的高可用性。
9. 剩余信息保护
b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除;
1)执行命令"more /etc/profile|grep HISTSIZE
",核查history命令是否被禁用;
【注】:1)HISTSIZE=0或1表示Linux系统不存储历史操作命令,存储敏感数据的存储空间能被释放
2)HISTSIZE=其他数据表示Linux系统存储历史操作命令
root@ENST:~# history
1 20240820-135023:ifconfig
2 20240820-135405:vim /etc/ssh/sshd_config
3 20240820-135445:/etc/init.d/ssh restart
4 20240820-135527:mount /dev/sr0 /mnt
5 20240820-135529:cd /mnt
6 20240820-135530:ll
7 20240820-135533:./SMTX_VM_TOOLS_INSTALL.sh
10. 个人信息保护
a)应仅采集和保存业务必需的用户个人信息;
b)应禁止未授权访问和非法使用用户个人信息。
根据【2021版】网安报告模版要求,个人信息安全在“数据资源”中进行测评,此项不适用
Comments NOTHING