好的,我们有一台VPS Linux机器,我们将在那里安装一个PostgreSQL人作为数据源。
我们当然不会更改任何默认连接设置,而pg只接受本地连接。
所以问题是,我们是否应该使用postgresql保护(SSL)连接,而除了localhost之外不会接受任何IP?
答案 0 :(得分:1)
您应该问问自己,您在保护PostgreSQL的攻击方式是什么?
您是否准备好保护服务器机器免受损害,或者是否有物理访问它的人?如果是,那么您需要的不仅仅是SSL加密。如果没有,那么你必须假设本地机器相对安全,并且不需要在那里加密。另请参阅this answer。
通常,不需要加密本地连接。加密连接的主要目的是保护您的数据(和密码)免受有权访问服务器或在您的PostgreSQL服务器和客户端之间的行的人的侵害。
答案 1 :(得分:1)
目前尚不清楚为什么本地主机上的SSL是可取的。
另一方面,性能是不在检索大量数据时使用它的一个很好的理由。这是一个小型演示。
我从表bintest(b bytea)
中获取4.64 MB的单行
通过未加密的Unix域套接字执行此操作大约需要25毫秒:
CPU:Intel(R)Xeon(R)CPU E31230 @ 3.20GHz(显然包括AES instructions)。
$ psql -d demoml psql (9.3.4) Type "help" for help. demoml=> \o /dev/null demoml=> \timing Timing is on. demoml=> select * from bintest; Time: 26.713 ms demoml=> select * from bintest; Time: 25.613 ms
现在与加密的localhost相同:
$ psql -h localhost -d demoml Password for user manitou: psql (9.3.4) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. demoml=> \o /dev/null demoml=> \timing Timing is on. demoml=> select * from bintest; Time: 464.545 ms demoml=> select * from bintest; Time: 462.927 ms
在此测试中,TCP + SSL比未加密的Unix域套接字(与未加密的localhost没有明显不同)大约460/18 = 18x慢。
在其他测试中,我还计划在PostgreSQL和libpq客户端之间建立连接,使用SSL的速度大约慢了5倍。