温馨提示×

PostgreSQL在CentOS上的安全设置

小樊
44
2025-12-05 22:48:20
栏目: 云计算

CentOS 上 PostgreSQL 的安全加固清单

一 系统与安装安全基线

  • 保持系统与数据库最新:执行 sudo yum update -y,及时修补漏洞。
  • 安装组件:使用系统仓库安装 postgresql-serverpostgresql-contrib
  • 初始化与自启:运行 sudo postgresql-setup initdb,随后 sudo systemctl start postgresql && sudo systemctl enable postgresql
  • 原则:默认仅本地访问,按需开放;坚持最小权限与最小暴露面。

二 网络与防火墙

  • 监听地址:在 postgresql.conf 中优先设置 listen_addresses = ‘localhost’;确需远程时再改为指定内网地址或谨慎使用 ‘*’
  • 端口策略:保持默认 5432/TCP,或改为非标准端口以降低噪音暴露;在 postgresql.conf 设置 port = 5432(或自定义端口)。
  • firewalld 规则:仅放通必要来源,例如
    • 放通某网段:sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“5432” protocol=“tcp” accept’
    • 或放通单 IP:sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10” port port=“5432” protocol=“tcp” accept’
    • 使配置生效:sudo firewall-cmd --reload
    • 验证:sudo firewall-cmd --list-all
  • SELinux:如启用,确保与数据库端口策略一致;不建议为便利直接改为 permissive,必要时使用 semanage port 等工具做精细化放行。

三 认证与访问控制

  • 本地认证:在 pg_hba.conf 优先使用 peerident 用于本机管理连接,避免口令在网络中明文传输。
  • 远程认证:对远程仅开放必要来源与账户,采用强口令或证书,并使用 md5/scram-sha-256 等安全方法;示例
    • 仅内网:host all all 192.168.1.0/24 md5
    • 禁止公网 0.0.0.0/0 的全放开规则
  • 动态生效:修改 postgresql.confpg_hba.conf 后执行 sudo systemctl restart postgresql;变更前先在测试环境验证。

四 加密与传输安全

  • 启用 TLS:在 postgresql.conf 设置 ssl = on,并配置
    • ssl_cert_file = ‘/path/to/server.crt’
    • ssl_key_file = ‘/path/to/server.key’
    • 可选增强:ssl_ciphers = ‘HIGH:MEDIUM:+3DES:!aNULL’ssl_prefer_server_ciphers = on
  • 证书管理:生产环境使用受信任 CA 签发的证书;自签名证书仅用于测试或内部受控网络。
  • 客户端强制:在 pg_hba.conf 对远程主机使用 hostssl 条目,确保仅 TLS 连接被允许。

五 审计、备份与持续运维

  • 日志与审计:开启日志收集与关键语句审计
    • 基础:logging_collector = onlog_directory = ‘pg_log’log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
    • 审计:log_statement = ‘all’(或至少 ddl、error),并定期审阅日志
    • 系统级审计:启用 auditd,使用 ausearch/aureport 分析 /var/log/audit/audit.log
  • 备份与恢复:定期做逻辑或物理备份并验证可恢复性
    • 逻辑:pg_dump -U user -W -F t -f backup.tar dbname
    • 物理:pg_basebackup -D /var/lib/pgsql/backup -U backupuser -v -P --wal-method=stream
  • 补丁与核查:定期 yum update 与配置复查;验证仅必要端口对外开放、仅可信来源可连、TLS 生效、权限最小化。

0