最近网络攻击较多,很多人中招了,希望大家养成良好的习惯,避免无谓的损失.
下面谈谈如何抵卸针对PostgreSQL数据库的攻击.
1 数据库物理隔离
目前最理想的方式,可惜大多数情况下我们达不到这个要求.
- 将WEB服务器和数据库集群单独组网,使用一个独立的网段.在防火墙上只打开80端口(开放的端口越多越不安全),各个应用程序使用反向代理映射.
- WEB服务器和数据库集群在机房内,任何修改必须先在测试环境测试无误后方能申请进入机房操作,操作至少两人再场共同确认.
- 完善的生成环境管理规章制度
通过上述办法可以最大限度的避免有意或无意的删除数据库,近一段时间已经发生很多次了,保证数据的安全.
2 不具备上述条件或需要远程的
- 首先使用正确的方式创建数据以及设置相应的权限,具体参考再谈PostgreSQL创建数据库
- 修改pg_hba.conf
##创建好数据库后首先回收postgres数据库的public权限
###revoke all on database postgres from public;
##postgres数据库只允许在本机使用用户名和密码登录
host postgres all 127.0.0.1/32 md5
##创建好test库后首先回收test数据库的public权限
###revoke all on database test from public;
##test数据只允许用test用户从任意主机登录
host test test 0.0.0.0/0 md5
## 缺点是每创建一个数据库实例都需要修改pg_hba.conf,无需停机重新"pg_ctl -D 数据目录 reload"
- 修改postgresql.conf
#修改默认的侦听端口号,随便改一下即可,注意修改后要设置防火墙
port = 25432
#修完成客户端认证的最长时间,以秒计
authentication_timeout=5s
- 使用高强度的密码
- 配置Windows防火墙或linux防火墙,允许新配置的端口通行.
经过上述步骤后,可大幅提升数据的安全性,有效抵卸针对PostgreSQL数据库的攻击.
如条件允许建议还是使用数据库物理隔离.
3 SSL
不建议在数据库,建议https并结合第一节的方式使用.