等保测评命令——“NoSQL”数据库整理

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

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合各NoSQL数据库官方安全指南及现场测评实践。

适用产品:MongoDB / Redis / Elasticsearch / Cassandra / Neo4j / HBase / Couchbase


一、MongoDB(文档型数据库)

1.1 身份鉴别

控制项测评命令达标判据
认证启用db.adminCommand({getParameter: 1, authenticationMechanisms: 1})启用SCRAM-SHA-256
超级管理员db.system.users.find({user: "root", db: "admin"})强口令策略
空口令检查db.system.users.find({credentials: {$exists: false}})无输出
密码复杂度检查mongod.conf security选项启用复杂度验证
登录失败锁定db.adminCommand({getParameter: 1, authFailedDelayMs: 1})启用延迟
连接加密db.adminCommand({getParameter: 1, requireTLS: 1})启用TLS

MongoDB特有配置:

// 连接MongoDB(启用认证)
mongo -u admin -p --authenticationDatabase admin

// 查看认证机制
db.adminCommand({getParameter:1,authenticationMechanisms:1})
// 应返回:["SCRAM-SHA-256", "SCRAM-SHA-1"] 或 ["MONGODB-X509"]

// 查看所有用户及角色
use admin
db.system.users.find({},{
user:1,
db:1,
roles:1,
mechanisms:1,
_id:0
}).pretty()

// 查看密码策略(企业版)
db.adminCommand({getParameter:1,passwordValidation:1})

// 查看登录失败配置
db.adminCommand({getParameter:1,authFailedDelayMs:1})// 失败延迟
db.adminCommand({getParameter:1,maxFailedLoginAttempts:1})// 最大失败次数

// 查看当前连接
db.currentOp(true).inprog.forEach(function(d){
if(d.connectionId){
print("User: "+ d.user+", Client: "+ d.client+", Secured: "+ d.secured)
}
})

// 查看TLS/SSL配置
db.adminCommand({getParameter:1,requireTLS:1})
db.adminCommand({getParameter:1,tlsMode:1})

// 查看证书信息(企业版)
db.adminCommand({getParameter:1,tlsCertificateKeyFile:1})
db.adminCommand({getParameter:1,tlsCAFile:1})

// 查看LDAP集成(企业版)
db.adminCommand({getParameter:1,ldap:1})

// 查看Kerberos配置(企业版)
db.adminCommand({getParameter:1,sasl:1})

1.2 访问控制

// 查看所有角色
db.getRoles({showPrivileges:true})

// 查看自定义角色
db.getRoles({rolesInfo:1,showPrivileges:true,showBuiltinRoles:false})

// 查看用户权限详情
db.getUser("admin")

// 查看数据库级访问控制
db.getCollectionNames().forEach(function(collection){
var stats = db.getCollection(collection).stats()
print(collection +": "+JSON.stringify(stats.wiredTiger||{}))
})

// 查看集合级权限(企业版字段级加密)
db.getCollectionInfos({name:"sensitive_collection"})[0].options.validator

// 查看行级安全(Client-Side Field Level Encryption)
db.getCollection("users").getClientSideEncryptionOptions()

// 查看视图权限(用于数据脱敏)
db.system.views.find({})

// 检查IP白名单(mongod.conf)
// 查看net.bindIp配置
db.adminCommand({getParameter:1,bindIp:1})

// 查看网络压缩(减少嗅探风险)
db.adminCommand({getParameter:1,networkMessageCompressors:1})

1.3 安全审计

// 查看审计配置(企业版)
db.adminCommand({getParameter:1,auditLog:1})

// 查看审计过滤器
db.adminCommand({getParameter:1,auditFilter:1})

// 查看审计日志格式
db.adminCommand({getParameter:1,auditFormat:1})

// 查看审计日志路径
db.adminCommand({getParameter:1,auditPath:1})

// 查看审计日志轮转
db.adminCommand({getParameter:1,auditRotateInterval:1})

// 查看系统日志配置
db.adminCommand({getParameter:1,systemLog:1})

// 查看慢查询日志(用于安全分析)
db.adminCommand({getParameter:1,slowOpThresholdMs:1})
db.setProfilingLevel(1,{slowms:100})// 启用慢查询分析

// 查看分析器状态
db.getProfilingStatus()

// 查看最近操作日志(oplog用于审计追踪)
use local
db.oplog.rs.find().sort({$natural:-1}).limit(10)

// 查看审计日志内容(需shell命令)
// cat /var/log/mongodb/audit.log | jq '.'

1.4 数据加密

// 查看透明加密(TDE,企业版)
db.adminCommand({getParameter:1,encryptionKeyFile:1})
db.adminCommand({getParameter:1,enableEncryption:1})

// 查看字段级加密(Client-Side FLE)
db.getCollection("users").getClientSideEncryptionOptions()

// 查看加密密钥管理(企业版)
db.adminCommand({getParameter:1,kmip:1})
db.adminCommand({getParameter:1,vault:1})

// 查看存储引擎加密状态
db.serverStatus().wiredTiger.encryption

// 查看传输加密
db.serverStatus().connections

二、Redis(键值型数据库)

2.1 身份鉴别

控制项测评命令达标判据
认证启用CONFIG GET requirepass返回非空密码
超级管理员ACL LIST启用ACL,限制default用户
空口令检查CONFIG GET requirepass不为空字符串
密码复杂度检查redis.conf强口令策略
登录失败CONFIG GET maxclients限制连接数
连接加密CONFIG GET tls-port启用TLS

Redis特有配置(Redis 6.0+ ACL):

# 连接Redis
redis-cli -h192.168.1.100 -p6379-a'password'

# 查看认证配置
CONFIG GET requirepass
CONFIG GET masterauth

# 查看ACL配置(Redis 6.0+)
ACL LIST
# 应显示具体用户权限,而非仅default用户

# 查看ACL用户详情
ACL GETUSER admin
ACL GETUSER default

# 查看所有ACL用户
ACL USERS

# 查看ACL日志(登录失败等)
ACL LOG

# 查看TLS配置
CONFIG GET tls-port
CONFIG GET tls-cert-file
CONFIG GET tls-key-file
CONFIG GET tls-ca-cert-file
CONFIG GET tls-protocols
CONFIG GET tls-ciphers

# 查看密码策略(通过配置文件或CONFIG SET)
CONFIG GET maxclients
CONFIG GET timeout# 空闲超时

# 查看危险命令禁用
CONFIG GET rename-command
# 应禁用或重命名:FLUSHALL, FLUSHDB, CONFIG, DEBUG, KEYS, SHUTDOWN

2.2 访问控制

# 查看网络绑定
CONFIG GET bind
CONFIG GET protected-mode

# 查看端口配置
CONFIG GET port
CONFIG GET tls-port

# 查看Unix Socket配置(更安全)
CONFIG GET unixsocket

# 查看TCP Keepalive
CONFIG GET tcp-keepalive

# 查看客户端输出缓冲区限制
CONFIG GET client-output-buffer-limit

# 查看最大内存限制
CONFIG GET maxmemory
CONFIG GET maxmemory-policy

# 查看慢查询日志
CONFIG GET slowlog-log-slower-than
CONFIG GET slowlog-max-len
SLOWLOG GET 10

# 查看命令统计(检测异常访问)
INFO commandstats

# 查看客户端连接详情
CLIENT LIST
CLIENT LIST |grep-E'addr|flags|db|cmd'

# 查看当前数据库
DBSIZE
INFO keyspace

2.3 安全审计

# 查看日志配置
CONFIG GET loglevel
CONFIG GET logfile

# 查看审计日志(Redis 6.0+ ACL LOG)
ACL LOG 100

# 查看慢查询日志(安全分析)
SLOWLOG GET 50
SLOWLOG LEN

# 查看监视器(实时审计,生产慎用)
MONITOR  # 实时显示所有命令

# 查看最近命令(通过客户端列表)
CLIENT LIST

# 查看持久化日志(AOF/RDB操作)
INFO persistence
LASTSAVE

# 查看复制状态(集群审计)
INFO replication

2.4 数据安全

# 查看持久化配置
CONFIG GET save
CONFIG GET appendonly
CONFIG GET appendfsync

# 查看RDB文件权限(操作系统层)
ls-la /var/lib/redis/*.rdb
ls-la /var/lib/redis/*.aof

# 查看备份配置
CONFIG GET dir
CONFIG GET dbfilename

# 查看主从复制加密
CONFIG GET repl-diskless-sync
CONFIG GET repl-disable-tcp-nodelay

# 查看集群配置(Redis Cluster)
CLUSTER NODES
CLUSTER INFO

# 查看Sentinel配置(高可用)
SENTINEL master mymaster
SENTINEL slaves mymaster

三、Elasticsearch(搜索引擎/文档型)

3.1 身份鉴别

控制项测评命令达标判据
认证启用GET /_security/settings启用原生安全
超级管理员GET /_security/user/elastic强口令策略
角色基础访问GET /_security/role启用RBAC
API密钥GET /_security/api_key受控使用
PKI认证GET /_security/settings启用证书认证
连接加密GET /_nodes/settings?filter_path=**.xpack.security启用TLS

Elasticsearch特有配置:

# 连接Elasticsearch(启用X-Pack Security)
curl-u elastic:password -k https://localhost:9200

# 查看安全设置
GET /_security/settings

# 查看所有用户
GET /_security/user

# 查看特定用户
GET /_security/user/elastic

# 查看角色
GET /_security/role

# 查看角色映射
GET /_security/role_mapping

# 查看API密钥
GET /_security/api_key
GET /_security/api_key?owner=true

# 查看服务令牌
GET /_security/service/elastic/coordinating-server

# 查看令牌信息
GET /_security/oauth2/token

# 查看OpenID Connect配置
GET /_security/oidc/prepare

# 查看SAML配置
GET /_security/saml/metadata

# 查看Kerberos配置
GET /_security/kerberos

3.2 访问控制

# 查看集群权限
GET /_security/privilege

# 查看索引权限
GET /_security/privilege/index

# 查看字段级安全(Field Level Security)
GET /_security/role/my_role

# 示例响应应包含:
# {
#   "my_role": {
#     "indices": [
#       {
#         "names": ["sensitive-*"],
#         "privileges": ["read"],
#         "field_security": {
#           "grant": ["public_field"],
#           "except": ["secret_field"]
#         }
#       }
#     ]
#   }
# }

# 查看文档级安全(Document Level Security)
GET /_security/role/my_role
# 应包含: "query": {"template": {"source": "{\"term\": {\"department\": \"{{_user.metadata.department}}\"}}"}}

# 查看集群设置(网络绑定)
GET /_cluster/settings?include_defaults=true&filter_path=**.network.host

# 查看IP过滤
GET /_cluster/settings?include_defaults=true&filter_path=**.xpack.security.transport.filter

# 查看CORS配置(如启用需严格限制)
GET /_cluster/settings?include_defaults=true&filter_path=**.http.cors

3.3 安全审计

# 查看审计配置
GET /_security/audit/settings

# 查看审计日志索引
GET /.security_audit_log*/_search
{
"sort":[{"@timestamp":{"order":"desc"}}],
"size":100
}

# 查看审计事件类型
GET /_security/audit/settings
# 应包含:authentication_success, authentication_failed, access_denied, connection_granted, connection_denied

# 查看慢查询日志(审计分析)
GET /_cluster/settings?include_defaults=true&filter_path=**.index.search.slowlog

# 查看索引慢日志配置
GET /my-index/_settings/index.search.slowlog.threshold.query.warn

# 查看弃用日志(安全预警)
GET /_cluster/settings?include_defaults=true&filter_path=**.logger.org.elasticsearch.deprecation

# 查看集群健康(异常检测)
GET /_cluster/health
GET /_cluster/stats

# 查看节点热点线程(攻击检测)
GET /_nodes/hot_threads

3.4 数据加密

# 查看传输加密(TLS)
GET /_ssl/certificates

# 查看证书详情
GET /_nodes/settings?filter_path=**.xpack.security.http.ssl

# 查看静态加密(TDE)
GET /_cluster/settings?include_defaults=true&filter_path=**.xpack.encrypted_saved_objects

# 查看快照加密
GET /_snapshot/my_repo/my_snapshot
# 应包含: "metadata": {"encrypted": true}

# 查看字段加密(Watcher/Alerting)
GET /_watcher/settings

# 查看密钥管理
GET /_security/settings
# 应配置加密密钥存储

四、Cassandra(宽列型数据库)

4.1 身份鉴别

控制项测评命令达标判据
认证启用SELECT * FROM system_auth.roles;启用PasswordAuthenticator
超级用户LIST ROLES;cassandra账户受控
密码复杂度cassandra.yaml authenticator启用自定义认证
登录失败system_auth.role_permissions审计登录失败
连接加密cassandra.yaml server_encryption_options启用node-to-node加密

Cassandra特有配置:

# 连接Cassandra(启用认证)
cqlsh -u cassandra -p password -k system_auth

# 查看认证配置(cassandra.yaml)
# authenticator: PasswordAuthenticator
# authorizer: CassandraAuthorizer
# role_manager: CassandraRoleManager

# 查看所有角色
LIST ROLES;

# 查看角色详情
LIST ALL PERMISSIONS OF cassandra;

# 查看用户权限
LIST ALL PERMISSIONS OF my_user;

# 查看角色继承
LIST ROLES OF my_user;

# 查看资源权限
LIST ALL PERMISSIONS ON KEYSPACE my_keyspace;

# 查看表级权限
LIST ALL PERMISSIONS ON TABLE my_keyspace.my_table;

# 查看函数权限
LIST ALL PERMISSIONS ON FUNCTION my_keyspace.my_function;

# 查看角色选项(密码过期等)
SELECT role, is_superuser, can_login, options FROM system_auth.roles;

# 查看网络认证配置(通过JMX或system_views)
SELECT * FROM system_views.network_permissions;

4.2 访问控制

# 查看行级权限(通过自定义索引或视图)
# Cassandra通过物化视图实现访问控制

# 查看物化视图(用于数据脱敏)
DESCRIBE MATERIALIZED VIEWS;

# 查看索引(用于访问控制)
DESCRIBE INDEXES;

# 查看网络策略
SELECT * FROM system_views.network_permissions;

# 查看数据中心复制策略
DESCRIBE KEYSPACE my_keyspace;
# 应显示:NetworkTopologyStrategy with replication factors

# 查看一致性级别(影响访问安全)
CONSISTENCY;

# 查看批处理限制(防DoS)
SELECT * FROM system_views.settings WHERE name='batch_size_warn_threshold_in_kb';

4.3 安全审计

# 查看审计日志配置(cassandra.yaml)
# audit_logging_options:
#   enabled: true
#   logger: BinAuditLogger
#   included_categories: AUTH,DDL,DCL,QUERY
#   excluded_categories: 
#   included_keyspaces: my_keyspace
#   excluded_keyspaces: system,system_schema

# 查看审计日志(BinAuditLogger)
ls-la /var/lib/cassandra/audit/

# 查看系统日志(审计相关)
grep-i"audit\|auth\|login" /var/log/cassandra/system.log |tail-20

# 查看慢查询日志(通过JMX)
nodetool getlogginglevels |grep-i slow

# 查看追踪会话(全链路审计)
tracing on;
SELECT * FROM my_keyspace.my_table;
tracing off;

# 查看追踪历史
SELECT * FROM system_traces.sessions LIMIT 10;
SELECT * FROM system_traces.events WHERE session_id =<uuid>;

4.4 数据加密

# 查看传输加密配置(cassandra.yaml)
# server_encryption_options:
#   internode_encryption: all
#   keystore: /path/to/keystore
#   keystore_password: password
#   truststore: /path/to/truststore
#   truststore_password: password
#   protocol: TLS
#   algorithm: SunX509
#   store_type: JKS
#   cipher_suites: [TLS_RSA_WITH_AES_256_CBC_SHA]

# 查看客户端加密
# client_encryption_options:
#   enabled: true
#   optional: false
#   keystore: /path/to/keystore
#   keystore_password: password

# 查看密钥库文件
keytool -list-v-keystore /etc/cassandra/.keystore

# 查看透明加密(企业版DataStax)
dsetool managekmip listkeystores
dsetool managekmip listkeys

# 查看表加密状态
DESCRIBE TABLE my_keyspace.my_table;
# 应显示:'encryption_options': {'cipher_algorithm': 'AES/CBC/PKCS5Padding', 'secret_key_strength': 256}

五、Neo4j(图数据库)

5.1 身份鉴别

控制项测评命令达标判据
认证启用SHOW SETTINGS YIELD name, value WHERE name='dbms.security.auth_enabled'true
超级管理员SHOW USERSneo4j账户强口令
密码复杂度SHOW SETTINGS YIELD name, value WHERE name='dbms.security.password_policy'启用策略
登录失败SHOW SETTINGS YIELD name, value WHERE name='dbms.security.auth_lock_time'启用锁定
连接加密SHOW SETTINGS YIELD name, value WHERE name='dbms.ssl.policy.bolt.enabled'true

Neo4j特有配置(Cypher查询):

// 连接Neo4j
cypher-shell -u neo4j -p password --encryption true

// 查看认证设置
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'security.auth'

// 查看所有用户
SHOW USERS

// 查看当前用户
SHOW CURRENT USER

// 查看用户详情
SHOW USER neo4j PRIVILEGES

// 查看角色
SHOW ROLES

// 查看角色权限
SHOW ROLE admin PRIVILEGES

// 查看用户角色映射
SHOW USER neo4j ROLES

// 查看密码策略
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'password_policy'

// 查看登录锁定配置
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'auth_lock'

// 查看LDAP集成(企业版)
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'ldap'

// 查看Kerberos配置(企业版)
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'kerberos'

5.2 访问控制

// 查看数据库级权限
SHOW DATABASE neo4j PRIVILEGES

// 查看图级权限(多数据库企业版)
SHOW GRAPH * PRIVILEGES

// 查看标签级权限(细粒度访问控制)
SHOW PRIVILEGES YIELD role, access, action, resource, graph, segment
WHERE segment ISNOTNULL

// 查看属性级权限
SHOW PRIVILEGES YIELD role, access, action, resource
WHERE action ='read'AND resource CONTAINS'property'

// 查看过程/函数权限
SHOW PROCEDURES YIELD name, rolesExecution, rolesBoostedExecution

// 查看子图访问控制(企业版)
CALL dbms.security.listSubgraphs()

// 查看动态访问控制(通过事务事件处理器)
CALL dbms.listTransactions()

5.3 安全审计

// 查看查询日志(企业版)
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'query_log'

// 查看安全日志
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'security_log'

// 查看HTTP日志
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'http_log'

// 查看GC日志
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'gc_log'

// 查看调试日志
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'debug.log'

// 查看事务超时(防DoS)
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'transaction.timeout'

// 查看查询超时
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'cypher.min_replan_interval'

// 查看连接限制
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'server.bolt.max_connections'

5.4 数据加密

// 查看SSL/TLS配置
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'ssl'

// 查看Bolt协议加密
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'bolt.tls'

// 查看HTTPS配置
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'https'

// 查看证书配置
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'ssl.policy'

// 查看静态加密(企业版)
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'store.crypto'

// 查看备份加密
SHOW SETTINGS YIELD name, value 
WHERE name CONTAINS'backup.encryption'

六、HBase(列族型数据库)

6.1 身份鉴别

控制项测评命令达标判据
Kerberos认证klist启用Kerberos
RPC保护hbase shell status 'simple'启用SASL
超级管理员user_permissionhbase用户受控
服务认证zkCli.sh ls /hbaseZooKeeper ACL
连接加密hbase-site.xml hbase.rpc.protectionprivacy

HBase特有配置:

# 连接HBase Shell
hbase shell

# 查看HBase状态
status 'simple'
status 'detailed'

# 查看用户权限
user_permission
user_permission 'my_table'

# 查看表权限
get_table_permissions 'my_table'

# 查看ACL详情
get_acl 'my_table'

# 查看命名空间权限
list_namespace_tables 'default'
get_namespace_permissions 'default'

# 查看当前用户
whoami

# 查看集群配置(安全相关)
get_config 'hbase.rpc.protection'
get_config 'hbase.security.authentication'
get_config 'hbase.security.authorization'

# 查看Kerberos票据
klist

# 查看ZooKeeper ACL
zkCli.sh -server localhost:2181
ls /hbase
getAcl /hbase

6.2 访问控制

# 查看表级权限
grant 'my_user', 'RWCA', 'my_table'

# 查看列族级权限
grant 'my_user', 'RW', 'my_table', 'cf1'

# 查看列级权限(通过CellVisibility)
scan 'my_table', {FILTER =>"VisibilityFilter('admin')"}

# 查看标签权限(Cell ACL)
scan 'my_table', {AUTHORIZATIONS =>['admin', 'finance']}

# 查看可见性标签
get_auths 'my_user'

# 查看命名空间权限
grant_namespace 'my_user', 'RWXCA', 'my_namespace'

# 查看协处理器权限(代码级访问控制)
list_procedures

# 查看配额限制(资源访问控制)
list_quota_table_snapshots

6.3 安全审计

# 查看审计日志配置(hbase-site.xml)
# hbase.security.audit.log.events=true
# hbase.security.audit.log.events.filter=AUTHN_SUCCESS,AUTHN_FAILURE,AUTHZ_FAILURE

# 查看HBase日志(审计相关)
tail-f /var/log/hbase/hbase-master-*log |grep-i"audit\|auth\|grant"

# 查看RegionServer日志
tail-f /var/log/hbase/hbase-regionserver-*log |grep-i"access\|denied"

# 查看ZooKeeper审计日志
tail-f /var/log/zookeeper/zookeeper-*audit.log

# 查看慢查询日志
scan 'hbase:slowlog'

# 查看过程调用日志
list_procedures

6.4 数据加密

# 查看传输加密(hbase-site.xml)
# hbase.rpc.protection=privacy

# 查看静态加密(HDFS透明加密)
hdfs crypto -listZones

# 查看HBase加密(列族级)
describe 'my_table'
# 应显示:{NAME => 'cf1', ENCRYPTION => 'AES', DATA_BLOCK_ENCODING => 'NONE'}

# 查看密钥管理
hbase shell
get_key 'my_key'

# 查看HDFS加密区
hdfs dfs -ls /hbase

# 查看WAL加密
get_config 'hbase.regionserver.wal.encryption'

七、通用NoSQL安全检查

7.1 操作系统层安全

# 查看进程运行用户(不应是root)
ps-ef|grep-E'mongod|redis-server|elasticsearch|cassandra|neo4j|hbase'|grep-vgrep

# 查看文件权限
ls-la /var/lib/mongodb/
ls-la /var/lib/redis/
ls-la /var/lib/elasticsearch/
ls-la /var/lib/cassandra/
ls-la /var/lib/neo4j/
ls-la /var/lib/hbase/

# 查看配置文件权限(应640或600)
find /etc/mongodb* /etc/redis* /etc/elasticsearch* /etc/cassandra* /etc/neo4j* /etc/hbase* -type f -perm /o+rwx -ls2>/dev/null

# 查看日志文件权限(应640)
ls-la /var/log/mongodb/
ls-la /var/log/redis/
ls-la /var/log/elasticsearch/
ls-la /var/log/cassandra/
ls-la /var/log/neo4j/

# 查看端口监听(应绑定特定IP)
ss -tulnp|grep-E'27017|6379|9200|9042|7474|16000|2181'

# 查看防火墙规则
iptables -L-n|grep-E'27017|6379|9200|9042|7474'
firewall-cmd --list-all |grep-E'27017|6379|9200|9042|7474'

7.2 国密算法支持检查

# MongoDB国密(需企业版或插件)
mongo --eval"db.adminCommand({getParameter: 1, opensslVersion: 1})"|grep-i gm

# Redis国密(需国密SSL库)
redis-cli CONFIG GET tls-ciphers |grep-i sm

# Elasticsearch国密(需国密JDK)
curl-k https://localhost:9200/_ssl/certificates | jq '.[].cipher_suite'|grep-i sm

# Cassandra国密(需国密JCE)
keytool -list-v-keystore /etc/cassandra/.keystore |grep-i sm

# Neo4j国密(需国密JDK)
cypher-shell -c"SHOW SETTINGS YIELD name, value WHERE name CONTAINS 'ssl'"|grep-i gm

7.3 备份与恢复

# MongoDB备份检查
ls /backup/mongodb/
mongodump --version

# Redis备份检查
ls /backup/redis/
ls /var/lib/redis/*.rdb /var/lib/redis/*.aof

# Elasticsearch备份检查
curl-u elastic:password http://localhost:9200/_snapshot/_all

# Cassandra备份检查
ls /backup/cassandra/
nodetool listsnapshots

# Neo4j备份检查
ls /backup/neo4j/
neo4j-admin dump --database=neo4j --to=/dev/null  # 验证备份工具

# HBase备份检查
ls /backup/hbase/
hbase backup list

八、一键巡检脚本(NoSQL综合)

#!/bin/bash
# NoSQL数据库等保三级一键巡检脚本
# 适用:MongoDB / Redis / Elasticsearch / Cassandra / Neo4j / HBase

echo"===== NoSQL数据库等保三级巡检 ====="
echo"巡检时间:$(date)"
echo"主机名:$(hostname)"
echo""

# 检测安装的NoSQL产品
detect_nosql(){
forproductin mongod redis-server elasticsearch cassandra neo4j hbase-master;do
if pgrep -x"$product"> /dev/null 2>&1||command-v"$product"> /dev/null 2>&1;then
echo"$product"
fi
done
}

PRODUCTS=$(detect_nosql)
if[-z"$PRODUCTS"];then
echo"未检测到NoSQL数据库进程,尝试检查服务..."
    systemctl list-units --type=service |grep-E'mongo|redis|elastic|cassandra|neo4j|hbase'|awk'{print $1}'
exit1
fi

echo"检测到以下NoSQL产品:"
echo"$PRODUCTS"
echo""

# MongoDB 巡检
check_mongodb(){
echo"===== MongoDB 巡检 ====="

echo"--- 版本信息 ---"
    mongod --version|head-1

echo"--- 认证状态 ---"
    mongo --quiet--eval"db.adminCommand({getParameter: 1, authenticationMechanisms: 1})"2>/dev/null ||echo"未启用认证或连接失败"

echo"--- 用户列表 ---"
    mongo --quiet--eval"db.system.users.find({}, {user:1, db:1, roles:1, _id:0}).pretty()"2>/dev/null |head-20

echo"--- 网络绑定 ---"
    mongo --quiet--eval"db.adminCommand({getParameter: 1, bindIp: 1})"2>/dev/null

echo"--- 日志配置 ---"
    mongo --quiet--eval"db.adminCommand({getParameter: 1, systemLog: 1})"2>/dev/null |grep-E'path|destination'

echo"--- 慢查询配置 ---"
    mongo --quiet--eval"db.getProfilingStatus()"2>/dev/null

echo"--- 加密配置 ---"
    mongo --quiet--eval"db.adminCommand({getParameter: 1, requireTLS: 1})"2>/dev/null
echo""
}

# Redis 巡检
check_redis(){
echo"===== Redis 巡检 ====="

echo"--- 版本信息 ---"
    redis-server --version|head-1

echo"--- 认证配置 ---"
    redis-cli CONFIG GET requirepass 2>/dev/null

echo"--- ACL配置(6.0+)---"
    redis-cli ACL LIST 2>/dev/null |head-10

echo"--- 网络绑定 ---"
    redis-cli CONFIG GET bind2>/dev/null
    redis-cli CONFIG GET protected-mode 2>/dev/null

echo"--- TLS配置 ---"
    redis-cli CONFIG GET tls-port 2>/dev/null

echo"--- 危险命令检查 ---"
    redis-cli CONFIG GET rename-command 2>/dev/null

echo"--- 慢查询日志 ---"
    redis-cli SLOWLOG LEN 2>/dev/null
echo""
}

# Elasticsearch 巡检
check_elasticsearch(){
echo"===== Elasticsearch 巡检 ====="

echo"--- 版本信息 ---"
curl-s-k-u elastic:changeme https://localhost:9200 2>/dev/null | jq -r'.version.number'||echo"无法连接"

echo"--- 集群健康 ---"
curl-s-k-u elastic:changeme https://localhost:9200/_cluster/health 2>/dev/null | jq -r'.status'||echo"无法连接"

echo"--- 安全设置 ---"
curl-s-k-u elastic:changeme https://localhost:9200/_security/settings 2>/dev/null | jq '.'||echo"未启用X-Pack Security"

echo"--- 用户列表 ---"
curl-s-k-u elastic:changeme https://localhost:9200/_security/user 2>/dev/null | jq 'keys'||echo"无法获取"

echo"--- 角色列表 ---"
curl-s-k-u elastic:changeme https://localhost:9200/_security/role 2>/dev/null | jq 'keys'||echo"无法获取"

echo"--- 审计配置 ---"
curl-s-k-u elastic:changeme https://localhost:9200/_security/audit/settings 2>/dev/null | jq '.'||echo"未配置审计"
echo""
}

# Cassandra 巡检
check_cassandra(){
echo"===== Cassandra 巡检 ====="

echo"--- 版本信息 ---"
    nodetool version 2>/dev/null ||echo"无法获取版本"

echo"--- 集群状态 ---"
    nodetool status 2>/dev/null |head-10

echo"--- 角色列表 ---"
echo"LIST ROLES;"| cqlsh -u cassandra -p cassandra 2>/dev/null |head-10

echo"--- 认证配置 ---"
grep-E'authenticator|authorizer' /etc/cassandra/cassandra.yaml 2>/dev/null |head-5

echo"--- 加密配置 ---"
grep-E'server_encryption_options|client_encryption_options' /etc/cassandra/cassandra.yaml -A102>/dev/null |head-15
echo""
}

# Neo4j 巡检
check_neo4j(){
echo"===== Neo4j 巡检 ====="

echo"--- 版本信息 ---"
    neo4j --version2>/dev/null ||echo"无法获取版本"

echo"--- 服务状态 ---"
    systemctl status neo4j 2>/dev/null |grep Active ||echo"未使用systemd管理"

echo"--- 认证配置 ---"
echo"SHOW SETTINGS YIELD name, value WHERE name='dbms.security.auth_enabled';"| cypher-shell -u neo4j -p neo4j 2>/dev/null

echo"--- 用户列表 ---"
echo"SHOW USERS;"| cypher-shell -u neo4j -p neo4j 2>/dev/null |head-10

echo"--- 角色列表 ---"
echo"SHOW ROLES;"| cypher-shell -u neo4j -p neo4j 2>/dev/null |head-10

echo"--- SSL配置 ---"
echo"SHOW SETTINGS YIELD name, value WHERE name CONTAINS 'ssl';"| cypher-shell -u neo4j -p neo4j 2>/dev/null |head-10
echo""
}

# HBase 巡检
check_hbase(){
echo"===== HBase 巡检 ====="

echo"--- 版本信息 ---"
    hbase version 2>/dev/null |head-3

echo"--- 集群状态 ---"
echo"status 'simple'"| hbase shell 2>/dev/null |head-10

echo"--- 用户权限 ---"
echo"user_permission"| hbase shell 2>/dev/null |head-20

echo"--- 安全配置 ---"
grep-E'hbase.security.authentication|hbase.security.authorization|hbase.rpc.protection' /etc/hbase/conf/hbase-site.xml 2>/dev/null |head-10

echo"--- Kerberos票据 ---"
    klist 2>/dev/null |head-5||echo"未配置Kerberos"
echo""
}

# 执行巡检
forproductin$PRODUCTS;do
case$productin
        mongod)
            check_mongodb
;;
        redis-server)
            check_redis
;;
        elasticsearch)
            check_elasticsearch
;;
        cassandra)
            check_cassandra
;;
        neo4j)
            check_neo4j
;;
        hbase-master)
            check_hbase
;;
esac
done

echo"===== 通用安全检查 ====="
echo"--- 进程运行用户检查 ---"
ps-ef|grep-E'mongod|redis-server|elasticsearch|cassandra|neo4j|hbase'|grep-vgrep|awk'{print $1}'|sort|uniq-c

echo"--- 配置文件权限检查 ---"
find /etc/mongodb* /etc/redis* /etc/elasticsearch* /etc/cassandra* /etc/neo4j* /etc/hbase* -type f -perm /o+rwx -ls2>/dev/null |head-5||echo"配置文件权限正常"

echo"--- 数据目录权限检查 ---"
ls-ld /var/lib/mongodb /var/lib/redis /var/lib/elasticsearch /var/lib/cassandra /var/lib/neo4j /var/lib/hbase 2>/dev/null |awk'{print $1, $3, $4, $9}'

echo"--- 端口监听检查 ---"
ss -tulnp|grep-E'27017|6379|9200|9042|7474|16000|2181'2>/dev/null |awk'{print $1, $5, $7}'

echo"--- 备份目录检查 ---"
ls /backup/mongodb /backup/redis /backup/elasticsearch /backup/cassandra /backup/neo4j /backup/hbase 2>/dev/null |head-5||echo"未找到标准备份目录"

echo""
echo"===== 巡检完成 ====="
echo"详细结果请查看上方输出,重点关注以下高风险项:"
echo"1. 未启用认证(MongoDB/Redis等)"
echo"2. 使用默认口令(mongo/redis/elastic/cassandra/neo4j/hbase)"
echo"3. 监听地址为0.0.0.0(未绑定特定IP)"
echo"4. 未启用TLS/SSL加密"
echo"5. 未配置审计日志"
echo"6. 运行用户为root"
echo"7. 配置文件全局可读写"
echo"8. 未禁用危险命令(Redis的FLUSHALL等)"
echo"9. 未启用访问控制(RBAC/ACL)"
echo"10. 备份策略未配置"

九、高风险项重点核查清单

检查项验证命令不合规判定整改建议
MongoDB未启用认证mongo --eval "db.adminCommand({getParameter: 1, authenticationMechanisms: 1})"返回空或错误启用–auth参数
MongoDB bindIp为0.0.0.0db.adminCommand({getParameter: 1, bindIp: 1})包含0.0.0.0修改为特定IP
Redis未设置口令CONFIG GET requirepass返回空字符串设置强口令
Redis未重命名危险命令CONFIG GET rename-command无输出重命名FLUSHALL等
Elasticsearch未启用X-PackGET /_security/settings返回404启用X-Pack Security
Elasticsearch使用默认elastic/changeme尝试登录登录成功修改默认口令
Cassandra使用AllowAllAuthenticatorgrep authenticator /etc/cassandra/cassandra.yamlAllowAllAuthenticator改为PasswordAuthenticator
Neo4j未启用认证SHOW SETTINGS YIELD name, value WHERE name='dbms.security.auth_enabled'false启用认证
HBase未启用Kerberosklist无票据配置Kerberos认证
所有NoSQL未启用TLS检查各产品TLS配置未启用配置TLS证书

十、NoSQL与关系型数据库对比

对比项MongoDBRedisElasticsearchCassandraNeo4jHBase
数据模型文档键值文档/搜索宽列宽列
默认认证关闭关闭关闭关闭启用可选
原生RBAC企业版6.0+基础版支持支持支持
字段级加密企业版不支持不支持企业版不支持支持
传输加密TLSTLSTLSTLSTLSSASL/Kerberos
静态加密企业版不支持不支持企业版企业版HDFS加密
审计功能企业版ACL LOGX-Pack开源企业版日志
等保合规难度

十一、等保测评执行要点

1. 认证优先原则

  • 所有NoSQL数据库必须启用认证,禁止匿名访问
  • 优先使用SCRAM-SHA-256、Kerberos等强认证机制
  • 禁用默认账户或修改默认口令

2. 网络隔离要求

# 检查所有NoSQL绑定地址
# MongoDB
netstat-tulnp|grep27017
# Redis
netstat-tulnp|grep6379
# Elasticsearch
netstat-tulnp|grep9200
# Cassandra
netstat-tulnp|grep9042
# Neo4j
netstat-tulnp|grep7474
# HBase
netstat-tulnp|grep16000

3. 加密传输检查

  • 所有NoSQL必须启用TLS/SSL加密传输
  • 禁用不安全的SSL/TLS版本(SSLv2/SSLv3/TLS1.0)
  • 使用国密算法(SM2/SM3/SM4)需额外配置

4. 审计日志要求

  • 启用操作审计,记录认证、授权、数据变更
  • 审计日志独立存储,保留≥6个月
  • 定期分析审计日志,发现异常行为

5. 数据安全保护

  • 敏感数据启用字段级加密或应用层加密
  • 启用静态数据加密(TDE)
  • 实施数据脱敏(动态或静态)

参考标准:GB/T 22239-2019、GB/T 28448-2019、各NoSQL数据库官方安全指南、OWASP NoSQL安全指南

适用版本

  • MongoDB 4.4+ / 5.0+ / 6.0+
  • Redis 6.0+ / 7.0+
  • Elasticsearch 7.x+ / 8.x+
  • Cassandra 3.11+ / 4.0+
  • Neo4j 4.x+ / 5.x+
  • HBase 2.x+

验证环境:x86_64 / ARM64 / 国产化芯片(飞腾/鲲鹏/龙芯/海光/兆芯/申威)

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

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

相关推荐

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