等保测评命令——Oracle Solaris

各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言!

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等保2.0三级 标准,针对 Oracle Solaris 11.4/11.3/10 给出可直接落地的测评命令清单。

版本说明:Solaris 11使用IPS包管理系统和SMF服务管理,Solaris 10使用SVCS和SVR4包管理


一、身份鉴别(8.1.4.1)

1.1 账户与密码策略

测评项Solaris 11命令Solaris 10命令达标判据
查看用户账户cat /etc/passwd / getent passwd相同无空账户,UID唯一
检查密码策略passwd -s username / userattrpasswd -s / grep username /etc/shadow启用复杂度,定期更换
查看密码过期userattr -S password-historypasswd -f username≤90天
检查空口令logins -plogins -p无输出

详细命令:

# 1. 查看所有用户账户(Solaris 11/10通用)
cat /etc/passwd
getent passwd

# 2. 检查空口令账户(关键命令)
logins -p
# 输出应为空,如有输出则为空口令用户

# 3. 查看无效/过期账户
logins -x
# 或查看过期密码
logins -d

# 4. 查看系统用户与角色(Solaris特有RBAC)
cat /etc/user_attr
# 或
userattr -S
# 检查:roles profiles

# 5. 查看特定用户密码状态
passwd-s username
# 输出示例:
# username PS 01/15/24 0 90 7 -1  # PS=密码锁定,90天最大使用期,7天警告期

# 6. 查看密码策略配置(Solaris 11使用user_attr)
userattr -S password-history
userattr -S password-minlength
userattr -S password-minalpha
userattr -S password-minnumeric

# 7. 查看/etc/default/passwd配置
cat /etc/default/passwd
# 关键参数:
# PASSLENGTH=8          # 最小长度
# MINALPHA=2            # 最少字母
# MINDIGIT=1            # 最少数字
# MINUPPER=1            # 最少大写
# MINLOWER=1            # 最少小写
# MINNONALPHA=1         # 最少非字母数字
# MAXWEEKS=13           # 最大使用周数(约90天)
# MINWEEKS=1            # 最小使用周数
# WARNWEEKS=1           # 警告周数

# 8. 检查密码哈希算法(Solaris 11默认SHA512)
grep CRYPT /etc/security/policy.conf
# 或
cat /etc/security/policy.conf |grep CRYPT_DEFAULT
# 期望:CRYPT_DEFAULT=6  (SHA512)

# 9. 查看PAM配置(Solaris使用Solaris PAM)
cat /etc/pam.conf
# 或Solaris 11的PAM目录
ls /etc/pam.d/
cat /etc/pam.d/login
cat /etc/pam.d/other

# 10. 检查密码字典检查
grep"pam_authtok_check" /etc/pam.conf
# 或
cat /etc/pam.d/passwd |grep cracklib

1.2 登录失败处理与会话超时

测评项Solaris 11命令Solaris 10命令达标判据
查看登录失败记录lastb / failloglast / lastb记录完整
检查账户锁定userattr lock_after_retriesgrep LOCK /etc/security/policy.conf3-5次失败锁定
查看会话超时userattr idlecheck / tmoutecho $TMOUT / cat /etc/profile≤10分钟
检查SSH超时sshd -T / cat /etc/ssh/sshd_config相同ClientAliveInterval 300
# 11. 查看登录失败记录(需启用审计)
lastb
# 或查看详细登录历史
last -a

# 12. 查看当前登录用户
who
w
# 或详细查看
whodo

# 13. 检查账户锁定策略(Solaris 11)
userattr -S lock_after_retries
# 或在user_attr中查看
grep"lock_after_retries" /etc/user_attr

# 14. 查看/etc/security/policy.conf中的锁定配置
cat /etc/security/policy.conf |grep-E"LOCKOUT|RETRIES"
# 期望:
# LOCK_AFTER_RETRIES=YES
# RETRIES=3

# 15. 检查用户空闲超时(Solaris特有idletime)
userattr -S idletime
# 或在/etc/user_attr中配置
grep"idletime" /etc/user_attr

# 16. 查看系统级超时配置
cat /etc/profile |grep-itimeout
cat /etc/profile |grep TMOUT
# 期望:export TMOUT=600

# 17. 检查SSH会话超时
cat /etc/ssh/sshd_config |grep-E"ClientAlive|TCPKeepAlive"
# 期望:
# ClientAliveInterval 300
# ClientAliveCountMax 0
# TCPKeepAlive no

# 18. 查看SSH登录失败处理
cat /etc/ssh/sshd_config |grep-E"MaxAuthTries|PermitRootLogin"
# 期望:
# MaxAuthTries 3
# PermitRootLogin no
# 或PermitRootLogin prohibit-password

1.3 远程管理安全

测评项命令达标判据
检查SSH服务svcs ssh / service ssh status在线,仅v2
禁用Telnetsvcs telnet禁用或未安装
检查FTP服务svcs ftp / svcs proftpd禁用或使用SFTP
查看控制台安全cat /etc/default/login安全设置
# 19. 检查SSH服务状态(Solaris 11 SMF)
svcs ssh
# 或Solaris 10
svcadm enablessh
svcs -a|grepssh

# 20. 查看SSH详细配置
cat /etc/ssh/sshd_config |grep-v"^#"|grep-v"^$"
# 关键检查:
# Protocol 2
# Ciphers aes256-ctr,aes192-ctr,aes128-ctr
# MACs hmac-sha2-512,hmac-sha2-256
# KexAlgorithms ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256

# 21. 检查Telnet服务(应禁用)
svcs telnet
# 或
inetadm -l telnet
# 期望:disabled或未安装

# 22. 检查FTP服务(应禁用或使用vsftpd/sftpd)
svcs ftp
svcs -a|grepftp
# 或查看inetd服务
inetadm -l|grepftp

# 23. 查看控制台安全设置
cat /etc/default/login
# 关键参数:
# CONSOLE=/dev/console    # 仅控制台可root登录
# PASSREQ=YES             # 要求密码
# SYSLOG=YES              # 记录日志
# DISABLETIME=900         # 登录失败禁用时间(秒)
# RETRIES=3               # 重试次数
# LOCK_AFTER_RETRIES=YES  # 失败后锁定

# 24. 检查直接root登录限制
cat /etc/default/login |grep CONSOLE
# 应设置:CONSOLE=/dev/console 或更严格

# 25. 查看SSH公钥认证配置
cat /etc/ssh/sshd_config |grep-E"PubkeyAuthentication|AuthorizedKeysFile"
# 期望:PubkeyAuthentication yes

二、访问控制(8.1.4.2)

2.1 权限管理与RBAC(Solaris特有)

Solaris具有强大的 RBAC(Role-Based Access Control) 系统,这是其区别于Linux的重要特性。

测评项命令达标判据
查看角色定义cat /etc/user_attr / roles角色分离清晰
检查配置文件cat /etc/security/prof_attr最小权限原则
查看授权cat /etc/security/auth_attr授权细化
检查执行属性cat /etc/security/exec_attr命令级控制
# 26. 查看RBAC用户属性
cat /etc/user_attr
# 格式:username:::type=role;roles=role1,role2;profiles=All
# 检查:root是否直接使用,是否有分离的管理角色

# 27. 查看系统角色
roles
# 或
cat /etc/user_attr |greptype=role

# 28. 查看配置文件(Profiles)
cat /etc/security/prof_attr
# 检查预定义配置文件:System Administrator, Operator, Basic Solaris User等

# 29. 查看授权定义
cat /etc/security/auth_attr |head-20
# 检查:solaris.* 授权命名空间

# 30. 查看执行属性(命令级授权)
cat /etc/security/exec_attr |grep"System Administrator"
# 检查:哪些命令可被特定profile执行

# 31. 查看用户配置文件分配
profiles username
# 或
userattr profiles username

# 32. 查看用户授权
auths username
# 或
userattr auths username

# 33. 检查root角色分离(最佳实践)
grep"^root:" /etc/user_attr
# 期望:root:::type=normal;roles=root; 或更严格的角色分配

# 34. 查看/etc/sudoers(如使用sudo替代RBAC)
cat /etc/sudoers
visudo -c# 检查语法

2.2 文件系统权限与ACL

Solaris支持丰富的文件系统安全特性,包括 ZFS ACL扩展属性 等。

# 35. 查看关键文件权限
ls-la /etc/passwd /etc/shadow /etc/user_attr
# 期望:
# -rw-r--r-- 1 root sys  /etc/passwd
# -r-------- 1 root sys  /etc/shadow
# -rw-r--r-- 1 root sys  /etc/user_attr

# 36. 查看文件ACL(Solaris支持POSIX和NFSv4 ACL)
getfacl /etc/passwd
# 或ZFS文件系统
ls-V /etc/passwd  # 显示详细ACL

# 37. 查看ZFS文件系统安全属性
zfs get all rpool/ROOT/solaris |grep-E"aclmode|aclinherit|xattr|encryption"
# 关键属性:
# aclmode: restricted
# aclinherit: restricted
# encryption: aes-256-gcm (如启用)

# 38. 查看文件扩展属性(Solaris特有)
runat /etc/passwd ls-la# 查看隐藏属性
# 或使用
getfattr -d /etc/passwd

# 39. 检查SUID/SGID文件(高风险)
find / -type f \(-perm-4000-o-perm-2000\)-ls2>/dev/null
# 或更精确
find / -type f -perm-4000-execls-la{}\;2>/dev/null

# 40. 查看世界可写文件(高风险)
find / -type f -perm-002-ls2>/dev/null
find / -type d -perm-002-ls2>/dev/null

# 41. 检查无主文件
find / -nouser-o-nogroup2>/dev/null

三、安全审计(8.1.4.3)

3.1 Solaris审计系统(BSM)

Solaris使用 BSM(Basic Security Module) 进行审计,这是其企业级安全特性。

测评项命令达标判据
检查审计状态auditconfig -getcondauditing
查看审计策略auditconfig -getpolicy覆盖关键事件
检查审计日志ls -la /var/audit存在且权限正确
查看审计配置cat /etc/security/audit_control配置完整
# 42. 检查审计系统状态
auditconfig -getcond
# 期望输出:audit condition = auditing
# 或:auditconfig -getkernel

# 43. 查看审计策略
auditconfig -getpolicy
# 期望包含:cnt, argv, arge, seq, trail, group, public

# 44. 查看审计类配置
cat /etc/security/audit_class
# 预定义类:all, no, lo, na, cl, co, fa, fd, fm, fr, fw, pc, ps

# 45. 查看审计事件到类的映射
cat /etc/security/audit_event |head-30
# 格式:event_num:event_name:description:classes

# 46. 查看审计控制文件(核心配置)
cat /etc/security/audit_control
# 关键配置:
# dir:/var/audit          # 审计日志目录
# dir:/var/audit/backup   # 备份目录
# flags:lo,ss,as,ua,ex,nt  # 审计标志
# naflags:lo,nt            # 非属性审计
# minfree:20               # 最小剩余空间%
# plugin:                  # 插件配置

# 47. 查看用户审计掩码
auditconfig -getumask
# 或特定用户
userattr audit_flags username

# 48. 查看审计日志文件
ls-la /var/audit/
# 检查:权限600,属主root,定期轮转

# 49. 查看当前审计日志大小
du-sh /var/audit/
df-h /var/audit

# 50. 查看审计记录(需要root)
auditreduce -d today | praudit -s
# 或查看特定事件
auditreduce -c lo -d today | praudit -s# 登录事件

# 51. 查看审计统计
auditconfig -getstat
# 或重置统计
auditconfig -setstat

# 52. 检查审计远程传输(如配置)
cat /etc/security/audit_control |grep plugin
# 或查看audit_remote插件
svcs auditd
cat /etc/security/audit_remote

3.2 系统日志与Syslog

# 53. 查看系统日志配置
cat /etc/syslog.conf
# Solaris 11使用rsyslog或传统syslog
cat /etc/rsyslog.conf 2>/dev/null ||cat /etc/syslog.conf

# 54. 查看日志服务状态(Solaris 11 SMF)
svcs system-log
# 或Solaris 10
svcadm enable system-log

# 55. 查看日志文件
ls-la /var/adm/
# 关键日志:
# /var/adm/messages      # 系统消息
# /var/adm/sulog         # su命令日志
# /var/adm/lastlog       # 最后登录
# /var/adm/wtmpx         # 登录历史(二进制)
# /var/adm/utmpx         # 当前登录

# 56. 查看系统消息
tail-100 /var/adm/messages
# 或使用dmesg
dmesg|tail-50

# 57. 查看安全相关日志
tail-50 /var/adm/sulog
# 检查:su切换记录,失败尝试

# 58. 查看登录历史(二进制格式)
last |head-20
lastb |head-20# 失败登录

# 59. 查看FTP日志(如启用)
tail-50 /var/adm/xferlog
# 或
tail-50 /var/log/proftpd/proftpd.log

# 60. 查看Cron日志
tail-50 /var/cron/log

# 61. 查看SMF服务日志(Solaris 11特有)
svcs -Lv svc:/system/system-log:default
# 或查看所有服务日志
ls-la /var/svc/log/

四、入侵防范(8.1.4.4)

4.1 系统安全状态

测评项命令达标判据
查看系统版本uname -a / cat /etc/release官方支持版本
检查补丁级别pkg list entire / showrev -p最新补丁
查看加固状态cat /etc/security/audit_control已加固
检查ASLR等pargs -e $$启用地址随机化
# 62. 查看系统版本信息
uname-a
# 输出:SunOS hostname 5.11 11.4.0.15.0 sun4v sparc sun4v

cat /etc/release
# 详细版本信息

# 63. 查看Solaris版本(不同命令)
showrev -r# Solaris 10
cat /etc/release  # Solaris 11
pkg info entire  # Solaris 11 IPS

# 64. 查看已安装补丁(Solaris 10)
showrev -p|head-20
# 或Solaris 11查看软件包更新
pkg list -u# 可更新包
pkg update --dry-run  # 模拟更新

# 65. 查看系统安全加固配置
cat /etc/security/policy.conf
# 关键参数:
# PRIV_DEFAULT=basic,proc_clock_highres
# PRIV_LIMIT=all
# LOCK_AFTER_RETRIES=YES
# DISABLE_ADB=YES  # 禁用ADB调试器

# 66. 检查进程地址空间随机化(ASLR)
pargs -e$$|grep-i random
# 或查看系统配置
cat /etc/security/policy.conf |grep ASLR

# 67. 查看栈保护(如果应用编译时启用)
/usr/ccs/bin/elfdump -d /usr/bin/ls |grep STACK

# 68. 查看系统资源限制(防DoS)
cat /etc/system |grep-v"^*"|grep-v"^$"
# 或使用prctl
prctl -n process.max-file-descriptor $$
prctl -n process.max-stack-size $$

# 69. 查看系统参数(类似Linux sysctl)
ndd /dev/tcp tcp_ip_abort_interval
# 或使用ipadm(Solaris 11)
ipadm show-prop -p _conn_req_max_q tcp

# 70. 查看核心转储配置(安全考虑)
cat /etc/coreadm.conf
coreadm
# 建议:限制核心转储,或定向到安全目录

4.2 网络安全配置

# 71. 查看网络接口配置
ifconfig-a
# 或Solaris 11使用ipadm
ipadm show-addr

# 72. 查看路由表
netstat-rn
# 或
route -p show

# 73. 查看监听端口
netstat-an|grep LISTEN
# 或
ss -tunlp# 如安装iproute包

# 74. 查看防火墙状态(IP Filter或Solaris防火墙)
# Solaris 10/11 IP Filter
ipfstat -io
cat /etc/ipf/ipf.conf

# Solaris 11使用netcat或ipfilter
svcs ipfilter

# 75. 查看TCP Wrappers配置
cat /etc/hosts.allow
cat /etc/hosts.deny
# 期望:hosts.deny包含ALL: ALL

# 76. 查看网络服务监听(inetd/SMF)
inetadm -l|grep-v disabled  # Solaris 10
svcs -a|grep online |grep-v system  # Solaris 11

# 77. 查看NFS共享(如使用)
showmount -e localhost
cat /etc/dfs/dfstab
cat /etc/dfs/sharetab

# 78. 查看NFS安全选项
sharemgr show -v
# 或
zfs get sharenfs

# 79. 查看DNS配置
cat /etc/resolv.conf
cat /etc/nsswitch.conf |grep hosts

# 80. 查看LDAP/NIS配置(如使用)
cat /etc/nsswitch.conf
ldapclient list  # 如使用LDAP
ypwhich  # 如使用NIS

五、恶意代码防范与完整性(8.1.4.5/8.1.4.6)

5.1 系统完整性检查

测评项命令达标判据
查看文件完整性pkg verify / bart无异常修改
检查关键文件digest -a sha256哈希校验
查看软件包签名pkg list -v签名验证
检查启动完整性bootadm list-archive启动归档完整
# 81. 使用BART(Basic Audit Reporting Tool)检查文件完整性
# 创建基线
bart create -I> /var/bart/baseline.manifest

# 对比检查
bart compare /var/bart/baseline.manifest /var/bart/current.manifest

# 82. 验证关键系统文件(Solaris 11 IPS)
pkg verify
# 或验证特定包
pkg verify entire
pkg verify system/core-os

# 83. 查看软件包签名状态
pkg list -v|grep SIGNATURE
# 或
pkg info --signature entire

# 84. 查看软件包内容
pkg contents -r system/core-os |head-20

# 85. 计算文件哈希(替代md5sum)
digest -a sha256 /etc/passwd
digest -a md5 /etc/shadow

# 86. 查看启动归档(Solaris 11)
bootadm list-archive
bootadm list-menu

# 87. 检查启动环境(BE - Boot Environment)
beadm list
# 查看当前和备用启动环境

# 88. 查看系统快照(ZFS快照,用于恢复)
zfs list -t snapshot
# 或查看自动快照
svcs time-slider
cat /etc/timeslider/timeslider.xml

# 89. 查看防病毒软件(如安装McAfee/Symantec)
ps-ef|grep-i"mcafee\|symantec\|sophos"
# 或查看
pkg list |grep-i virus

六、数据备份与恢复(8.1.4.9)

6.1 ZFS备份与快照

Solaris的 ZFS文件系统 提供了强大的快照和备份功能。

# 90. 查看ZFS池状态
zpool status
zpool list

# 91. 查看ZFS文件系统
zfs list
zfs list -o name,used,available,compressratio,mountpoint

# 92. 查看ZFS快照
zfs list -t snapshot
# 或特定文件系统
zfs list -t snapshot rpool/ROOT/solaris

# 93. 查看自动快照配置
svcs time-slider
cat /etc/timeslider/timeslider.xml

# 94. 查看ZFS备份(发送/接收)
zfs get all |grep send
# 或查看计划任务
crontab-l|grep zfs

# 95. 查看ZFS属性(包括压缩、加密)
zfs get compression rpool
zfs get encryption rpool  # 查看加密根池
zfs get keystatus rpool   # 查看密钥状态

# 96. 查看ZFS加密数据集
zfs list -o name,encryption,keystatus,keysource
# 检查敏感数据是否加密存储

# 97. 查看传统备份(ufsdump/tar)
cat /etc/dumpdates
# 或查看备份脚本
ls-la /etc/backup/

七、SMF服务管理(Solaris 11特有)

Solaris 11使用 SMF(Service Management Facility) 管理服务,替代传统的init脚本。

# 98. 查看所有服务状态
svcs -a
# 或仅查看在线服务
svcs -a|grep online

# 99. 查看特定服务
svcs ssh
svcs -lssh# 详细信息
svcs -Lvssh# 包括日志

# 100. 查看服务依赖
svcs -d svc:/network/ssh:default  # 依赖此服务的服务
svcs -D svc:/network/ssh:default  # 此服务依赖的服务

# 101. 查看服务配置
svcprop svc:/network/ssh:default
# 或特定属性
svcprop -p config svc:/network/ssh:default

# 102. 查看服务日志
svcs -L svc:/network/ssh:default
# 或查看所有服务日志位置
ls-la /var/svc/log/

# 103. 查看维护模式服务(故障服务)
svcs -x
# 或
svcs -xv# 详细解释

# 104. 查看服务历史
svcs -H svc:/network/ssh:default

八、一键巡检脚本(Solaris版)

#!/bin/bash
# Oracle Solaris 等保三级一键巡检脚本
# 支持:Solaris 10/11 (SPARC/x86)
# 执行权限:root

INSPECTION_LOG="/var/log/solaris_inspection_$(date +%Y%m%d_%H%M%S).log"

echo"=========================================="|tee-a$INSPECTION_LOG
echo"   Oracle Solaris 等保三级巡检报告"|tee-a$INSPECTION_LOG
echo"   时间: $(date)"|tee-a$INSPECTION_LOG
echo"   主机: $(uname-n)"|tee-a$INSPECTION_LOG
echo"   版本: $(uname-v)"|tee-a$INSPECTION_LOG
echo"=========================================="|tee-a$INSPECTION_LOG

check_pass(){
echo-e"\033[32m[PASS]\033[0m $1"|tee-a$INSPECTION_LOG
echo"    $2"|tee-a$INSPECTION_LOG2>/dev/null
}

check_fail(){
echo-e"\033[31m[FAIL]\033[0m $1"|tee-a$INSPECTION_LOG
echo"    $2"|tee-a$INSPECTION_LOG2>/dev/null
}

check_warn(){
echo-e"\033[33m[WARN]\033[0m $1"|tee-a$INSPECTION_LOG
echo"    $2"|tee-a$INSPECTION_LOG2>/dev/null
}

# 1. 身份鉴别检查
echo""|tee-a$INSPECTION_LOG
echo"===== 1. 身份鉴别 ====="|tee-a$INSPECTION_LOG

echo"--- 空口令检查 ---"|tee-a$INSPECTION_LOG
empty_pass=$(logins -p2>/dev/null)
if[-z"$empty_pass"];then
    check_pass "空口令检查""未发现空口令用户"
else
    check_fail "空口令检查""发现空口令用户: $empty_pass"
fi

echo"--- 密码策略检查 ---"|tee-a$INSPECTION_LOG
if[-f /etc/default/passwd ];then
passlen=$(grep"^PASSLENGTH=" /etc/default/passwd |cut-d=-f2)
if["$passlen"-ge8]2>/dev/null;then
        check_pass "密码最小长度""当前设置: $passlen"
else
        check_fail "密码最小长度""当前设置: ${passlen:-未设置},建议≥8"
fi

maxweeks=$(grep"^MAXWEEKS=" /etc/default/passwd |cut-d=-f2)
if["$maxweeks"-le13]2>/dev/null;then
        check_pass "密码最大使用期""当前设置: ${maxweeks}周(约$((maxweeks*7))天)"
else
        check_warn "密码最大使用期""当前设置: ${maxweeks:-未设置}周,建议≤13周"
fi
else
    check_fail "密码策略文件""/etc/default/passwd不存在"
fi

echo"--- 账户锁定策略 ---"|tee-a$INSPECTION_LOG
lockout=$(grep"^LOCK_AFTER_RETRIES=" /etc/security/policy.conf 2>/dev/null |cut-d=-f2)
if["$lockout"="YES"];then
retries=$(grep"^RETRIES=" /etc/default/login 2>/dev/null |cut-d=-f2)
    check_pass "账户锁定""启用锁定,重试次数: ${retries:-3}"
else
    check_fail "账户锁定""未启用登录失败锁定"
fi

echo"--- SSH安全配置 ---"|tee-a$INSPECTION_LOG
if[-f /etc/ssh/sshd_config ];then
ssh_ver=$(grep"^Protocol" /etc/ssh/sshd_config |awk'{print $2}')
if["$ssh_ver"="2"];then
        check_pass "SSH协议版本""强制使用SSHv2"
else
        check_warn "SSH协议版本""未强制SSHv2,当前: ${ssh_ver:-未设置}"
fi

root_login=$(grep"^PermitRootLogin" /etc/ssh/sshd_config |awk'{print $2}')
if["$root_login"="no"]||["$root_login"="prohibit-password"];then
        check_pass "Root远程登录""已限制: $root_login"
else
        check_fail "Root远程登录""未限制root登录: ${root_login:-未设置}"
fi
else
    check_fail "SSH配置""sshd_config不存在"
fi

# 2. 访问控制检查
echo""|tee-a$INSPECTION_LOG
echo"===== 2. 访问控制 ====="|tee-a$INSPECTION_LOG

echo"--- RBAC配置 ---"|tee-a$INSPECTION_LOG
if[-f /etc/user_attr ];then
root_role=$(grep"^root:" /etc/user_attr |grep"type=role")
if[-n"$root_role"];then
        check_pass "RBAC配置""root已配置为角色"
else
        check_warn "RBAC配置""root可能直接使用,建议启用RBAC"
fi
else
    check_warn "RBAC配置""未找到user_attr文件"
fi

echo"--- 关键文件权限 ---"|tee-a$INSPECTION_LOG
shadow_perm=$(ls-la /etc/shadow 2>/dev/null |awk'{print $1}')
if["$shadow_perm"="-r--------"];then
    check_pass "Shadow文件权限""权限正确: $shadow_perm"
else
    check_fail "Shadow文件权限""权限不合规: ${shadow_perm:-无法获取}"
fi

# 3. 安全审计检查
echo""|tee-a$INSPECTION_LOG
echo"===== 3. 安全审计 ====="|tee-a$INSPECTION_LOG

echo"--- BSM审计状态 ---"|tee-a$INSPECTION_LOG
audit_stat=$(auditconfig -getcond2>/dev/null |grep"audit condition"|awk'{print $3}')
if["$audit_stat"="auditing"];then
    check_pass "BSM审计""审计已启用"
else
    check_fail "BSM审计""审计未启用: ${audit_stat:-未配置}"
fi

echo"--- 审计日志检查 ---"|tee-a$INSPECTION_LOG
if[-d /var/audit ];then
audit_size=$(du-sh /var/audit 2>/dev/null |awk'{print $1}')
    check_pass "审计日志目录""存在,大小: $audit_size"
else
    check_fail "审计日志目录""/var/audit不存在"
fi

echo"--- 系统日志配置 ---"|tee-a$INSPECTION_LOG
if[-f /var/adm/messages ];then
log_lines=$(wc-l /var/adm/messages 2>/dev/null |awk'{print $1}')
    check_pass "系统日志""messages日志存在,行数: $log_lines"
else
    check_warn "系统日志""/var/adm/messages不存在"
fi

# 4. 入侵防范检查
echo""|tee-a$INSPECTION_LOG
echo"===== 4. 入侵防范 ====="|tee-a$INSPECTION_LOG

echo"--- 系统版本与补丁 ---"|tee-a$INSPECTION_LOG
solaris_ver=$(uname-v)
check_pass "系统版本""$solaris_ver"

# Solaris 11检查IPS更新
if[-x /usr/bin/pkg ];then
updatable=$(pkg list -u2>/dev/null |wc-l)
if["$updatable"-eq0];then
        check_pass "软件包更新""系统已最新"
else
        check_warn "软件包更新""有 $updatable 个包可更新"
fi
fi

echo"--- SUID/SGID文件检查 ---"|tee-a$INSPECTION_LOG
suid_count=$(find / -type f -perm-40002>/dev/null |wc-l)
if["$suid_count"-lt50];then
    check_pass "SUID文件数量""发现 $suid_count 个SUID文件"
else
    check_warn "SUID文件数量""发现 $suid_count 个SUID文件,建议审查"
fi

echo"--- 网络服务检查 ---"|tee-a$INSPECTION_LOG
# 检查inetd服务(Solaris 10)
inetd_services=$(inetadm -l2>/dev/null |grep-v disabled |wc-l)
# 或SMF服务(Solaris 11)
smf_services=$(svcs -a2>/dev/null |grep online |grep-v system |wc-l)

if["$inetd_services"-gt0]2>/dev/null;then
    check_warn "Inetd服务""$inetd_services 个inetd服务启用"
elif["$smf_services"-gt0]2>/dev/null;then
    check_pass "SMF服务""$smf_services 个非系统服务在线"
fi

# 5. 数据安全与备份
echo""|tee-a$INSPECTION_LOG
echo"===== 5. 数据安全与备份 ====="|tee-a$INSPECTION_LOG

echo"--- ZFS快照检查 ---"|tee-a$INSPECTION_LOG
snap_count=$(zfs list -t snapshot 2>/dev/null |wc-l)
if["$snap_count"-gt0];then
    check_pass "ZFS快照""存在 $snap_count 个快照"
else
    check_warn "ZFS快照""未发现快照,建议配置自动快照"
fi

echo"--- ZFS加密检查 ---"|tee-a$INSPECTION_LOG
encrypt_count=$(zfs list -o encryption 2>/dev/null |grep-v"off$"|wc-l)
if["$encrypt_count"-gt0];then
    check_pass "ZFS加密""$encrypt_count 个数据集已加密"
else
    check_warn "ZFS加密""未发现加密数据集"
fi

# 6. 高可用检查
echo""|tee-a$INSPECTION_LOG
echo"===== 6. 高可用与冗余 ====="|tee-a$INSPECTION_LOG

echo"--- ZFS池健康 ---"|tee-a$INSPECTION_LOG
zpool_health=$(zpool status 2>/dev/null |grep"state:"|awk'{print $2}')
if["$zpool_health"="ONLINE"];then
    check_pass "ZFS池状态""状态: $zpool_health"
else
    check_fail "ZFS池状态""状态异常: ${zpool_health:-无法获取}"
fi

echo"--- 启动环境 ---"|tee-a$INSPECTION_LOG
if[-x /usr/sbin/beadm ];then
be_count=$(beadm list 2>/dev/null |wc-l)
    check_pass "启动环境""$be_count 个启动环境可用"
fi

# 总结
echo""|tee-a$INSPECTION_LOG
echo"=========================================="|tee-a$INSPECTION_LOG
echo"   巡检完成"|tee-a$INSPECTION_LOG
echo"   日志保存: $INSPECTION_LOG"|tee-a$INSPECTION_LOG
echo"=========================================="|tee-a$INSPECTION_LOG

echo""|tee-a$INSPECTION_LOG
echo"统计结果:"|tee-a$INSPECTION_LOG
grep-c"\[PASS\]"$INSPECTION_LOG|xargsecho"通过项:"|tee-a$INSPECTION_LOG
grep-c"\[FAIL\]"$INSPECTION_LOG|xargsecho"失败项:"|tee-a$INSPECTION_LOG
grep-c"\[WARN\]"$INSPECTION_LOG|xargsecho"警告项:"|tee-a$INSPECTION_LOG

高风险项重点核查清单

检查项验证命令不合规判定整改建议
存在空口令用户logins -p有输出passwd username 设置密码
密码策略未启用cat /etc/default/passwdMAXWEEKS未设置或>13设置MAXWEEKS=13
未启用账户锁定grep LOCK /etc/security/policy.conf无LOCK_AFTER_RETRIES=YES启用锁定策略
SSH使用v1cat /etc/ssh/sshd_config | grep ProtocolProtocol 1或未设置强制Protocol 2
允许root远程登录cat /etc/ssh/sshd_config | grep PermitRootLogin为yes设置为no
BSM审计未启用auditconfig -getcond非auditingaudit -s 启用审计
无审计日志ls /var/audit目录为空或不存在配置审计并检查权限
过多SUID文件find / -perm -4000 | wc -l>50个审查并移除不必要SUID
ZFS池异常zpool status非ONLINE状态检查磁盘状态并修复
未配置自动快照svcs time-slider未启用启用time-slider服务
敏感数据未加密zfs get encryption关键数据集为off启用ZFS加密
系统补丁滞后pkg list -u / showrev -p大量未安装补丁更新至最新补丁级别

Solaris 10 vs 11 差异说明

功能项Solaris 10Solaris 11
包管理SVR4 (pkgadd/pkginfo)IPS (pkg)
服务管理SMF (svcs/svcadm)SMF增强版
文件系统UFS + ZFS可选ZFS默认
启动管理GRUB/Legacybootadm/beadm
网络配置ifconfig/routeipadm/routeadm
区域(Zone)Solaris ZoneZone增强 + Immutable Zone
审计BSMBSM增强
加密基础加密ZFS原生加密 + KMS
等保适配需大量手动加固预置安全模板

与Linux/AIX对比

对比项Oracle Solaris 11RHEL 8IBM AIX 7.2
内核SunOS 5.11Linux 4.18AIX 7.2
包管理IPSRPM/DNFinstallp
服务管理SMFsystemdSRC
文件系统ZFS(原生)XFS/ext4 + ZFSJFS2
RBAC原生完整RBACsudo + PolicyKitRBAC
审计BSMauditdaudit
容器Zone(原生)Podman/DockerWPAR
等保工具需定制有加固脚本有安全基线
行业应用电信、金融全行业金融、电力

常用命令速查

# 系统信息
uname-a# 系统版本
cat /etc/release            # 详细版本
showrev -r# Solaris 10补丁
pkg info entire             # Solaris 11版本
prtconf                     # 硬件配置
psrinfo -v# CPU信息

# 用户管理
useradd-m username         # 添加用户
passwd username             # 修改密码
usermod-R"root,admin" username  # 分配角色
profiles username           # 查看用户配置文件
roles username              # 查看用户角色
logins -x# 查看过期账户

# 服务管理(SMF)
svcs -a# 所有服务
svcs -x# 故障服务
svcadm enablessh# 启用服务
svcadm disable telnet       # 禁用服务
svcprop svc:/network/ssh    # 查看服务属性

# 网络管理
ifconfig-a# 接口配置
ipadm show-addr             # Solaris 11 IP管理
route -p show               # 路由表
netstat-an# 网络状态
ipfstat -io# IP Filter状态

# 文件系统
zfs list                    # ZFS数据集
zpool status                # ZFS池状态
zfs snapshot pool/fs@snap   # 创建快照
zfs send pool/fs@snap       # 发送快照
beadm list                  # 启动环境
beadm create newbe          # 创建启动环境

# 审计管理
auditconfig -getcond# 审计状态
auditconfig -setpolicy +cnt # 设置策略
audit -s# 启动审计
audit -t# 停止审计
praudit /var/audit/*        # 读取审计日志
auditreduce -d today        # 过滤审计记录

# 安全管理
cat /etc/user_attr          # RBAC用户属性
cat /etc/security/prof_attr # 配置文件
cat /etc/security/auth_attr # 授权定义
cat /etc/security/exec_attr # 执行属性
userattr -S# 查看安全属性

# 日志查看
tail-f /var/adm/messages   # 系统日志
last                        # 登录历史
lastb                       # 失败登录
dmesg# 内核消息
svcs -L svc:/system/system-log  # 服务日志

参考标准:GB/T 22239-2019、GB/T 28448-2019、Oracle Solaris Security Guidelines、CIS Solaris Benchmarks

适用版本:Solaris 10 1/13 (U11)、Solaris 11.3、Solaris 11.4

硬件平台:SPARC(T4/T5/T7/M7/M8)和 x86-64

执行权限:多数命令需root或等效RBAC配置文件(如Primary Administrator)

声明:来自汪汪虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/7485.html

汪汪虚拟空间的头像汪汪虚拟空间

相关推荐

添加微信
添加微信
Ai学习群
返回顶部