PostgreSQL在Linux上的安全设置
导读:PostgreSQL 在 Linux 上的安全设置 一 基础安全基线 保持系统与数据库更新:执行系统包更新(如 yum update -y 或 apt-get update && apt-get upgrade),及时修补...
PostgreSQL 在 Linux 上的安全设置
一 基础安全基线
- 保持系统与数据库更新:执行系统包更新(如 yum update -y 或 apt-get update & & apt-get upgrade),及时修补漏洞。
- 最小权限原则:仅授予业务所需权限,避免使用 superuser 连接应用。
- 强口令与轮换:为数据库角色设置复杂口令并定期更换,禁止共享账号。
- 本地安全:限制 postgres 系统账号登录,仅用于运维;应用与数据库分离账号体系。
- 备份与恢复演练:定期使用 pg_dump 做逻辑备份,验证可恢复性并保留多份副本。
二 网络与防火墙
- 监听范围最小化:在 postgresql.conf 中设置 listen_addresses 仅包含必要地址,若仅本机访问可设为 localhost 或空以仅用 Unix 域套接字。
- 防火墙精准放行:
- firewalld(RHEL/CentOS 7+):仅允许受控来源访问 5432/tcp,例如:
- 按端口:sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp & & sudo firewall-cmd --reload
- 按服务:sudo firewall-cmd --permanent --add-service=postgresql & & sudo firewall-cmd --reload
- 验证:sudo firewall-cmd --list-all
- firewalld(RHEL/CentOS 7+):仅允许受控来源访问 5432/tcp,例如:
- 边界与跳板:生产环境优先将数据库置于私有子网,通过跳板机或内网代理访问;必要时使用 SSH 反向端口转发 做临时维护通道。
- 连接测试:从受控主机验证 nc -zv your_db_host 5432 或 telnet your_db_host 5432。
三 认证与访问控制
- 配置文件分工:
- postgresql.conf:控制监听地址与端口(如 listen_addresses、port)。
- pg_hba.conf:控制“谁(用户/组)从哪(来源网段)用哪种方式(METHOD)连哪些库”。
- 推荐做法:
- 本地连接优先使用 peer 或 ident;远程连接使用 scram-sha-256(较 md5 更强)。
- 示例(仅示例,生产请进一步收敛网段与用户):
- 本地:local all all peer
- 内网应用:hostssl all app_user 192.168.1.0/24 scram-sha-256
- 管理通道:hostssl all admin_user 203.0.113.10/32 scram-sha-256
- 变更生效:修改 pg_hba.conf 后执行 SELECT pg_reload_conf(); 或重启服务。
四 传输加密与证书配置
- 启用 TLS:在 postgresql.conf 中开启 ssl = on,并配置证书与密钥:
- 示例:
- ssl = on
- ssl_cert_file = ‘/path/to/server.crt’
- ssl_key_file = ‘/path/to/server.key’
- 如需双向认证:ssl_ca_file = ‘/path/to/ca.crt’
- 示例:
- 密码学建议:启用 ssl_prefer_server_ciphers = on,优先使用 TLS 1.2/1.3 与高强套件。
- 证书获取:可使用 Let’s Encrypt 或 OpenSSL 自建 CA 与服务器/客户端证书;客户端证书 CN 建议与数据库角色名一致以便映射身份。
五 审计监控与备份恢复
- 审计与日志:
- 启用数据库日志(如 log_min_messages、日志目录等),并结合 pg_stat_statements 做慢查询与异常检测。
- 系统级审计:启用 auditd,记录关键命令与登录,使用 ausearch/aureport 分析 /var/log/audit/audit.log。
- SELinux:若启用,按需放行数据库端口或创建自定义策略,避免直接改为 permissive 模式。
- 备份与演练:
- 逻辑备份:pg_dump -U user -W -F t -f backup.tar dbname;定期异地/离线保存。
- 恢复验证:定期在隔离环境演练恢复流程,校验数据一致性与可用性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PostgreSQL在Linux上的安全设置
本文地址: https://pptw.com/jishu/749060.html
