温馨提示×

centos postgresql安全设置策略

小樊
37
2025-12-11 21:24:36
栏目: 云计算

CentOS 上 PostgreSQL 安全设置策略

以下策略覆盖系统加固、网络访问控制、身份认证、加密传输、权限最小化、审计与备份恢复,适用于 CentOS 7/8/9,可按需裁剪。

一 系统与基础加固

  • 保持系统与数据库更新:执行 sudo yum update -y,及时修补漏洞;为安全更新建立固定维护窗口与回滚预案。
  • 最小权限运行:将数据库服务以专用系统用户(如 postgres)运行,禁止 root 直连数据库;限制数据库主目录与配置文件的访问权限(仅 postgres 与必要管理员可读写)。
  • 服务与端口治理:仅开放必要端口(默认 5432/TCP),避免使用默认端口带来的自动化扫描风险;变更端口需同步更新防火墙与应用配置。
  • 备份与恢复演练:制定周期性备份(如每日全量/持续 WAL 归档),定期在隔离环境验证可恢复性与恢复时间目标(RTO/RPO)。

二 网络与防火墙

  • 默认拒绝:防火墙策略遵循“默认拒绝、按需放行”,仅允许来自可信网段/跳板机的 5432/TCP 访问。
  • firewalld 示例(CentOS 7+):
    • 放行端口:sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
    • 使生效:sudo firewall-cmd --reload
    • 校验:sudo firewall-cmd --list-ports
  • 内网优先:生产环境建议将数据库置于 VPC/内网,通过跳板机或内网应用访问;公网直连仅作为例外并配合更强认证与加密。
  • 变更生效:网络与防火墙调整后,按需重启数据库服务以应用新规则。

三 数据库配置与身份认证

  • 监听与端口:在 postgresql.conf 中限制监听地址(如仅本地 localhost 或指定网段),避免不必要的公网暴露;端口变更需同步更新客户端与防火墙。
  • 客户端认证:在 pg_hba.conf 中采用“就近原则 + 强认证”,示例:
    • 本地连接:local all all peer/md5(本地优先用 peer,远程用 md5/更强方式)
    • 内网管理:hostssl all admins 10.0.0.0/8 md5
    • 应用访问:hostssl mydb app 10.1.2.0/24 md5
    • 拒绝默认全放开:避免使用 host all all 0.0.0.0/0 md5 这类宽泛规则。
  • 强制加密:启用 SSL/TLS 并优先使用 hostssl 条目,配置服务器证书与密钥,禁用明文连接。
  • 生效方式:修改配置后执行 sudo systemctl restart postgresql 使配置生效。

四 权限最小化与账户治理

  • 角色与用户:遵循最小权限原则,避免使用 SUPERUSER 作为应用账户;按需创建角色并授予登录、建库、只读等细粒度权限。
  • 典型授权范式:
    • 应用只读账号:GRANT CONNECT ON DATABASE mydb TO app_r; GRANT USAGE ON SCHEMA public TO app_r; GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_r;(按需扩展到新表)
    • 应用读写账号:GRANT INSERT, UPDATE, DELETE 到目标表;避免使用 GRANT ALL PRIVILEGES ON DATABASE 授予过度权限。
    • 撤销与回收:对不再使用的角色执行 REVOKEDROP ROLE;定期审计 \dp 与 information_schema 权限视图。
  • 口令策略:设置强口令并定期轮换;禁止共享账号与明文口令落地。

五 加密传输与审计日志

  • 传输加密:在 postgresql.conf 启用 ssl = on,配置 ssl_cert_filessl_key_file,并设置 ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL’ssl_prefer_server_ciphers = on;在 pg_hba.conf 中对远程连接使用 hostssl
  • 证书管理:使用受信任 CA 签发或企业内网 CA 证书;妥善保护私钥,限制证书文件权限。
  • 审计与日志:启用 logging_collector = on,设置 log_directorylog_filename;按需记录 DDL/DML(如 log_statement = ‘all’ 或 ddl),并集中到安全的日志平台进行留存与告警。
  • 系统审计:启用 auditd 记录关键系统调用与登录行为,使用 ausearch/aureport 分析审计日志,满足合规与取证需求。

0