当有大量的用户访问MySQL时,会为MySQL带来安全方面的风险,特别是当用户通过互联网连接到MySQL的时候,风险会更大。安全风险具有多种类型,包括窃听、篡改、信息暴露、提升权限,及拒绝服务等等。这些风险并不仅仅针对MySQL服务器,也适用于其他服务器的主机。
当用户安装MySQL时,安全风险会来自以下三方面:
-
网络
-
MySQL服务器允许客户端连接至网络,并发送请求。
-
如果密码及网络没有进行加密,网络监视软件可以查看客户端的账户信息和数据。
-
账户使用较弱的密码或不使用密码,非常容易遭受攻击。
-
操作系统
-
服务器存在额外的账户会增加MySQL的脆弱性
-
文件系统
-
文件夹、数据文件、日志文件可以被其他用户访问
网络安全被认为是最外层的防御,在内而言,操作系统安全、文件系统安全,更深的层次是用户安全。
如何强化MySQL的网络安全
MySQL使用客户端/服务器模式提供面向网络的服务,即网络上的客户端连接MySQL服务器。如果MySQL和应用程序运行在同一台主机,则可以将MySQL的网络禁用,仅允许使用本机的socket进行通信。
MySQL响应来自客户端的网络端口请求,不要将MySQL服务器主机直接连到互联网,可以使用防火墙或者由多个防火墙组成的隔离区(DMZ)。
可以通过以下方面防范网络安全风险
-
使用防火墙控制访问MySQL的端口
-
限制服务器使用的网络接口
-
确保MySQL账户使用强密码,并且不包含非必要的权限
-
不要授予用户要求的过多权限(权限最小化原则)
-
确保只有经过授权的客户端连接服务器访问数据库
-
不要在网络间传输明文数据
对于内网而言,网络攻击分为直接攻击和间接攻击。通常情况下,直接攻击来自于不满情绪的员工或窥探者,间接攻击来自于外部的代理,通过网络调用或者木马获得对员工的主机控制。
未经加密的数据可以被拦截者访问,网络嗅探工具可以查看同一网段的流量。因此,应该使用加密协议例如SSL或SSH,对服务器和客户端间的流量进行加密。这部分内容比较多,将在下一篇里为读者介绍。以上内容是关于MySQL强化网络安全的简介,后续将继续更新MySQL安全方面的内容。
感谢关注“MySQL解决方案工程师”!