Ubuntu 上 PostgreSQL 安全设置清单
一 身份与认证加固
sudo -u postgres psqlALTER USER postgres PASSWORD 'YourStrongPassword!';pg_hba.conf 中本地项由 peer 改为 md5 或 scram-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-256host appdb appuser 192.168.1.0/24 scram-sha-256host all all 0.0.0.0/0 rejectsudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcpsudo 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 --reloadsudo systemctl restart postgresql@16-main)。三 加密与传输安全
postgresql.conf 中开启 SSL,并配置服务器证书与私钥,强制或优先使用加密通道,防止明文传输泄露凭据与数据。
ssl = on,配置 ssl_cert_file、ssl_key_file,必要时设置 ssl_prefer_server_ciphers = on。sslmode=require 或更高等级,确保全链路加密。四 审计、备份与补丁
pg_dump -U postgres -d appdb > backup.sql。五 快速检查清单
| 检查项 | 期望状态 | 验证方法 |
|---|---|---|
| 超级用户口令强度 | 已设置且复杂 | 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 验证 |