温馨提示×

Ubuntu上PostgreSQL安全如何设置

小樊
32
2025-12-12 19:45:09
栏目: 云计算

Ubuntu 上 PostgreSQL 安全设置清单

一 身份与认证加固

  • 修改默认管理员口令并保护本地登录:为 postgres 设置强口令,避免空口令或仅本地系统账户可免密登录;在本地将认证方式由 peer 调整为 md5 或更强的 scram-sha-256,防止本地提权滥用。示例:
    • 进入 psql:sudo -u postgres psql
    • 修改口令:ALTER USER postgres PASSWORD 'YourStrongPassword!';
    • pg_hba.conf 中本地项由 peer 改为 md5scram-sha-256 并重启服务。
  • 创建最小权限的专用账户与数据库:应用使用独立账号,仅授予目标库的必要权限,避免共享超级用户。
    • 示例:
      • CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8';
      • CREATE USER appuser WITH ENCRYPTED PASSWORD 'SecurePass123';
      • GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
  • 强制使用强认证方式:在 pg_hba.conf 中优先使用 scram-sha-256,淘汰 md5 等弱算法。

二 网络与访问控制

  • 限制监听地址:在 postgresql.conf 中仅开放必要接口,生产环境建议绑定到内网地址而非 *
    • 示例:listen_addresses = '127.0.0.1,10.0.0.5'
  • 精细化客户端认证:在 pg_hba.conf 中按网段、用户、数据库限制来源,优先使用 scram-sha-256,并仅开放必要来源。
    • 示例:
      • 本地:local all all scram-sha-256
      • 内网应用:host appdb appuser 192.168.1.0/24 scram-sha-256
      • 禁止公网直连:host all all 0.0.0.0/0 reject
  • 边界与主机防火墙:仅放通应用所在网段到 5432/TCP,云上配合 安全组 白名单。
    • UFW:sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp
    • firewalld:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="5432" protocol="tcp" accept' && sudo firewall-cmd --reload
  • 变更生效:修改配置后重启服务(如:sudo systemctl restart postgresql@16-main)。

三 加密与传输安全

  • 启用 SSL/TLS 加密:在 postgresql.conf 中开启 SSL,并配置服务器证书与私钥,强制或优先使用加密通道,防止明文传输泄露凭据与数据。
    • 关键项:ssl = on,配置 ssl_cert_filessl_key_file,必要时设置 ssl_prefer_server_ciphers = on
  • 客户端连接加密:应用连接字符串启用 sslmode=require 或更高等级,确保全链路加密。

四 审计、备份与补丁

  • 审计与日志:启用与合理保留数据库日志,记录认证成功/失败、权限变更、敏感操作等,用于安全审计与异常追踪。
  • 备份与恢复:定期做逻辑或物理备份,验证可恢复性;示例逻辑备份:pg_dump -U postgres -d appdb > backup.sql
  • 补丁与更新:及时更新 PostgreSQL 与操作系统补丁,修复已知漏洞,降低被攻陷风险。

五 快速检查清单

检查项 期望状态 验证方法
超级用户口令强度 已设置且复杂 sudo -u postgres psql -c "\du postgres" 查看账户并尝试登录
认证方式 本地与远程均使用 scram-sha-256 检查 pg_hba.conf 中 METHOD 字段
监听地址 仅内网或必要地址 grep listen_addresses /etc/postgresql/*/main/postgresql.conf
客户端白名单 仅允许应用网段 检查 pg_hba.conf 的 host 规则与防火墙
端口开放 仅放通 5432/TCP 到白名单 `ss -lntp
SSL/TLS 已启用并强制 SHOW ssl; 与连接串 sslmode=require 测试
备份 定期执行且可恢复 查看最近备份时间与 pg_restore 验证

0