ubuntu postgresql安全设置怎么做
1. 修改PostgreSQL默认管理员密码
PostgreSQL默认超级用户为postgres
,初始密码可能在安装时为空或简单。使用以下命令切换至postgres
用户并修改密码:
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'YourStrongPassword123!';
\q
确保密码包含大小写字母、数字和特殊字符,长度不少于12位。
2. 配置PostgreSQL仅允许本地连接(可选但推荐)
若无需远程访问,修改postgresql.conf
限制监听地址,降低远程攻击风险:
sudo nano /etc/postgresql/<
version>
/main/postgresql.conf
找到listen_addresses
行,修改为:
listen_addresses = 'localhost'
保存后重启服务:
sudo systemctl restart postgresql
若需远程访问,可将listen_addresses
设为'*'
,但需配合后续安全措施。
3. 限制远程访问IP(若需远程连接)
编辑pg_hba.conf
文件,仅允许信任的IP段通过密码认证访问:
sudo nano /etc/postgresql/<
version>
/main/pg_hba.conf
在文件末尾添加(示例:允许192.168.1.0/24网段访问所有数据库):
host all all 192.168.1.0/24 md5
保存后重启PostgreSQL服务:
sudo systemctl restart postgresql
避免使用0.0.0.0/0
(允许所有IP),如需开放,需结合强密码和SSL加密。
4. 配置SSL加密传输
生成SSL证书和私钥(若已有证书可跳过生成步骤):
sudo mkdir -p /etc/postgresql/<
version>
/main/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/postgresql/<
version>
/main/ssl/server.key \
-out /etc/postgresql/<
version>
/main/ssl/server.crt
设置证书权限(仅postgres
用户可读):
sudo chmod 600 /etc/postgresql/<
version>
/main/ssl/*
修改postgresql.conf
启用SSL:
sudo nano /etc/postgresql/<
version>
/main/postgresql.conf
取消注释并修改以下行:
ssl = on
ssl_cert_file = '/etc/postgresql/<
version>
/main/ssl/server.crt'
ssl_key_file = '/etc/postgresql/<
version>
/main/ssl/server.key'
重启服务使配置生效:
sudo systemctl restart postgresql
确保客户端连接时启用SSL(如pgAdmin中勾选“SSL”选项)。
5. 配置Ubuntu防火墙(UFW)
允许PostgreSQL默认端口(5432)通过防火墙,限制仅信任IP访问:
sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp
sudo ufw enable
sudo ufw status # 验证规则是否生效
若未安装UFW,可通过sudo apt install ufw
安装。
6. 管理PostgreSQL用户与权限
- 创建专用数据库用户:避免使用
postgres
超级用户执行日常操作,创建专用用户并授权:sudo -u postgres psql CREATE USER app_user WITH PASSWORD 'AppUserPassword123!'; CREATE DATABASE app_db OWNER app_user; GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user; \q
- 限制用户权限:遵循最小权限原则,仅授予用户必要的权限(如
SELECT
、INSERT
),避免使用GRANT ALL PRIVILEGES
。
7. 定期更新PostgreSQL与pgAdmin
保持软件版本最新,修复已知安全漏洞:
sudo apt update
sudo apt upgrade postgresql postgresql-contrib pgadmin4
建议开启自动更新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
8. 启用审计日志记录
通过log_statement
参数记录所有SQL语句,便于追踪异常操作:
sudo nano /etc/postgresql/<
version>
/main/postgresql.conf
修改以下行:
log_statement = 'all'
log_min_error_statement = 'error'
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
保存后重启服务,日志将保存至/var/log/postgresql/<
version>
/main/
目录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu postgresql安全设置怎么做
本文地址: https://pptw.com/jishu/716500.html