转自:http://huoding.com/2016/03/07/495

话说从前些天开始,我的某台服务器不时会出现外网访问响应速度变慢的情况,不过内网访问倒是一直正常。因为并不是核心服务器,所以一开始我便忽略了监控报警,但是随着服务器的可用性越来越差,我不得不腾出手来看看到底发生了什么。

既然是网络问题,那么可以在客户端用「mtr <IP>」检查一下网络情况:

发现丢包主要发生在最后一跳,接着可以在服务器用「sar -n DEV」检查带宽:

明显可见 TX 流量时不时便会到达一定的高峰,说明服务器在向外发送大量数据,导致触及了带宽阈值,那么到底是什么原因造成的呢?是时候祭出「iptraf」神器了,本例的服务器中,内网(eth0)正常;外网(eth1)异常:

单独监控外网网卡发现大部分流量都集中在 UDP 协议之上:

按照端口监控发现流量主要集中在 UDP 的 53 端口上。不过需要说明的是这里的端口既可能是源端口,也可能是目标端口,并且 iptraf 缺省只监控 1024 以下的端口:

监控具体的流量包,发现本地端口在不停的往远程的端口发请求:

随便提一下,在上面的确诊过程中,我详细描述了 iptraf 的用法,其实 iftop 也不错,但是需要说明的是,iftop 缺省并不显示端口信息(按 p 键显示)。

如果要想知道某个端口运行的是什么程序,可以使用 lsof 命令:

lsof -i:<PORT>

结果发现可疑进程是通过 jenkins 用户启动的,于是我们基本上可以确认攻击者是通过 jenkins 漏洞攻陷服务器的,让我的服务器成为一台肉鸡,进而对目标发起 DNS 反射攻击。既然已经大概搞清楚了被攻击的原因,那么最简单的方法就是把问题服务器直接下线,重新配置一个新服务器,不过有时候事情并不简单,所以得想办法恢复它。

因为攻击者可能会在服务器上做手脚,所以我们需要仔细排查每一个存在隐患的地方,比如 cron 配置,还有 /etc/passwd 和 /etc/rc.d/init.d/* 等文件。此外,一些常用的命令也存在被感染的可能性,如果操作系统是 CentOS 的话,可以按如下方式确认:

rpm -V $(rpm -qa)

它会检测文件在安装后是否发生了变化,如果是,那么会给出相应的提示,比如:长度变化提示 S,权限变化提示 M,最重要是的 MD5 变化的话提示 5,一旦发现了某个命令可能存在问题,重新安装它(前提是 yum 没有被感染):

yum reinstall <PACKAGE>

即便再小心,也难免百密一疏,木马可能会死灰复燃,此时可以试试 sysdig 命令:

sysdig -c spy_users

它会监控所有的用户行为,如果木马有动作,自然也会被记录下来。

回想整个事件,如果我不在外网服务器上乱装服务,或者及时升级到最新版,那么可能就不会被黑;如果我没有忽视监控报警,那么可能很早就会发现问题。不过出问题并不可怕,更重要的是我们要能理清问题的来龙去脉,别重复摔在同一个坑里。

Linux-记录一次被当肉鸡行为的更多相关文章

  1. Linux记录从此开始

    Linux记录从此开始~ 希望自己多写代码同时多记录~

  2. linux记录登录ip方法

    PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...

  3. Arch Linux 记录

    2017.1.8 开始花了两天装 Arch Linux,因为是第一次安装 Arch Linux,所以过程中遇到许多问题,特记录如下. 安装过程及遇到的问题: 下载镜像,刻盘. 重启进入 LiveCD ...

  4. Linux记录-sysctl.conf优化方案

    Sysctl是一个允许您改变正在运行中的Linux系统的接口.它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能.用sysctl可以读取设置超过五百 ...

  5. Linux记录-salt分析

    salt-master建立分组 如dn: 'L@dnxxx,dyyy' salt -N dn  state.apply  hadoop test=true salt -N dn  cmd.run  ' ...

  6. Linux 记录所有用户登录和操作的详细日志

    1.起因 最近Linux服务器上一些文件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录. 一般大家通常会采用history来记录,但是history有个缺陷就是默认是1000行 ...

  7. Linux记录history命令

    对后面的(1)方法的提取文件改写法(强烈推荐) 记录存储位置: mkdir -p /usr/local/records chmod 777 /usr/local/records/chmod +t /u ...

  8. Linux记录-shell 100例(转载)

    1.编写hello world脚本 #!/bin/bash # 编写hello world脚本 echo "Hello World!" 2.通过位置变量创建 Linux 系统账户及 ...

  9. Linux记录-史上最全的MySQL高性能优化实战总结(转载)

       史上最全的MySQL高性能优化实战总结! 1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰.在进行MySQL的优 ...

  10. 树莓派安装parrot linux记录

    手头这台树莓派3b安装parrot linux arm遇到了不少问题,写篇博客记录一下. 1.下载和刻录 网址:https://www.parrotsec.org/download-other.php ...

随机推荐

  1. union (共用声明和共用一变量定义)

    "联合"是一种特殊的类,也是一种构造类型的数据结构.在一个"联合"内可以定义多种不同的数据类型, 一个被说明为该"联合"类型的变量中,允许装 ...

  2. SQL语言增加、修改、删除数据的语法

    增加 insert into 表名(字段1,字段2) values ('字段1的值','字段2的值'); 修改 update 表名 set 字段1='赋予字段1的新值',字段2='赋予字段2的新值' ...

  3. Java防盗链机制

    对于防盗链技术,网上提供了很多很多的相关技术,但是不是特别复杂就是效果不好. 这里在网上找到一种思路,就是关于HTTP协议响应头中包含的Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可 ...

  4. Myeclipse2016 部署webapp 至 tomcat 上出现 “There are no resources that can be added or removed from the server”

    对要部署的项目右键---Properties---Myeclipse---选中Dynamic Web Module 和 Java

  5. js高级程序设计(六)面向对象

    ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到一个值.正 ...

  6. html5-表单

    例子: text,number,email 的输入框 <!-- required:必填项 --> <!-- autofocus:获得焦点 --> <!-- placeho ...

  7. C#窗体 WinForm 文件操作

    文件及文件夹操作 C/S:WinForm可以操作客户端文件 Client ServerB/S:浏览器服务 Brower Server 命名空间:using system .IO; 1. File类:文 ...

  8. js获取手机联网状态

    window.addEventListener("offline", function() { alert('offline') }, false); window.addEven ...

  9. ios 尺寸

    pre iPhone5 Default.png (320x480px) – "iPhone Portrait iOS5,6 – 1x" Default@2x.png (640x96 ...

  10. jquery 获取下拉框值与select text

    下面先介绍了很多jquery获取select属性的方法,同时后面的实例我们讲的是jquery 获取下拉框值与select text代码. 下面先介绍了很多jquery获取select属性的方法,同时后 ...