前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux服务器被攻破?7条指令锁定背后的“他”!

Linux服务器被攻破?7条指令锁定背后的“他”!

作者头像
程序员小助手
发布2020-05-17 23:50:43
1.2K0
发布2020-05-17 23:50:43
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

大多数受攻击的服务器是由程序执行的,这些攻击者会滥用服务器,只要能正常访问,他们几乎不采取任何预防措施隐藏他们正在做的事。

服务器被攻破的迹象

当一个服务器被一个缺乏经验的,或者程序攻击者破坏时,他们通常会做一些事情来消耗100%的资源。

这种资源通常是用于加密货币挖掘,或发送垃圾邮件,或用于发起DDOS攻击。

这意味着出现问题的第一个迹象是服务器“运行缓慢”。这可能表现在网站服务页面的速度比平时慢得多,或电子邮件需要花费很久才能发送。

那么应该怎么排查呢?

检查清单1 -谁正在登录?

首先要查找的是当前登录到服务器的用户。

发现攻击者实际登录到了服务器,还堂而皇之在上面工作的,并不少见。

可以使用w指令检查。

whois命令可以在IP地址上运行,它会告诉你有关该IP注册到的所在地的所有信息。

检查清单2 -谁已经登录过?

Linux服务器会记录哪些用户登录,从哪个IP登录,登录时间和登录时间。使用最last命令打印此信息。

登录历史记录记录在一个~/.bash_history文件内,因此很容易删除。

通常,攻击者会简单地删除这个文件,以试图掩盖他们的踪迹。

所以,如果你运行last指令,却只看到你的当前登录,这就是一个不太妙了。

如果没有登录历史,就非常非常可疑了,需要继续寻找攻击的迹象。

检查清单3 -命令历史记录

这种级别的攻击者通常不采取任何预防措施,不留下任何命令历史记录,因此运行history命令将向你展示他们所做的一切。

特别留意wget或curl命令,可能会有系统库以外的软件被下载,如spam bots 或 crypto miners。

检查清单4 -CPU

攻击者通常很没有截止,肆无忌惮地耗费着服务资源。这通常很容易发现,只需运行top查看所有的进程。这会显示在没有登录的情况下使用你的服务器。

如果有陌生的进程,可以在网上搜索一下,也可以使用 losf 或 strace 追踪。确定可以PID后这样做:

strace -p PID

这会显示进程正在进行的所有系统调用。有很多信息,但是浏览这些信息会让你对正在发生的事情有一个很全面的了解。

lsof -p PID

这个程序将列出进程已打开的文件。

检查清单5 - 系统进程

如果一个未经授权的进程消耗了CPU资源,仍然可以在 ps 所显示的完整的进程列表中查找到,使用 ps auxf,它可以打印最清晰的信息。

寻找任何您不认识的进程。在服务器上运行ps的次数越多,非法进程就越明显。

检查清单6 - 按进程查看网络使用情况

命令iftop的功能与top类似,用于显示正在发送和接收网络数据,及其源和目标的进程的排序列表。

像DOS攻击或垃圾邮件机器人这样的进程,会立即出现在列表的顶部。

检查清单7 - 哪些进程正在监听网络连接?

通常,攻击者会安装一个除了监听网络端口以获取指令外,什么也不做的程序。这并不消耗CPU或带宽,因为它只是监听状态,所以top指令很难发现。

lsof 和 netstat 命令都将列出所有网络进程。我使用以下选项:

lsof -i

或者

netstat -plunt

你应该排查在 LISTEN 或 ESTABLISHED 中列出的任何进程,因为这些进程要么正在等待连接(LISTEN),要么正在打开连接(ESTABLISHED)。

如果你不认识这些进程,请使用 strace 或 lsof 查看它们在做什么。

挽回:发现被攻击后,该怎么办?

首先要做的是不要惊慌,特别是在攻击者当前登录的情况下。你需要能够在攻击者意识到你来了之前,收回对计算机的控制。

如果他们知道行踪败露,很可能会先把你踢出去,并开始恶意破坏任何资源。

如果你不是很专业,那么只需关闭服务器

shutdown -h now

或者

systemctl poweroff

如果是云服务器,到控制面板关闭服务器就行了。一旦它被关闭,你就可以根据需要设置的防火墙规则。

如果你觉得更有信心,主机提供商有一个上游防火墙,然后按这个顺序创建和启用以下两个规则:

  1. 只允许你的IP地址可以通过SSH访问;
  2. 关闭一切网络服务东西,不仅仅是SSH,而是每个端口上的每个协议。

这将立即终止攻击者们的SSH会话,只允许你访问服务器。

如果你不能访问上游防火墙,则必须在服务器本身上创建并启用这些防火墙规则,然后,当这些规则起作用时,使用 kill 命令杀掉攻击者的ssh会话。

最后,如果有别的连接方式,可以登录到服务器,就能用 systemctl stop network.service 停止连网。

这将完全停止任何网络访问,你有大量的时间配置和启用防火墙规则。

写在最后

纵使重新控制了服务器,还没完呢。

不要试图修复问题,继续使用服务器。你永远无法确定攻击者做了什么,因此也无法保证服务器是安全的。

唯一明智的做法是复制所有需要的数据,然后重新安装

Happy coding :)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 服务器被攻破的迹象
  • 检查清单1 -谁正在登录?
  • 检查清单2 -谁已经登录过?
  • 检查清单3 -命令历史记录
  • 检查清单4 -CPU
  • 检查清单5 - 系统进程
  • 检查清单6 - 按进程查看网络使用情况
  • 检查清单7 - 哪些进程正在监听网络连接?
  • 挽回:发现被攻击后,该怎么办?
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档