1. 及时更新系统与软件版本
保持CentOS系统、pgAdmin及PostgreSQL数据库为最新版本,优先安装官方发布的安全补丁(如修复CVE-2025-2945等漏洞),避免已知安全风险被利用。
2. 强化密码策略
为用户账户(包括PostgreSQL超级用户、pgAdmin管理员账户)设置强密码(组合大小写字母、数字、特殊字符,长度≥8位);定期更换密码(如每90天),禁用默认密码(如pgAdmin初始安装后的默认账号密码);可通过pgAdmin的“用户属性→定义→密码策略”设置密码复杂度要求(如最小大写字母数、数字数等)。
3. 配置防火墙限制访问
使用firewalld或iptables配置防火墙规则,仅允许受信任的IP地址或IP段访问pgAdmin服务端口(默认5050或自定义端口);例如通过firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="5050" protocol="tcp" accept' --permanent添加规则,随后firewall-cmd --reload生效。
4. 启用SSL/TLS加密通信
为pgAdmin和PostgreSQL配置SSL/TLS加密,保护数据传输安全:
openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj "/CN=localhost"),修改postgresql.conf开启SSL(ssl = on; ssl_cert_file = 'server.crt'; ssl_key_file = 'server.key'),并设置pg_hba.conf强制加密连接(如hostssl all all 0.0.0.0/0 certfile='/path/to/server.crt');config_local.py添加SSL证书路径(SSL_CERT = '/etc/pgsql/ssl/server.crt'; SSL_KEY = '/etc/pgsql/ssl/server.key'),或通过Web界面配置(服务器属性→连接→SSL→勾选“Require a secure connection”)。5. 实施严格的访问控制
pg_hba.conf文件,限制用户可从的IP地址连接数据库(如host all postgres 192.168.1.100/32 md5,仅允许指定IP的postgres用户连接);/usr/lib/python2.7/site-packages/pgadmin4-web/config_local.py)及证书文件的权限为仅所有者可读(chmod 600 /path/to/config_file、chmod 600 /path/to/cert_key_files)。6. 启用日志审计与监控
开启pgAdmin和PostgreSQL的详细日志记录,监控异常活动:
/var/log/pgadmin/,可通过配置文件调整日志级别(如DEBUG);log_directory = 'pg_log'、log_statement = 'all')记录所有SQL操作,便于事后审计;auditd等工具监控关键文件(如/etc/passwd、/etc/shadow、pgAdmin配置文件)的更改,及时发现未授权修改。7. 限制远程访问与服务
Port 59222)、禁用密码登录(PasswordAuthentication no)、限制允许登录的用户(AllowUsers admin@192.168.1.*),并启用密钥认证;remote_connect、remote_query),减少攻击面。8. 定期备份与恢复演练
定期备份pgAdmin配置文件(如/usr/lib/python2.7/site-packages/pgadmin4-web/)及PostgreSQL数据库,使用pg_dump或第三方工具(如Barman)进行增量/全量备份;定期测试备份恢复流程,确保在安全事件(如数据泄露、系统崩溃)后可快速恢复数据。