小工具      在线工具  汉语词典  css  js  c++  java

Linux服务器被攻击,网络卡住

web,安全,网络,strtus2,iftop,阿里云,服务器,安全,网络,ssh 额外说明

收录于:40天前

今天我们收到了这个警告,同时服务器网络很卡,用SSH连接都会经常断,ping也时断时续,
警告的描述:
这里写图片描述

几年前很多人都知道strtus2的严重漏洞,但是公司的项目已经上线了,更换成本太高,所以我一直在使用struts2,并且升级了jar包。按理说,应该不会有严重的漏洞。

服务器以前也被攻击过,但我只见过简单的SQL注入到应用服务中。请注意,情况并不严重。

服务器症状

使用free -m检查内存,正常。顶一下cpu也正常。

首先查看一下,/var/log/secure
这里写图片描述
发现有一个ip 一直在试密码,
嗯,但不确认是不是它引起的,
不过可以尝试把这个ip 给禁了,

一些常规查看,可参考https://zhidao.baidu.com/question/744901405128179692.html
这个网址可以查看到不少服务器的日志方法
https://www.cnblogs.com/ylong52/p/5665708.html

检查整体网络状态,

dstat -nf
发现 有时会有177M这样的高流量出现

--net/eth0- --net/eth1-
recv  send: recv  send
111B   71B:  40B  122B
111B   71B:  40B  170B
111B   71B:  40B  122B
111B   71B:  40B  90M
111B   71B:  40B  177M

dstat还是很实用的。除了网络之外,还可以监控CPU、IO等,如果你的生产机出现问题,先用这个方法,也许会给你带来一些线索。

使用iftop确认具体流量,

发现服务器有进程,一直send
iftop -i -N -P eth1
这里写图片描述

iftop的使用
http://www.vpser.net/manage/iftop.html
如果要更细一点,查看所有请求的情况,可以用tcpdump -nn -i eth1,但这个是抓包的,感觉不是很合适.

尝试查找进程

但我用 lsof -i:37815 并不能找到该进程,,估计是这个客户端端口总是换。而我看到这个端口又有延迟,所以通过看到的端口找不到进程。。。
同样,这样也找不到,netstat -tunple | grep 37815

我也用nethogs查看了该进程对应的流量,但没有发现有大的流量。很奇怪。 ,

找不到该进程。这个瓶颈已经持续很长时间了,一直没有好的解决方案。

通过流程发现问题

然后我直接ps -ef 查看下全部进程,有没有奇怪的,发现有一个yundun (不是AliYunDun),感觉为啥 “yundun” 会有两种?然后pwdx 这个进程,发现是在tmp中的,而用户又不是root, 于是我考虑了一下,尝试把它给kill 了,发现问题解决。。。
不过,隔一段时间会又起来,把用户的密码给改掉,貌似解决
直接问题解决了,根本问题还没解决..而且还留了不少疑问。

通过检查流程来发现问题是一种碰运气的方法,它可能会受到某些条件(例如用户)的限制。如果想查看用户的登录状态,命令:last

其他发现问题的方法

百度了一下
这些症状有点像下面这个网址描述的有点类似
http://www.oicqzone.com/pc/2014110420120.html

  • 找疑问文件
    cd /etc/rc.d/rc1.d 这个目录下面这两个文件 我在其它正常的机上是看不见的,
    这里写图片描述

看到用户是root,有可能root正在被其他人使用。你需要尽快找时间更新密码(其他用户没有那么大的权限,无法向该目录写入文件。建议如果安装其他项目或软件,不要使用root账户并创建您自己的用户使用它)

  • 在etc中找到问题文件
    find /etc -mtime -5 -type f -print // 近5天的文件
    /etc/init.d/DbSecuritySpt 和 /etc/init.d/selinux这个文件里的内容是/usr/bin/bsd-port/getty
    bsd-port 在百度上搜索,发现有挺多是 和入侵有关的事,
    这里写图片描述

  • 在bin中找到问题文件
    // 近5天有修改的文件
    find /etc -mtime -5 -type f -print
    find /bin -mtime -5 -type f -print
    有几个命令被替换了,包括ps,lsof等,/usr/bin/dpkgd 里面是正确的文件(简单和其它正常机器的命令对比过),
    我已经把ps,lsof等命令放回原位了.

  • 具体操作
    为了保证没有误操作,对于疑似文件,我并没有进行删操作,只是把这些文件移到 指定目录,
    在服务器中做了如下操作:

mv /usr/bin/bsd-port* /root/bak/usrbin/
mv /usr/bin/.sshd /root/bak/usrbin/

mv /etc/rc.d/init.d/selinux  /root/bak/etc/
mv /etc/rc.d/init.d/DbSecuritySpt  /root/bak/etc/

找到攻击守护进程

[root@iZ944ytt77sZ etc]# ps -ef | grep bsd-port
root     14441     1  0 Dec05 ?        00:01:18  /usr/bin/bsd-port/getty


[root@iZ944ytt77sZ etc]# lsof -n | grep 14441
getty     14441  root  cwd       DIR              202,1     888832     393217 /tmp
getty     14441  root  rtd       DIR              202,1       4096          2 /
getty     14441  root  txt       REG              202,1    1223123    1070611 /root/bak/usrbin/bsd-port/getty
getty     14441  root    0u      CHR                1,3        0t0       3866 /dev/null
getty     14441  root    1u      CHR                1,3        0t0       3866 /dev/null
getty     14441  root    2u      CHR                1,3        0t0       3866 /dev/null
getty     14441  root    3uW     REG              202,1          5    1070612 /root/bak/usrbin/bsd-port/getty.lock
getty     14441  root    4u     sock                0,6        0t0     859801 can't identify protocol

杀掉这个14441

可以进一步etc和bin中找bsd-port 关键字的文件
find /etc -name ‘*’ | xargs grep -ri ‘wdcp’
find /usr/bin -name ‘bsd-port’

结果

改了用户密码,改了端口,升级了一些jar包,不过这个问题好像是PHP漏洞,也很难说是哪里引起的。

概括

. . .

相关推荐

额外说明

拉姆达表达式

Lambda表达式是一种匿名函数式编程的方式,在某些编程语言中,比如Python,Java,C++11等,它可以作为参数传递给其他函数或方法。它的语法通常包含一个箭头”->”符号,如下所示: (parameter1, parameter2,...) ->

额外说明

高等数学之导数公式表

   求导公式总结 高阶导数 多次求导的函数 多阶导数的表达      4或4以上的高阶导数    

额外说明

VC++检查程序托盘图标是否掩藏到沙漏区域中(附源码)

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新.

额外说明

卫星图像应用 - 洪水检测 使用DALI进行数据预处理

这篇文章是上一篇的延申。 运行环境:Google Colab 1. 当今的深度学习应用包含由许多串行运算组成的、复杂的多阶段数据处理流水线,仅依靠 CPU 处理这些流水线已成为限制性能和可扩展性的瓶颈。 2. DALI 是一个用于加载和预处理数据的库,可

额外说明

Java代码弱点与修复之——Dead local store(本地变量存储了闲置不用的对象)

该弱点完整的信息是: DLS: Dead local store - This instruction assigns a value to a local variable, but the value is not read or used in a

额外说明

typescript总结笔记二

一、泛型的认识 泛型可以简单理解为类型变量,它是一种特殊的变量,只用于表示类型而不是值。 二、定义一个简单的泛型 1、定义泛型 function identity<T>(arg: T): T { return arg; } identity就叫泛

额外说明

[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项

前言 在 [Ext JS 4] 实战之多选下拉单 (带checkbox) 这一篇中有介绍如何开发带有checkbox 的多选菜单。 但是实际项目开发过程中, 用户的需求也是不断精进的。 使用淘宝或是其他网站购物车功能的用户对全选就特别习惯, 所以他们也希

额外说明

LVM逻辑卷

LVM逻辑卷 服务器上的磁盘管理,我们可以用RAID技术提高硬盘读写速度,以及保证数据安全性 [root@local-pyyu chaogeRAID5]# df -h |grep md /dev/md0 10G 108

额外说明

Next.js 与 React:选择正确框架的终极指南

详细比较最流行的前端开发技术 Next.js 和 React,以选择合适的框架来构建一流的 Web 应用程序。 React 和 Next.js 是前端开发中最流行的技术,可在全球范围内创建高质量的网站和现代动态 Web 应用程序。 Hulu 和 Netf

ads via 小工具