Centos操作系统简介:

发布于 24 天前  37 次阅读


Centos操作系统简介:


实验内容:


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.sopam_pwquality.so 后是否进行复杂度和长度配置;
【注】:
pam_cracklib.sopam_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-authcommon-accountcommon-passwordcommon-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/loginmore /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 enabledchkconfig --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.logaudit.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.rulesauditctl -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版】网安报告模版要求,个人信息安全在“数据资源”中进行测评,此项不适用

Daniel_WRF
最后更新于 2024-11-05