centos postgresql安全加固措施
导读:CentOS环境下PostgreSQL安全加固措施 1. 用户认证与权限管理 设置强密码策略:修改默认postgres超级用户密码(避免空密码),要求密码包含大小写字母、数字和特殊字符(如ALTER USER postgres WITH...
CentOS环境下PostgreSQL安全加固措施
1. 用户认证与权限管理
- 设置强密码策略:修改默认
postgres
超级用户密码(避免空密码),要求密码包含大小写字母、数字和特殊字符(如ALTER USER postgres WITH PASSWORD 'Complex@123';
);配置password_encryption = scram-sha-256
(PostgreSQL 10+推荐),强制使用更安全的哈希算法存储密码。 - 最小权限原则:按需创建角色并分配权限,避免过度授权。例如,仅为应用用户授予特定数据库的
SELECT
、INSERT
权限(GRANT SELECT, INSERT ON database_name.table_name TO app_user;
),禁用默认的PUBLIC
角色对敏感表的操作权限。 - 启用行级安全性(RLS):对敏感表(如用户信息表)启用RLS,通过策略限制用户只能访问自己的数据(如
CREATE POLICY user_access_policy ON users USING (user_id = current_setting('app.current_user_id')::int);
)。
2. 网络与连接安全
- 限制监听地址:修改
postgresql.conf
中的listen_addresses
为localhost
或特定可信IP(如192.168.1.100
),避免数据库监听所有网络接口(listen_addresses = 'localhost';
),减少暴露风险。 - 配置防火墙规则:使用
firewalld
(CentOS 7+)或iptables
限制PostgreSQL端口(默认5432)的访问,仅允许必要IP段(如公司内网192.168.1.0/24
)访问。例如,firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port=5432 protocol=tcp accept'
,然后firewall-cmd --reload
。 - 禁用不安全认证方法:编辑
pg_hba.conf
,移除trust
(无密码认证)、ident
(基于主机认证)等方法,统一使用md5
(密码加密)或scram-sha-256
(更安全)认证。例如,host all all 192.168.1.0/24 scram-sha-256
。
3. 数据传输加密
- 启用SSL/TLS:生成自签名或CA签名的证书(
openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj "/CN=your_server_hostname"
),修改postgresql.conf
启用SSL:ssl = on
,指定证书和密钥路径(ssl_cert_file = '/var/lib/pgsql/data/server.crt'
,ssl_key_file = '/var/lib/pgsql/data/server.key'
);强制客户端使用SSL连接(ssl_min_protocol_version = TLSv1.2
),防止数据在传输过程中被窃取或篡改。
4. 审计与日志监控
- 启用详细日志记录:修改
postgresql.conf
,开启日志收集(logging_collector = on
),设置日志目录(log_directory = 'pg_log'
)和文件名格式(log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
);记录关键操作(如log_statement = 'all'
记录所有SQL语句,log_connections = on
记录连接事件,log_disconnections = on
记录断开事件),便于后续审计。 - 使用pgAudit扩展:安装
pgAudit
(sudo yum install pgaudit
),在postgresql.conf
中配置(shared_preload_libraries = 'pgaudit'
,pgaudit.log = 'all'
),记录详细的审计信息(如用户执行的SQL、访问的表、操作时间),并将日志输出到单独文件(pgaudit.log_file = 'pgaudit.log'
),提升审计粒度。
5. 系统与配置加固
- 定期更新补丁:使用
sudo yum update -y
定期更新PostgreSQL和CentOS系统,及时修补已知安全漏洞(如CVE-2023-1427、CVE-2024-1577等),降低被攻击的风险。 - 禁用不必要的超级用户:删除或禁用默认的
postgres
超级用户以外的多余超级用户账户(如DROP USER unused_superuser;
),减少潜在的攻击入口。 - 配置SELinux:若系统启用SELinux,设置为
permissive
模式测试(SELINUX=permissive
),或为PostgreSQL创建自定义SELinux策略模块,允许其接受特定IP的连接(如semanage port -a -t postgresql_port_t -p tcp 5432
),防止SELinux阻止合法访问。
6. 数据备份与恢复
- 定期备份数据库:使用
pg_dump
工具备份数据库(如pg_dump -U postgres -F t -f /backup/mydb_backup.tar mydb
),支持文本格式(-F p
)或归档格式(-F t
,便于恢复单个表);备份文件存储在安全位置(如异地服务器、加密存储设备),避免单点故障。 - 测试备份恢复:定期执行恢复测试(如
pg_restore -U postgres -d mydb_restore /backup/mydb_backup.tar
),确保备份文件的完整性和可恢复性,避免因备份失效导致数据丢失。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos postgresql安全加固措施
本文地址: https://pptw.com/jishu/727569.html