首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
QcloudCommunity
V2EX  ›  请不要再发这样的文章

警惕! MySQL 成数据勒索新目标

  •  
  •   QcloudCommunity · 2017-03-01 14:44:00 +08:00 · 3610 次点击
    这是一个创建于 1087 天前的主题,其中的信息可能已经有所发展或是发生改变。

    据最新报道显示,继 MongoDB 和 Elasticsearch 之后, MySQL 成为下个数据勒索目标,从 2 月 12 日凌晨开始,已有成百上千个开放在公网的 MySQL 数据库被劫持,删除了数据库中的存储数据,攻击者留下勒索信息,要求支付比特币以赎回数据。

    问题分析

    遍观 MongoDB 和 Elasticsearch 以及现在的 MySQL 数据库勒索,可以发现都是基线安全问题导致被黑客劫持数据而勒索,原因在于这些服务都开放在公网上,并且存在空密码或者弱口令等使得攻击者可以轻易暴力破解成功,直接连上数据库从而下载并清空数据,特别是不正确的安全组配置导致问题被放大。

    其实类似问题已不是第一次,近期云鼎实验室观测到多起案例,攻击呈现扩大态势,不仅仅是勒索,更多的是服务器被入侵,从而导致数据被下载。基线安全问题已经成了 Web 漏洞之外入侵服务器的主要途径,特别是弱口令等情况。错误的配置可以导致相关服务暴露在公网上,成为黑客攻击的目标,加上采用空密码等弱口令,黑客可以轻易入侵这些服务。

    安全自查

    值此事件爆发之际,建议对自己的服务器进行自查,避免相关数据丢失等问题,具体自查方式可参考如下: 1 、排查服务器开放的端口及对应的服务,如无必要,关闭外网访问;可以使用 NMap 直接执行 nmap 服务器 IP (在服务器外网执行),可得到以下结果即为开放在外网的端口和服务。

    2 、重点针对这些开放在公网上的服务进行配置的检查,检查相关服务是否设置密码,是否弱口令。 3 、如无必要,均不要使用 root 或者其他系统高权限账号启动相关服务。

    安全建议及修复方案

    一、采用正确的安全组或者 iptables 等方式实现访问控制; 二、关闭相关服务外网访问和修改弱密码: 1 、 MongoDB a. 配置鉴权 下面以 3.2 版本为例,给出 MongoDB 设置权限认证,具体步骤如下:

    1. 启动 MongoDB 进程是加上-auth 参数或在 MongoDB 的配置文件中加上 auth = true ;
    2. 带 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. 配置鉴权

    1. 修改配置文件,增加 “ requirepass 密码” 项配置(配置文件一般在 /etc/redis.conf )
    2. 在连接上 Redis 的基础上,通过命令行配置, config set requirepass yourPassword

    b. 关闭公网访问

    1. 配置 bind 选项,限定可以连接 Redis 服务器的 IP ,修改 Redis 的默认端口 6379

    c. 其他

    1. 配置 rename-command 配置项 “ RENAME_CONFIG ”,重名 Redis 相关命令,这样即使存在未授权访问,也能够给攻击者使用 config 指令加大难度(不过也会给开发者带来不方便)

    相关配置完毕后重启 Redis-server 服务

    3 、 MySQL

    a. 配置鉴权

    MySQL 安装默认要求设置密码,如果是弱命令,可通过以下几种方式修改密码:

    1. UPDATE USER 语句
      //以 root 登录 MySQL 后,
      USE mysql ;
      UPDATE user SET password=PASSWORD('新密码') WHERE user='root';
      FLUSH PRIVILEGES;
      
    2. SET PASSWORD 语句
      //以 root 登录 MySQL 后,
      SET PASSWORD FOR root=PASSWORD('新密码');
      
    3. mysqladmin 命令
      mysqladmin -u root -p 旧密码 新密码
      

    b. 关闭公网访问

    1. 启动参数或者配置文件中设置 bind-address= IP 绑定内部 IP
    2. 以 root 账号连接数据库,排查 user 表中用户的 host 字段值为%或者非 localhost 的用户,修改 host 为 localhost 或者指定 IP 或者删除没必要用户

    4 、其他服务 请参考以上方式或者官方文档进行配置

    参考链接

    1. 《避免 MongoDB 被勒索详解,腾讯云上更安全》 http://t.cn/RiVUEdY
    2. 《下一个猎杀目标:近期大量 MySQL 数据库遭勒索攻击》 http://t.cn/Ri5ES1T
    3. 《知名搜索引擎 Elasticsearch 成为勒索软件敲诈目标》 http://t.cn/RiVUgFD
    4. 《 Redis 未授权访问配合 SSH key 文件利用分析》 http://t.cn/RUO9UGY

    本文首发腾云阁 警惕!MySQL成数据勒索新目标

    6 回复  |  直到 2019-05-30 15:10:23 +08:00
    ooxxcc
        1
    ooxxcc   2017-03-01 14:48:50 +08:00
    v2ex 标题 uc 化……
    Troevil
        2
    Troevil   2017-03-01 14:54:20 +08:00
    震惊! V2EX 标题竟然 UC 化了
    summic
        3
    summic   2017-03-01 14:55:11 +08:00
    震惊!男人看了会沉默,女人看了会流泪!不转不是中国人!
    Livid
        4
    Livid   V2EX Moderator   2017-03-01 14:57:43 +08:00   ❤️ 1
    这种标题很恶心。

    Move to /go/pointless
    QcloudCommunity
        5
    QcloudCommunity   2017-03-01 16:30:11 +08:00
    @Livid 谢谢 livid 的建议,这次是我们的问题,本意是给开发者提供一些安全预警和修复建议。看到现在移到无要点节点后无法修改了,能否开放一下 edit 权限,我们立即修改,并且后续注意。谢谢
    yexm0
        6
    yexm0   266 天前
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3788 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.