Linux中pgAdmin的安全设置有哪些
小樊
40
2025-12-09 22:54:32
Linux 上 pgAdmin 的安全设置清单
一 身份与访问控制
- 启用并强化服务器模式:将 SERVER_MODE = True,通过内置账户体系进行集中管理,避免以桌面模式直接暴露。
- 强制强密码策略与定期更换,禁用默认或过期账户。
- 实施最小权限原则:仅为 pgAdmin 创建所需的数据库角色,按需授予 CONNECT、CREATE、TEMP 等权限,避免授予 SUPERUSER。
- 在 pgAdmin 内按用户/组分配角色与权限,仅开放必要的服务器与数据库对象访问。
- 定期审计与清理不再使用的账户与服务器连接。
二 网络与端口加固
- 更改默认端口:编辑 /etc/pgadmin4/config_local.py,设置如 WEB_PORT = 5051,降低被自动化扫描命中概率。
- 限制访问来源:仅在内网或跳板机网段开放端口;使用 ufw 或 firewalld 精确放行,例如:
- ufw:
sudo ufw allow 5051/tcp
- firewalld:
sudo firewall-cmd --permanent --add-port=5051/tcp && sudo firewall-cmd --reload
- 在 CentOS/RHEL 上若启用 SELinux,按需放行网络访问:
sudo setsebool -P httpd_can_network_connect_db 1
- 避免将 pgAdmin 直接暴露在公网,优先置于反向代理/内网之后。
三 传输加密与证书管理
- 启用 HTTPS/TLS:在 /etc/pgadmin4/config_local.py 中配置证书与密钥:
SSL_CERTFILE = '/etc/pgadmin4/server.crt'
SSL_KEYFILE = '/etc/pgadmin4/server.key'
- 证书可用 OpenSSL 生成:
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/pgadmin4/server.key -out /etc/pgadmin4/server.crt
- 同时加固后端 PostgreSQL SSL:在 postgresql.conf 中启用
ssl = on
ssl_cert_file = '/path/server.crt'
ssl_key_file = '/path/server.key'
- 在 pg_hba.conf 中优先使用 hostssl 并选择安全认证方式(如 md5/scram-sha-256):
hostssl all all 0.0.0.0/0 md5
- 变更后重启服务:
sudo systemctl restart pgadmin4 postgresql。
四 数据库与系统层安全
- 配置 pg_hba.conf 的 ACL:按来源网段、用户、数据库、认证方式精细化控制,优先 scram-sha-256,必要时限制为 127.0.0.1/32 本机访问。
- 强化数据库账户:修改 postgres 等超级用户默认口令,按业务创建最小权限角色;按需授予数据库级权限(如
GRANT ALL PRIVILEGES ON DATABASE db TO app;)。
- 启用数据库日志审计:在 postgresql.conf 中开启
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
- 系统与软件及时更新:
apt update && apt upgrade 或 yum update -y,及时修补漏洞。
- 加强系统加固:限制 root 直接 SSH 登录,管理任务通过 sudo 执行。
五 运维与监控实践
- 定期更新 pgAdmin 与 PostgreSQL 至最新稳定版,修复已知安全问题。
- 启用并定期检查日志(pgAdmin 日志与 PostgreSQL 服务器日志),关注异常登录、权限变更与失败连接。
- 结合变更管理与备份:变更前备份 config_local.py、pg_hba.conf、postgresql.conf 与证书,变更后在维护窗口内滚动重启并验证。