作者:胖墩老师
众所周知啊,当多个用户同时访问MySQL服务器时,尤其是这些用户是通过互联网进行访问。不仅MySQL服务器处于危险之中,还有可能危及整个服务器主机。
看到此处肯定有不了解其中原因的同学会问,怎么就处于危险之中了?且听我细细道来。因为这些用户当中,不乏一些所谓的“正常用户”进行以下几种类型的安全攻击:
其实MySQL的安全隐患不止这些,在我们安装MySQL的时候,也存在安全风险。1. 网络块:因为MySQL服务器允许客户端通过网络连接并发出请求。所以如果密码和网络流量没有加密,网络监控软件轻易的可以看到客户端帐户信息和数据。因此任何没有密码的账户都容易受到攻击。2. 操作系统块:服务器上的额外用户帐户都可能会破坏MySQL的安装。因为他们有权限去这样做(怎么去理解,就是额外用户可以阻止安装或者破坏MySQL)。3. 文件系统块:服务器上的目录、数据库文件和日志文件可以由不应该具有访问权限的用户打开那么问题来了,我们要怎么去避免或者解决这些存在的安全隐患呢?
在公共网络环境下如何保护MySQL呢?首先我们要了解MySQL使用了客户机/服务器模型,并提供了固有的面向网络的服务。网络客户端首先连接到MySQL服务器。如果MySQL与使用MySQL的面向internet的应用程序运行在同一台机器上。为了安全,那就禁用网络,并且只允许套接字(socket)连接。当MySQL响应来自网络端口的请求,客户端可以访问这些端口。但MySQL服务器主机不能直接连接Internet。必须使用防火墙(或在非武装地区设置的多个防火墙)[DMZ]),防止未授权的客户端连接。如下:
传输逻辑
3. 使用安全安装脚本创建一个安全的初始配置:mysql_secure_installation4. 确保MySQL帐户有密码保护,没有不必要的特权。5. 坚持一般的特权预防措施。不授予超出用户要求的权限。6. 确保只有授权的客户端才能连接到服务器以访问其数据库。如果MySQL服务器端口对私有网络中的所有用户都可见,则可能会受到直接或间接的攻击。例如:来自心怀不满的员工或窥探者的直接攻击。或者是来自外部代理的间接攻击,这些代理使用钓鱼攻击或木马程序控制员工主机。防范比如有些有能力拦截未加密数据的用户可以访问到这些数据。则可以被网络监控工具查看同一网段上的流量,因此必须使用加密协议(如SSL或SSH)对客户端和服务器之间的通信进行加密。