MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
版权声明:本文由云鼎实验室原创文章,转载请注明出处:
文章原文链接:https://www.qcloud.com/community/article/519598001488335177
来源:腾云阁 https://www.qcloud.com/community
据最新报道显示,继MongoDB和Elasticsearch之后,MySQL成为下个数据勒索目标,从2月12日凌晨开始,已有成百上千个开放在公网的MySQL数据库被劫持,删除了数据库中的存储数据,攻击者留下勒索信息,要求支付比特币以赎回数据。
问题分析
遍观MongoDB和Elasticsearch以及现在的MySQL数据库勒索,可以发现都是基线安全问题导致被黑客劫持数据而勒索,原因在于这些服务都开放在公网上,并且存在空密码或者弱口令等使得攻击者可以轻易暴力破解成功,直接连上数据库从而下载并清空数据,特别是不正确的安全组配置导致问题被放大。
其实类似问题已不是第一次,近期云鼎实验室观测到多起案例,攻击呈现扩大态势,不仅仅是勒索,更多的是服务器被入侵,从而导致数据被下载。基线安全问题已经成了Web漏洞之外入侵服务器的主要途径,特别是弱口令等情况。错误的配置可以导致相关服务暴露在公网上,成为黑客攻击的目标,加上采用空密码等弱口令,黑客可以轻易入侵这些服务。
安全自查
值此事件爆发之际,建议对自己的服务器进行自查,避免相关数据丢失等问题,具体自查方式可参考如下:
1、排查服务器开放的端口及对应的服务,如无必要,关闭外网访问;可以使用NMap 直接执行 nmap 服务器IP(在服务器外网执行),可得到以下结果即为开放在外网的端口和服务。
2、重点针对这些开放在公网上的服务进行配置的检查,检查相关服务是否设置密码,是否弱口令。
3、如无必要,均不要使用root或者其他系统高权限账号启动相关服务。
安全建议及修复方案
一、采用正确的安全组或者iptables等方式实现访问控制;
二、关闭相关服务外网访问和修改弱密码:
1、MongoDB
a. 配置鉴权
下面以3.2版本为例,给出 MongoDB设置权限认证,具体步骤如下:
- 启动MongoDB进程是加上-auth参数或在MongoDB的配置文件中加上auth = true;
- 带auth启动的MongoDB,如未创建用户,MongoDB会允许本地访问后创建管理员用户。创建步骤如下:
1. 切换到 admin 库;
2. 创建管理员用户,命令如下(user和pwd可以根据需要设置):
db.createUser({user: "root",pwd: "password",roles: [ "root" ]})
3. 使用管理员用户登录后,根据角色创建您需要的用户
b. 关闭公网访问
可通过MongoDB的bind_ip参数进行配置,只需将IP绑定为内网IP即可,如下:
1. 启动时增加bind_ip参数:mongod --bind_ip 127.0.0.1,10.x.x.x
2. 在配置文件mongodb.conf中添加以下内容:
bind_ip = 127.0.0.1,10.x.x.x
其中10.x.x.x为您机器的内网IP.
2、Redis
a. 配置鉴权
- 修改配置文件,增加 “requirepass 密码” 项配置(配置文件一般在/etc/redis.conf)
- 在连接上Redis的基础上,通过命令行配置,config set requirepass yourPassword
b. 关闭公网访问
- 配置bind选项,限定可以连接Redis服务器的IP,修改 Redis 的默认端口6379
c. 其他
- 配置rename-command 配置项 “RENAME_CONFIG”,重名Redis相关命令,这样即使存在未授权访问,也能够给攻击者使用config 指令加大难度(不过也会给开发者带来不方便)
相关配置完毕后重启Redis-server服务
3、MySQL
a. 配置鉴权
MySQL安装默认要求设置密码,如果是弱命令,可通过以下几种方式修改密码:
- UPDATE USER语句
//以root登录MySQL后,
USE mysql;
UPDATE user SET password=PASSWORD('新密码') WHERE user='root';
FLUSH PRIVILEGES;
- SET PASSWORD语句
//以root登录MySQL后,
SET PASSWORD FOR root=PASSWORD('新密码');
- mysqladmin命令
mysqladmin -u root -p 旧密码 新密码
b. 关闭公网访问
- 启动参数或者配置文件中设置bind-address= IP绑定内部IP
- 以root账号连接数据库,排查user表中用户的host字段值为%或者非localhost的用户,修改host为localhost或者指定IP或者删除没必要用户
4、其他服务
请参考以上方式或者官方文档进行配置
参考链接
- 《避免 MongoDB 被勒索详解,腾讯云上更安全》http://t.cn/RiVUEdY
- 《下一个猎杀目标:近期大量MySQL数据库遭勒索攻击》http://t.cn/Ri5ES1T
- 《知名搜索引擎Elasticsearch成为勒索软件敲诈目标》http://t.cn/RiVUgFD
- 《Redis 未授权访问配合 SSH key 文件利用分析》http://t.cn/RUO9UGY
MySQL成勒索新目标,数据服务基线安全问题迫在眉睫的更多相关文章
- 腾讯云报告——MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
推荐理由 大数据时代,人类产生的数据越来越多,但数据越多的情况下,也会带来数据的安全性问题,如MySQL数据库上的数据,越来越多的黑客盯上了它,今天推荐的这篇文章来自于腾讯云技术社区,主要是针对MyS ...
- 警惕!MySQL成数据勒索新目标
据最新报道显示,继MongoDB和Elasticsearch之后,MySQL成为下个数据勒索目标,从2月12日凌晨开始,已有成百上千个开放在公网的MySQL数据库被劫持,删除了数据库中的存储数据,攻击 ...
- MySQL用sql复制表数据到新表的方法
用sqlyog无法直接复制出一个不同表名的表来,只能copy到其他库上同名的表. 在MySQL数据库中,应该如何用sql将表数据复制到新表中呢? 本人通过试验测试成功了,而且相当简单易懂,速度也非常快 ...
- mysql根据逗号将一行数据拆分成多行数据
mysql根据逗号将一行数据拆分成多行数据 原始数据 处理结果展示 DDL CREATE TABLE `company` ( `id` ) DEFAULT NULL, `name` ) DEFAULT ...
- 从SQL Server到MySQL,近百亿数据量迁移实战
从SQL Server到MySQL,近百亿数据量迁移实战 狄敬超(3D) 2018-05-29 10:52:48 212 沪江成立于 2001 年,作为较早期的教育学习网站,当时技术选型范围并不大:J ...
- MySQL学习笔记十一:数据导入与导出
数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...
- 初识 MySQL 5.6 新功能、参数
摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...
- 初识 MySQL 5.6 新特性、功能
背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...
- MySQL数据库如何解决大数据量存储问题
利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...
随机推荐
- vim设置一个tab为4个空格,设置行号
这我就再当前用户下,不是root权限.本身是没有.vimrc这个文件的 vim ~/.vimrc 新建了这个文件 然后在其中输入 保存. 这样设置完就一个tab是4个空格,并且就有行号了.重新打开v ...
- JS_高程3.基本概念(4)操作符
ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应 ...
- eclipse实现代码块折叠-类似于VS中的#region……#endregion
背 景 刚才在写代码的时候,写了十几行可以说是重复的代码: 如果整个方法或类中代码多了,感觉它们太TM占地方了,给读者在阅读代码上造成很大的困难,于是想到能不能把他们“浓缩”成一行,脑子里第一个闪现出 ...
- C# ManualResetEventSlim 实现
ManualResetEventSlim通过封装 ManualResetEvent提供了自旋等待和内核等待的组合.如果需要跨进程或者跨AppDomain的同步,那么就必须使用ManualResetEv ...
- CentOS7 使用yum命令安装Java SDK(openjdk)
CentOS 6.X 和 7.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的java 平台. 安装方式: 1.输入以下命令,以 ...
- 分布式架构探索 - 1. RPC框架之Java原生RMI
1. 什么是RPC RPC(Remote Procedure Call)即远程过程调用,指的是不同机器间系统方法的调用,这和 同机器动态链接库(DLL)有点类似,只不过RPC是不同机器,通过网络通信来 ...
- JAVA中通过Jedis操作Redis连接与插入简单库
一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...
- SpringBoot2.0微信小程序支付多次回调问题
SpringBoot2.0微信小程序支付多次回调问题 WxJava - 微信开发 Java SDK(开发工具包); 支持包括微信支付.开放平台.公众号.企业微信/企业号.小程序等微信功能的后端开发. ...
- utf-8 编码问题
使用下面直接进行处理$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);
- linux内核剖析(十)进程间通信之-信号量semaphore
信号量 什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有. 信号量的值为正的时候,说明它空闲.所测试的线程可以锁定而使用它.若为0,说明它被占用,测试的线 ...