转自: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. nginx 缓存机制

    nginx 缓存机制   Nginx缓存的基本思路 利用请求的局部性原理,将请求过的内容在本地建立一个副本,下次访问时不再连接到后端服务器,直接响应本地内容 Nginx服务器启动后,会对本地磁盘上的缓 ...

  2. Java与mysql数据库编程中遇见“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解决办法

    这个Bug是因为在取出ResultSet对象,对其进行操作时,没有采用.next()方法将ResultSet对象的光标移至指定行,不管Statement对象执行SQL语句是否十分确定能搜出记录,也不可 ...

  3. css学习笔记 2

    css中的简写: 颜色的简写有三种:十六进制的形式.rgb(a).颜色名称. 单位的省略:当属性值为0px时,可以简写为0. margin和padding的简写,不多说了. border的简写:bor ...

  4. 用python的BeautifulSoup分析html 【转】

    原地址:http://www.cnblogs.com/twinsclover/archive/2012/04/26/2471704.html 序言 之前用python爬取网页的时候,一直用的是rege ...

  5. jquery插件开发基础入门

    jquery插件开发基础入门 入门 编写一个jquery插件开始于给jquery.fn加入新的功能属性,此处添加的对象属性的名称就是你的插件名称 jQuery.fn,myPlugin = functi ...

  6. linux 下mysql的安装,并设置必要的密码

    首先,我使用的是redhat linux ,版本号为: [root@localhost init.d]# cat /proc/version Linux version - (bhcompile@po ...

  7. jquery.uploadify 动态传递参数

    最近 项目中使用到 uplaodify 来实现上传文件的功能.在传输动态参数的时候,遇到了问题! 使用官网提供的 settings 方法 官方例子function changeBtnText() {  ...

  8. 并发编程 10—— 任务取消 之 关闭 ExecutorService

    Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭 ...

  9. JAVA中怎么处理高并发的情况

    一.背景综述 并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作. 高并发的时候就是有很多用户在访问,导致系统数据不正确.糗事数据的现象.对于一些大型网站,比如门户网站,在面对大量用户访问 ...

  10. 注册Github

    注册Github 1.打开Github网页 2.设置用户名.邮箱.密码(右侧会显示是否可以使用),点击注册 3.此时邮箱会发来来自Github的注册消息,进入邮箱,点连接,完成注册 4.注册成功