本来是一个美好的大周末,突然却被一个突如其来的电话把我从美梦中惊醒,然而一切还不止这么简单......

  本来刚开始了解到信息是客户的一台RouteOS设备挂了,听到这个消息时觉得自己应该可以很快解决,毕竟就是重启一下的事情,然而真正登录到后台才发现一切都没这么简单......

后台查看操作系统状态

  唉,别提有多难过,后台竟然发现系统刚刚启动就立马重启了,而且反复如此,陷入了死循环,因此第一时间判断为此台RouteOS被黑了(事实证明是我多虑了),看样子是没有办法短时间恢复了,让客户切换业务吧,客户涉及此台设备的业务路由进行切换。

初步分析

  判断为系统被黑后,开始查看这台设备的监控信息。

  客户提供的zabbix监控数据。

  查看我方后台监控,发现CPU和内存使用率确实有异常,从客户监控获取不到数据的时间点开始,我方监控可以准确的显示到改设备的CPU使用率开始异常,与正常业务模型相比,变化明显,内存使用率也开始从正常的百分之十以下的使用率突增到百分之七十以上,此刻心中更加确信此台设备是被黑了。

  咋整,此时内心无比尴尬,因为这个客户以前就已经被黑过一次了(RouteOS版本低,存在漏洞最终被攻击),并且已经升级到了最新版本还购买了KEY,没办法硬着头皮和客户说吧。因为自己不太了解RouteOS系统,所以将故障升级,且料二线工程师告诉我没办法修复了,唉,忍着被挨骂的风险告诉客户吧。

进一步获取信息

  告诉了客户系统可能被黑了以后,客户说被黑的可能性不大,原因如下:

  • 已经将操作系统升级至最新版本,且使用的不是破解版,还购买了key。
  • 已经将所有登录方式关闭,只留下了web界面这种登录方式,可以登录的地址只开放给了客户公司的公网地址,同时修改了默认端口。
  • 密码复杂度极高:20位以上随机生成密码。

  目前从监控中看到的信息,CPU和内存有异常,客户表示它们的zabbix没有监控到内存有变化,和客户解释因为客户zabbix监控是使用snmp协议对此台设备进行监控的获取不到数据是因为网络不通了导致,而我方监控是直接从宿主机获取的日志,所以可以监控到后续的信息,但是根据客户提供的信息,被攻击的风险确实不大,只能硬着头皮搞了,尝试下能不能修复系统。

修复系统

  当前第一要务是先把操作系统启动,确保可以稳定运行不会再一次重启,后台挂载修复镜像后,进入修复模式,对这个系统也不了解,只能一步一步琢磨加上网上搜索资料,看到有文章也遇到过类似的问题,RouteOS重启的问题,可能和watchdog有关。

  进入修复模式,将watchdog配置文件进行备份,重启发现系统正常了,确认了操作系统反复重启应该是watchdog配置导致,向客户询问有关watchdog的配置信息。

  后续经过确认客户配置如下:

Watch Address: 公网网关地址
Ping Start After Boot: 00:01:00
Ping Timeout: 10s

  怀疑是客户配置导致,新开了一台RouteOS进行测试,将测试机的Watchdog配置和客户相同后重启,发现操作系统确实会一直重启,确认了是因为配置导致操作系统不断重启,后续后台重启测试机的同时开始ping测试机的公网地址,到可以ping通时用时大约100s,怀疑是客户操作系统不断重启的原因是因为系统启动网卡还未完全就绪,RouteOS watchdog就已经开始执行ping测试,测试10s发现与监控地址不通,直接重启,如此反复陷入死循环。

推翻最初分析

  这样就可以推翻最初被黑的分析了,至于监控到CPU和内存突增,就是操作系统反复重启导致的了,唉,通过一个一个目录找文件,到最终能把系统修复,不容易啊。

确认系统关机原因

  系统反复重启的原因已经确认了,但是又是什么原因导致最初系统会关机呢,这个同样需要确认下,所以和客户要了重启时间段的日志,获取到有效信息如下:

  从日志字面意思理解是watchdog程序出现了严重错误,导致watchdog不能ping设置的网关地址,最终重启RouteOS。

  为了确认下不是网络原因导致的,我在测试机上同样配置了相关操作,watchdog检测一个服务器的地址,后续在服务器上打开防火墙禁止ICMP协议,RouteOS开始重启,重启后获取日志信息如下:

  好了,确认了如果是网络问题,会报timeout错误,至此修复了客户的操作系统,并确认了操作系统最初重启的原因,心累,不过是一次很好的学习体验。

RouteOS 频繁自启的更多相关文章

  1. 从“跳一跳”来看微信小程序的未来

    从“跳一跳”来看微信小程序的未来   相信大家这两天都被微信新推出的小程序跳一跳刷爆了朋友圈,为了方便用户在使用过程中切换小程序,微信在这次6.6.1版本中加入了下拉可快速切换小程序的功能,而“跳一跳 ...

  2. Logstash使用grok解析IIS日志

    Logstash使用grok解析IIS日志 1. 安装配置 安装Logstash前请确认Elasticsearch已经安装正确,参见RedHat6.4安装Elasticsearch5.2.0. 下载链 ...

  3. 【Ubuntu安装,ATX基于uiautomator2】之安装步骤

    Ubuntu系统下安装uiautomator2步骤: 1.安装命令: pip install --upgrade --pre uiautomator2 但是报错: Command "pyth ...

  4. 【Mac安装,ATX基于uiautomator2】之安装步骤

    Mac系统下安装uiaotumator2: 参考网址:<uiautomator2>以及参考github官方文档 注意:下面有坑,如果你没有下面的问题请直接跳转到 1.安装uiaotumat ...

  5. 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...

  6. BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启

    对于解锁和锁屏这种用的比较频繁action,谷歌做了限制,必须手动用代码注册 直接上代码:这是注册广播(手动代码注册广播接收者) public class MainActivity extends A ...

  7. IT运维如何防止陷入“中年油腻”和频繁被动地打“遭遇战”?

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:陈峻近期,我拜访了一家文化传播公司的 IT 运维总监 Tim,他向我讲述了他的团队是如何像当年玩<大航海时代>那样将 IT ...

  8. ASP.NET CORE Linux发布工具(文件对比 只上传差异文件;自动启停WebServer命令;上传完成自动预热WebServer)

    最近这几日在搞一个小网站:教你啊 :(感兴趣的朋友可以来捧场,在这个网站上有任何消费我都可以退还) 由于更新频繁,手动更新特别麻烦,于是开发了这个小工具 用了一段时间,还是挺顺手的,同时.NET Co ...

  9. 应用shell脚本停启Tomcat

    最近在工作中频繁的操作多个tomcat,顺便就简单研究了一下 一. 简介 Shell 是一种与操作系统直接交互的程序,Unix系统中叫Bourne Shell,包括以下几种 Sh—Bourne She ...

随机推荐

  1. libpcap 库使用(三)

    1.为了使收到的报文尽快给我们的处理程序,需要设置成immediate模式: int pcap_set_immediate_mode(pcap_t *p, int immediate_mode);

  2. ubuntu 下通过ftp命令下载文件

    /*连接*/ $ ftp 192.168.180.2Connected to 192.168.180.2.Name (192.168.180.2:rivsidn): admin  Password: ...

  3. Servlet封装类

    Servlet 提供了四个封装类: public class ServletRequestWrapper extends java.lang.Object implements ServletRequ ...

  4. Linux renew ip command

    $ sudo dhclient -r    //release ip 释放IP$ sudo dhclient       //获取IP Now obtain fresh IP:$ sudo dhcli ...

  5. SVN 钩子 同步测试服务器

    http://blog.csdn.net/showso2006/article/details/6750441 多人开始使用subversion之后,就想着,要建立一个测试用的服务器,不需要把文件up ...

  6. [Spark]Spark章1 Spark架构浅析

    Spark架构 Spark架构采用了分布式计算中的Master-Slave模型.集群中运行Master进程的节点称为Master,同样,集群中含有Worker进程的节点为Slave.Master负责控 ...

  7. vc项目中加载多个lib遇到的问题

    一个VC项目中 在网络加密 json解析等方面  加载了多个第三方库和文件 boost cryptpp rapidjson  mysql的连接池等等 在使用mysql++的时候 多次报错 LNK 20 ...

  8. js处理img标签加载图片失败,显示默认图片

    1.第一种方法: 如果已经引入了jquery插件,就很好办.没有的话,如果实在需要,可以附上代码: script(type='text/javascript', src="http://aj ...

  9. java中HashMap的基本方法使用

    遍历,添加词,等等 package test; import java.util.HashMap; import java.util.Iterator; import java.util.ArrayL ...

  10. mybatis学习 九 代理开发

    1.作用: 实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取 mapper.xml 中编写的 sql. 2.实现步骤: 2.1 创建一个接口 (1) ...