phpmyadmin 使用 HTTP BASIC 认证是否比使用数据库账号密码认证更安全?

2017-01-24 10:49:15 +08:00
 gdtv
某服务器上装有 apache + php + phpmyadmin 并且允许外网访问。

现在有三个方案:
1 、使用数据库的账号和密码登录——这样每次要输入数据库账号和密码
2 、 phpmyadmin 所在目录设置 HTTP BASIC 认证——这样每次要输入 HTTP BASIC 认证的账号和密码,以及数据库账号和密码
3 、 phpmyadmin 所在目录设置 HTTP BASIC 认证,并且将数据库的 root 账号和密码设置到 phpmyadmin 的 config 文件里——这样每次要输入 HTTP BASIC 认证的账号和密码,不用输入数据库密码

第 2 种方法太麻烦,请问 1 和 3 哪种方案更安全呢?

我知道在公网使用 phpmyadmin 是不安全的,使用 root 账号登录更不安全,但为了方便,只好这样。
1554 次点击
所在节点    问与答
12 条回复
CloudMx
2017-01-24 10:58:36 +08:00
你这三个方案,在同一环境下,两次密码不一致的话, 2 最安全,双重认证。 3 跟 1 在安全上没有什么区别( MYSQL 只允许你的 PHPMYADMIN 机器连接)。
privil
2017-01-24 10:59:26 +08:00
你偷懒,就额外开一个监听本地的 web 站点,跑 phpmyadmin ,要用就远程上去用就算了。不过都搞成这样了,还不如直接远程跑 Navicat for MySQL 啥的了,你非要公网跑,那你随意咯
gdtv
2017-01-24 11:03:19 +08:00
@CloudMx 补充一下, mysql 只允许本地连接

@privil 补充一下,现在 mysql 只允许本地连接,如果为了用 Navicat 而允许远程连接是不是更不安全了?是不是还不如用 phpmyadmin 然后禁止远程连接? 开一个监听本地的 web 站点然后远程上去,可是我这是 linux 没有图形界面怎么访问 web 站呢?
donlxn22
2017-01-24 11:03:56 +08:00
第四种方案: SSH TUNNEL + phpmyadmin localhost 访问

phpmyadmin 设置为只允许内网 localhost 访问;需要连接的时候使用 SSH 隧道映射到服务器的 localhost ;可以依赖于 SSH 协议的安全机制,也方便些;

https://degreesofzero.com/article/manage-remote-mysql-servers-with-local-phpmyadmin.html
Tink
2017-01-24 11:04:43 +08:00
建议用 ssl 客户端认证,这应该是最安全的方案
privil
2017-01-24 11:24:27 +08:00
@gdtv 四楼正解,反正你只要通过隧道代理啥的,就能访问服务器本地监听的服务了
CloudMx
2017-01-24 11:29:40 +08:00
只允许本地连接,那就是只有一个口登录操作你的 MYSQL 了, PHPMYADMIN.所以,两次密码不一致的话, 2 最安全,双重认证,但是麻烦。 3 跟 1 在安全上没有什么区别。
zjqzxc
2017-01-24 11:32:23 +08:00
所以说,这才是 VPN 的目标使用环境
shiji
2017-01-24 13:56:15 +08:00
@gdtv 如果没上 HTTPS ,这三个都不安全。 上了 HTTPS ,方案 1 就行。
我自己的 MySQL 开启远程连接三四年了,啥事没有。需要注意的是,权限配置要细化。我一般的操作方案是,比如要装 WordPress ,新建用户 wp ,新建库 wp ,只分配给 wp 用户所有 wp 数据库的权限。 WordPress 在本机, wp 用户就只允许 localhost 连接。如果给远程别的服务器用,也同样尽可能的限制 IP 。
我的 root 也允许远程,给 navicat 用。为了保证数据安全开启了 ssl 。(类似于自签发证书的步骤,但是稍微麻烦些,跟着教程走就好)
我服务器有个简单的分析端口扫描的 iptables 规则,根据统计,攻击我 3306 的超级超级少。
shiji
2017-01-24 14:05:51 +08:00
@shiji 补充说明,扫描的多,攻击的少。
ryd994
2017-01-24 14:47:21 +08:00
看你对安全的定义
个人观点而言, apache 的 http 验证是很成熟了,而 php 下的验证虽然逻辑上是可靠的,但想想 apache 的验证模块可能比 php 还老……而且资源消耗肯定也低
其次只要你用 apache ,就能用 http 各种 slow 攻击打到你服务器卡死, prefork 硬伤,必须做好连接频率限制,或者前面 nginx 鉴权,限流,顶压力
ryd994
2017-01-24 14:52:06 +08:00
如果你系统运维和数据库运维是同一批人的话, ssh 其实是最好的,因为不需要额外设置,反正能拿到 ssh 的人基本上也就有机会 dump 你数据库了,没差
如果不同的话, ssh 加个转发专用用户固然可以,但其实管起来麻烦

还有一条路是 https 客户端证书,反正自签一个就行,如果现有内部自签证书在用,有严格执行标准流程的话,安全也是不成问题的,不过不会太方便

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/336600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX