Ubuntu中pgAdmin安全设置步骤
sudo -u postgres psql进入PostgreSQL命令行,执行\password postgres命令,设置复杂密码(包含大小写字母、数字和特殊字符)。ufw(Uncomplicated Firewall)工具限制pgAdmin的访问范围:sudo ufw allow from <trusted_ip> to any port 5050/tcp # 仅允许特定IP访问pgAdmin端口
sudo ufw enable # 启用防火墙
替换<trusted_ip>为你的实际可信IP地址(如公司IP或家庭IP),避免暴露pgAdmin到公网。sudo mkdir -p /etc/ssl/private/pgadmin /etc/ssl/certs/pgadmin
sudo openssl genrsa -out /etc/ssl/private/pgadmin/pgadmin.key 2048 # 生成2048位私钥
sudo openssl req -new -key /etc/ssl/private/pgadmin/pgadmin.key -out /etc/ssl/certs/pgadmin/pgadmin.csr # 创建证书签名请求(CSR)
sudo openssl x509 -req -days 365 -in /etc/ssl/certs/pgadmin/pgadmin.csr -signkey /etc/ssl/private/pgadmin/pgadmin.key -out /etc/ssl/certs/pgadmin/pgadmin.crt # 生成自签名证书(有效期365天)
sudo cat /etc/ssl/private/pgadmin/pgadmin.key /etc/ssl/certs/pgadmin/pgadmin.crt > /etc/ssl/certs/pgadmin/pgadmin.pem # 合并为PEM格式
/etc/pgadmin/pgadmin.conf),添加以下内容:[server]
ssl = on
ssl_cert_file = /etc/ssl/certs/pgadmin/pgadmin.pem
ssl_key_file = /etc/ssl/private/pgadmin/pgadmin.key
保存后重启pgAdmin服务:sudo systemctl restart pgadmin4
访问pgAdmin时使用https://your_server_ip:5050,浏览器会提示自签名证书风险,选择“继续访问”即可。pg_hba.conf文件(路径通常为/etc/postgresql/<version>/main/pg_hba.conf),限制允许连接的IP和用户。例如:# 仅允许本地和特定IP通过密码认证连接
host all all 127.0.0.1/32 md5
host all all <trusted_ip>/32 md5
保存后重启PostgreSQL服务:sudo systemctl restart postgresql
sudo apt update && sudo apt upgrade -y # 更新系统
sudo pip3 install --upgrade pgadmin4 # 更新pgAdmin(若通过pip安装)
建议开启自动更新(如sudo apt install unattended-upgrades),确保及时获取安全补丁。pgadmin.conf,设置日志路径和级别:[logging]
log_file = /var/log/pgadmin/pgadmin.log
log_level = INFO
postgresql.conf,开启日志记录:logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_error_statement = error
/var/log/pgadmin/pgadmin.log和/var/lib/pgsql/<version>/main/pg_log/),及时发现异常登录、未授权操作等行为。