等保测评命令——PostgreSQL数据库

依据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级”安全计算环境” 条款,结合 PostgreSQL 15/14/13 官方安全指南 及多家测评机构现场实践,给出可直接落地的 测评命令清单

已在 CentOS 7 + PostgreSQL 15.4 环境验证,默认 psql -U postgres -h 127.0.0.1 -p 5432 连接。


一、身份鉴别(8.1.4.1)

控制项测评命令达标判据
空口令账号SELECT usename FROM pg_user WHERE passwd IS NULL;无返回行
账号唯一性SELECT usename FROM pg_user GROUP BY usename HAVING COUNT(*)>1;无返回行
密码复杂度SHOW shared_preload_libraries; 包含 passwordcheck
SELECT name,setting FROM pg_settings WHERE name LIKE 'password%';
长度≥8,含大小写、数字、特殊字符
密码有效期SELECT usename,valuntil FROM pg_user WHERE valuntil IS NOT NULL;有效期 ≤90 天
登录失败锁定SHOW auth_delay.max_auth_delay;启用 auth_delay 模块或 fail2ban
会话超时SHOW idle_in_transaction_session_timeout;≤600 s
远程鉴别加密SHOW ssl; + SHOW ssl_ciphers;on 且 TLS1.2+

二、访问控制(8.1.4.2)

控制项测评命令达标判据
默认/匿名账户SELECT usename FROM pg_user WHERE usename IN ('','test','postgres');已删除或禁用
最小权限SELECT grantee,privilege_type FROM information_schema.role_table_grants WHERE privilege_type='ALL';仅授权业务所需
三权分立角色SELECT rolname FROM pg_roles WHERE rolname IN ('app_admin','app_audit','app_sec');角色分离
网络白名单SELECT * FROM pg_hba_file_rules;仅允许业务网段/堡垒机
文件权限ls -ld $PGDATA0700 postgres:postgres

三、安全审计(8.1.4.3)

控制项测评命令达标判据
日志开关SHOW log_destination; SHOW logging_collector;stderr & on
审计级别SHOW log_statement; SHOW log_checkpoints;all 或 ddl
日志字段查看日志样例:
tail -n 1 $PGDATA/log/postgresql-*.log
含时间、用户、客户端 IP、SQL、结果
日志大小与保留SHOW log_rotation_age; SHOW log_rotation_size;单文件 ≤100 MB,保留 ≥6 个月
日志权限ls -l $PGDATA/log/640 postgres:postgres

四、入侵防范(8.1.4.4)

控制项测评命令达标判据
补丁更新SELECT version();版本 ≥ 官方最新季度补丁
最小安装`yum list installedgrep -i postgres`仅安装必要组件
监听地址SHOW listen_addresses;非 *
高危端口`ss -tulnpgrep 5432`仅业务网段可访问

五、恶意代码防范(8.1.4.5)

控制项测评命令达标判据
杀毒软件systemctl is-active clamd
freshclam --version
实时保护开启,病毒库≤24 h
可信启动`dmesggrep -i ima`IMA/EVM 已启用

六、数据完整性(8.1.4.7)

控制项测评命令达标判据
传输完整性SHOW ssl; + openssl s_client -connect ip:5432TLS1.2+
存储完整性SHOW data_checksums;on
WAL 完整性SHOW wal_log_hints;on

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

控制项测评命令达标判据
本地备份pg_dumpall --file=/backup/pg-$(date +%F).sql每日全量,保留≥30 天
异地备份ls -l /backup/offsite/异地同步
恢复演练pg_restore --list /backup/latest.dump验证可恢复
PITRSELECT * FROM pg_stat_archiver;归档正常

八、剩余信息保护(8.1.4.10)

控制项测评命令达标判据
鉴别信息清除SHOW password_encryption;scram-sha-256
日志清零访谈 + 查看 secure_delete 脚本删除前覆写

一键巡检脚本(可直接使用)

#!/bin/bash
# PostgreSQL 等保三级一键巡检脚本
# 适用:PostgreSQL 13/14/15
# 执行用户:postgres

exportPGDATA=/var/lib/pgsql/15/data
exportPATH=/usr/pgsql-15/bin:$PATH

echo"===== 1 身份鉴别 ====="
psql -U postgres -c"SELECT '空口令账户',usename FROM pg_user WHERE passwd IS NULL;"
psql -U postgres -c"SELECT name,setting FROM pg_settings WHERE name LIKE 'password%';"
psql -U postgres -c"SHOW ssl; SHOW ssl_ciphers; SHOW idle_in_transaction_session_timeout;"

echo"===== 2 访问控制 ====="
psql -U postgres -c"SELECT usename FROM pg_user WHERE usename IN ('','test','postgres');"
psql -U postgres -c"SELECT * FROM pg_hba_file_rules;"
ls-ld$PGDATA

echo"===== 3 安全审计 ====="
psql -U postgres -c"SHOW log_destination; SHOW logging_collector; SHOW log_statement;"
ls-l$PGDATA/log/

echo"===== 4 入侵防范 ====="
psql -U postgres -c"SELECT version();"
psql -U postgres -c"SHOW listen_addresses;"
ss -tulnp|grep5432

echo"===== 5 数据完整性 ====="
psql -U postgres -c"SHOW data_checksums; SHOW wal_log_hints;"

echo"===== 6 备份检查 ====="
ls-l /backup/pg-*.sql 2>/dev/null ||echo"备份目录未配置"
psql -U postgres -c"SELECT * FROM pg_stat_archiver;"

关键配置说明

1. 密码复杂度配置(postgresql.conf)

# 加载密码检查模块
shared_preload_libraries='passwordcheck'

# 或自定义策略(需创建扩展)
password_encryption='scram-sha-256'

2. 登录失败锁定方案

PostgreSQL 原生不支持登录失败锁定,需通过以下方式实现:

方案一:auth_delay 模块

# postgresql.conf
shared_preload_libraries='auth_delay'
auth_delay.milliseconds=5000

方案二:fail2ban 集成

# 安装 fail2ban
yum install fail2ban

# 配置 /etc/fail2ban/jail.local
[postgresql]
enabled =true
port =5432
filter = postgresql
logpath = /var/lib/pgsql/15/data/log/postgresql-*.log
maxretry =5
bantime =3600

3. 网络访问控制(pg_hba.conf)

# 查看当前规则
psql -U postgres -c"SELECT * FROM pg_hba_file_rules;"

# 合规配置示例(pg_hba.conf)
# TYPE  DATABASE        USER            ADDRESS                 METHOD
hostssl all             all             10.0.0.0/24             scram-sha-256
host    all             all             127.0.0.1/32            scram-sha-256
# 拒绝其他所有连接
host    all             all             0.0.0.0/0               reject

高风险项重点核查清单

检查项验证命令不合规判定整改建议
空口令账户SELECT usename FROM pg_user WHERE passwd IS NULL存在返回行立即执行 DROP USER 或设置密码
默认账户未清理SELECT usename FROM pg_user WHERE usename='test'存在 test/postgres 默认账户删除测试账户,重命名 postgres
审计未启用SHOW logging_collector值为 off修改 logging_collector=on 并重启
密码复杂度未配置SHOW shared_preload_libraries不包含 passwordcheck安装 contrib 包并配置参数
无SSL加密SHOW ssl值为 off配置 SSL 证书并启用
监听地址过大SHOW listen_addresses值为 *修改为特定 IP 或 localhost
无异地备份ls /backup/offsite/目录不存在或为空配置 rsync/s3 异地同步

版本差异说明(13 vs 14 vs 15)

功能项PostgreSQL 13PostgreSQL 14PostgreSQL 15
默认认证方式md5scram-sha-256scram-sha-256
并行 vacuum支持支持增强
逻辑复制基础增强支持两阶段提交
审计功能依赖日志依赖日志依赖日志
数据校验支持支持支持

建议升级至 PostgreSQL 14+,默认使用 scram-sha-256 认证,安全性更高。


测评执行要点

1. 权限要求

  • 系统命令需 postgres 用户或 root 权限
  • 数据库命令需 SUPERUSER 权限或 pg_read_all_settings 角色

2. 环境变量配置

exportPGDATA=/var/lib/pgsql/15/data
exportPATH=/usr/pgsql-15/bin:$PATH
exportPGUSER=postgres
exportPGHOST=127.0.0.1
exportPGPORT=5432

3. 现场核查重点

  • 密码复杂度:尝试创建弱口令用户验证 passwordcheck 是否生效
  • 审计完整性:抽查 $PGDATA/log/ 下日志文件,确认包含连接失败、DDL 操作记录
  • 网络加密:使用 openssl s_client -connect ip:5432 验证是否为 TLS 握手
  • 备份有效性:现场执行 pg_restore --list 验证备份文件可解析

4. 三权分立实施建议

PostgreSQL 通过角色实现三权分立:

-- 创建系统管理员(仅管理权限)
CREATE ROLE app_admin WITH LOGIN CREATEDB CREATEROLE;

-- 创建安全管理员(管理用户和权限)
CREATE ROLE app_sec WITH LOGIN CREATEUSER;

-- 创建审计管理员(查看日志,无业务权限)
CREATE ROLE app_audit WITH LOGIN;
GRANT pg_read_all_settings TO app_audit;
GRANT pg_read_all_stats TO app_audit;

使用提示

1. 变量说明

  • $PGDATA 默认 /var/lib/pgsql/15/data,可按实际版本修改(如 /var/lib/pgsql/14/data
  • 需确保 psql 在 PATH 中,或指定完整路径 /usr/pgsql-15/bin/psql

2. 图形化工具

通过 pgAdmin → 服务器状态 → 日志,可导出合规报告。

3. 日志分析工具

推荐使用 pgBadger 生成审计报告:

pgbadger /var/lib/pgsql/15/data/log/postgresql-*.log -o report.html

参考标准:GB/T 22239-2019、GB/T 28448-2019、PostgreSQL Security Guide
适用版本:PostgreSQL 13/14/15
验证环境:CentOS 7.9 / RHEL 8 / Rocky Linux 8

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

A校园虚拟空间的头像A校园虚拟空间

相关推荐

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