各位大佬,想看那种网络设备/操作系统/数据库/中间件的测评命令清单,可在留言区留言!
依据 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 USERS | neo4j账户强口令 |
| 密码复杂度 | 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_permission | hbase用户受控 |
| 服务认证 | zkCli.sh ls /hbase | ZooKeeper ACL |
| 连接加密 | hbase-site.xml hbase.rpc.protection | privacy |
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.0 | db.adminCommand({getParameter: 1, bindIp: 1}) | 包含0.0.0.0 | 修改为特定IP |
| Redis未设置口令 | CONFIG GET requirepass | 返回空字符串 | 设置强口令 |
| Redis未重命名危险命令 | CONFIG GET rename-command | 无输出 | 重命名FLUSHALL等 |
| Elasticsearch未启用X-Pack | GET /_security/settings | 返回404 | 启用X-Pack Security |
| Elasticsearch使用默认elastic/changeme | 尝试登录 | 登录成功 | 修改默认口令 |
| Cassandra使用AllowAllAuthenticator | grep authenticator /etc/cassandra/cassandra.yaml | AllowAllAuthenticator | 改为PasswordAuthenticator |
| Neo4j未启用认证 | SHOW SETTINGS YIELD name, value WHERE name='dbms.security.auth_enabled' | false | 启用认证 |
| HBase未启用Kerberos | klist | 无票据 | 配置Kerberos认证 |
| 所有NoSQL未启用TLS | 检查各产品TLS配置 | 未启用 | 配置TLS证书 |
十、NoSQL与关系型数据库对比
| 对比项 | MongoDB | Redis | Elasticsearch | Cassandra | Neo4j | HBase |
|---|---|---|---|---|---|---|
| 数据模型 | 文档 | 键值 | 文档/搜索 | 宽列 | 图 | 宽列 |
| 默认认证 | 关闭 | 关闭 | 关闭 | 关闭 | 启用 | 可选 |
| 原生RBAC | 企业版 | 6.0+ | 基础版 | 支持 | 支持 | 支持 |
| 字段级加密 | 企业版 | 不支持 | 不支持 | 企业版 | 不支持 | 支持 |
| 传输加密 | TLS | TLS | TLS | TLS | TLS | SASL/Kerberos |
| 静态加密 | 企业版 | 不支持 | 不支持 | 企业版 | 企业版 | HDFS加密 |
| 审计功能 | 企业版 | ACL LOG | X-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