Code前端首页关于Code前端联系我们

如何判断Linux服务器是否被攻击以及如何修复病毒?

terry 2年前 (2023-09-28) 阅读数 217 #Web安全

如何判断 Linux 服务器是否被入侵及排查病毒方法?啊天哪,对于一个前端有进步,只懂服务器端的人来说,黑客就知道如何折磨小白,攻击我的服务器。

一开始我没忍住。我不知道病毒从哪里来,也不知道黑客是如何攻击我的服务器的。接下来我们一步步来看。一、如何判断Linux服务器是否被攻击?

2。查一下你的Linux服务器是否被攻击

所谓服务器被攻击或被黑客入侵,就是指未经授权的人或程序进入服务器,将计算机资源用于自己的目的。往往会产生负面后果。

免责声明:如果您的服务器属于国家安全局或犯罪集团等政府机构,您将不会注意到任何错误,这些技术也不会检测到它的存在。

然而,大多数被入侵的服务器都是由自动攻击程序或廉价攻击者(如“脚本小子”和疯狂的罪犯)等程序入侵的。

此类攻击者在访问服务器时会利用服务器资源,并会采取一些步骤来隐藏他们正在做的事情。

受感染服务器的症状

当服务器受到缺乏经验的攻击者或自动攻击程序的危害时,它通常会消耗100%的资源。他们可能会浪费 CPU 资源来挖掘数字货币或发送垃圾邮件,或者可能会消耗带宽来发起 DoS 攻击。

所以问题的第一个迹象是服务器“变慢”。您网站上的页面可能加载缓慢,或者电子邮件发送时间较长。

那么您应该寻找什么?

2.1 目前涉及谁?

首先我们需要检查当前登录服务器的人。不难看出攻击者正在访问服务器并进行一些工作。

相关命令是w。运行 w 将产生以下结果:

10:43:09 up 214 days,  1:20,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    183.15.179.82    09:49    0.00s  0.02s  0.00s w

我检查了 IP 地址,发现我已登录,没有其他人登录。如果您发现IP地址不是您的,您应该检查它。这不是一个好兆头。

停下来深呼吸,不要惊慌,直接终止他的 SSH 连接即可。如果您无法阻止他们重新登录服务器,他们将快速登录,并在您再次登录时将您踢出。

请访问本文末尾的“被发现后该怎么办”部分,了解如果您发现自己被黑客攻击的证据该怎么办。

whois 命令可以检索 IP 地址并告诉您有关注册 IP 的组织的所有信息,包括其居住国家/地区。

2.2 谁曾经加入过?

Linux 服务器将记录有关哪个用户、从哪个 IP、何时登录以及登录时长的信息。使用last命令查看该信息。

结果是这样的:

root     pts/1        78.31.109.1      Thu Nov 30 08:26   still logged in
root     pts/0        113.174.161.1    Thu Nov 30 08:26   still logged in
root     pts/1        78.31.109.1      Thu Nov 30 08:24 - 08:26  (00:01)
root     pts/0        113.174.161.1    Wed Nov 29 12:34 - 12:52  (00:18)
root     pts/0        14.176.196.1     Mon Nov 27 13:32 - 13:53  (00:21)

这里可以看到英国IP和越南IP交替出现,并且前两个IP仍然处于登录状态。如果您看到未经授权的 IP,请检查结束区域。

登录后的历史记录会记录在二进制/var/log/wtmp文件中(LCTT翻译:这里作者可能有错,请根据实际情况更改),所以很容易已删除。攻击者常常直接删除该文件来隐藏自己的攻击行为。因此,如果您运行命令 last 并且只看到当前条目,这是一个不好的迹象。

如果您没有登录历史,请小心并继续关注其他登录标志。

2.3 查看命令历史记录

此级别的攻击者通常不关心隐藏他们的命令历史记录,因此命令 history 将显示他们迄今为止所做的所有操作。如果有 wgetcurl 命令用于下载异常软件(例如垃圾邮件机器人或漏洞利用程序),请小心。命令

的历史记录存储在文件~/.bash_history中,因此攻击者删除该文件以隐藏他的操作。与登录历史记录一样,如果执行history 命令但没有任何输出,则表示历史记录文件已被删除。这也是一个不好的信号,你需要密切关注服务器。 (LCTT版本,如果没有命令历史记录,您的配置可能是错误的。)

2.4 哪个进程消耗CPU?

您遇到的攻击者类型通常不会隐藏他们正在做的事情。它们执行一些 CPU 密集型进程。这使得更容易看到这些步骤。只需单击 top 并观看前几个步骤。

这也显示了排除的攻击者。例如,有些人使用不安全的电子邮件脚本发送垃圾邮件。

如果您不知道上面的流程,您可以Google一下该流程的名称,或者使用losfstrace来查看它的作用。

使用这些工具,第一步是从top复制进程的PID,然后运行:

strace -p PID

这将显示进程中调用的所有系统调用。它会生成很多内容,但是这些信息可以告诉你这个进程在做什么。

lsof  -p PID

该程序列出了进程中打开的文件。通过查看他们访问的文件,您可以很好地了解他们所做的事情。 ?命令ps auxf将显示清晰的信息。

需要验证所有未知步骤。经常跑步ps(这是一个好习惯)可以帮助您发现奇怪的脚步。

2.6 检查进程的网络功能

iftop 功能与top相同。它将组织并显示网络上发送和接收数据的过程及其地址和目的地。 DoS 攻击或垃圾邮件机器人等进程很容易出现在列表顶部。

2.7 哪个进程监听网络连接?

攻击者通常会安装专门侦听端口以接受指令的后门程序。该进程在等待时不会消耗CPU和带宽,因此不易被top等命令检测到。命令

lsofnetstat 将列出所有网络进程。我经常要求他们采取以下指标:

lsof -i
netstat -plunt

您需要在LISTENESTABLISHED状态下考虑这些步骤。这些进程要么正在等待连接(LISTENING),要么已经有连接(ESTABLISHED)。如果您遇到不认识的进程,请使用 stracelsof 看看它们做了什么。

3。受到攻击后该怎么办?

经过以上步骤后,您就可以发现您的服务器是否被攻击了。如果发生入侵,不要惊慌,尤其是当入侵者进入时。您需要在攻击者收到您已找到他的通知之前重新获得对机器的控制权。如果他发现你注意到了他,他可能会锁定你并​​阻止你进入服务器,然后开始销毁尸体并清除痕迹。

如果你不太懂技术,就关掉手机吧。您可以在服务器上使用两个命令 shutdown -h nowsystemctl poweroff 之一。您还可以登录托管提供商的控制面板来关闭服务器。关闭后,您可以开始配置防火墙或向供应商寻求建议。

如果您对自己有信心,并且您的托管提供商也提供了高防火墙,则您需要创建并启用以下两条规则:

  • 只允许 SSH 访问您的 IP 地址。
  • 其他事物都被阻止,不仅是 SSH,还包括所有端口上的任何协议。

这将立即关闭攻击者的 SSH 会话,只剩下您可以访问服务器。

如果无法访问上述防火墙,则需要在服务器上创建并启用这些防火墙策略,并在防火墙规则应用后使用命令kill关闭攻击者的SSH会话。 (LCTT 注意:本地防火墙规则可能不会阻止已建立的 SSH 会话,因此您需要手动终止会话。)

最后一种方法(如果支持)是使用控制监视器串行,例如通过 out 记录对服务器的访问带外连接,例如站,并使用 systemctl stop network.service 停止网络操作。这将关闭与服务器的所有网络连接,以便您可以手动调整这些防火墙规则。

当服务器恢复控制后,不要以为一切都会好起来。

请勿尝试修复此服务器并重新使用它。您永远不知道攻击者做了什么,因此您永远无法保证服务器是安全的。

最好的办法就是复制所有数据并重新安装系统。 (LCTT 翻译:您的程序此时不再可靠,但数据总体良好。)

4。步骤

完成上述步骤 2.1、2.2 和 2.3 后,我没有发现我的服务器或登录的内容有任何异常。然而,在步骤2.4中,我发现了一个异常和一个未知的步骤。这会消耗CPU,然后我使用strace -p PID看到这个进程正在发送大量数据包。我在步骤2.7中使用了lsof -i来查看这一步实际上是在监听网络。要进行连接,进程名称为 pnscan。使用 kill -9 PID 后,我运行了 ps aux | grep pnscan,看到进程还在,就上网查了一下。一段时间后我发现这是JBoss漏洞中毒。 ? nltp|grep 进程号 ubuntu:查看进程的端口号:netstat -anp|grep pid

[root@iZ28ti4v56dZ ~]# netstat -anp | grep 17453
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      17453/nginx
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      17453/nginx
unix  3      [ ]         STREAM     CONNECTED     11886123 17453/nginx
unix  3      [ ]         STREAM     CONNECTED     11886122 17453/nginx
[root@iZ28ti4v56dZ ~]# netstat -nltp | grep 17453
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      17453/nginx
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      17453/nginx

Linux下用于查看端口号的进程号:使用lsof命令:lsof –i:端口号

[root@iZ28ti4v56dZ ~]# lsof -i:443
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx   17453  root    7u  IPv4 11886111      0t0  TCP *:https (LISTEN)
nginx   17455 nginx    7u  IPv4 11886111      0t0  TCP *:https (LISTEN)

6. Jboss漏洞Linux服务器中毒解决方案

6.1中毒案例

  1. 网络拥塞,访问延迟增大。
  2. 系统出现在计划任务列表中。
  3. 存在非法流程。
  4. $JBOSS_HOME/bin 或 /root 目录中出现许多不寻常的文件。 ?
    1. 网络拥塞的原因是使用名为pnscan的工具进行端口扫描以查找蠕虫。发送大量请求包,占用网络带宽。
    2. 在系统定时任务表中,您可以找到以下不定期定时任务(有时只有2个)。 crontab –l 如何判断 Linux 服务器是否被入侵及排查病毒方法?

    .sysync.pl 和 .sysdbs 是隐藏文件,可以通过 ls –la 列表找到。

    1. 查看进程,可以检查以下非法进程如何判断 Linux 服务器是否被入侵及排查病毒方法?还可以在某些服务器上发现非法的java进程。请检查这些java进程在应用程序中是否被称为java。
    2. 出现在$JBOSS_HOME/bin或/root目录如何判断 Linux 服务器是否被入侵及排查病毒方法?病毒源代码安装包中包含kisses.tar.gz,安装后生成以上文件。 ? rm –rf .pl rm –rf treat.sh rm –rf install-sh rm –rf 版本 rm –rf Kisses rm –rf pns rm –rf pns ipsort rm –r f Kisses rm –rf .sysdbs rm –rf .sysync.pl

      crontab –e 1 1 10 ~/.sysdbs 1 1 24 perl ~/.sysync.pl 1 1 sq. sysync.pl 1 1 10~/.sysdbs 删除 crond stop service 行

      第 2 步:Jboss 安全配置,更改 jmx-console 和 web-console 的默认密码

      JMX 安全配置:♺ GET 和POST 行,并且不要注释掉安全限制部分。 如何判断 Linux 服务器是否被入侵及排查病毒方法?取消注释安全域 如何判断 Linux 服务器是否被入侵及排查病毒方法?更改管理员密码 如何判断 Linux 服务器是否被入侵及排查病毒方法?

      WEB-CONSOLE 安全确认 如何判断 Linux 服务器是否被入侵及排查病毒方法?

      与如何更改 JMX 安全性类似。

      第三步:测试

      Jboss安全配置完成后,进行http登录测试,看看验证窗口是否可以正常显示,输入设置的用户名和密码后是否可以访问。

      xxx.xxx.xxx.xxx/web-console

      xxx.xxx.xxx.xxx/jmx-conslol…

      6.4 Jboss漏洞攻击建议先生,当发现服务器很难解决。为了更有效地防范此类病毒攻击,给出以下建议:
      1. Jboss应用程序应在非root用户下运行,以防止病毒获得超级用户权限,更改root密码并控制服务器。
      2. 启用 Jboss 控制台的身份验证并更改默认密码。密码必须具有一定的复杂性。如果不需要,可以关闭管理端口和相关统计信息,删除主目录和Jboss文件。
      3. 更新Jboss到最新版本,特别是旧的Jboss存在很多漏洞,而新的Jboss安全性更高。
      4. 可以将WEB应用程序和接收器分离,例如通过集成Apache和Jboss。这样一方面更安全,另一方面也更方便进入交通。

      7。总结

      从昨天的杀毒检查到今天,我没有再收到任何说病毒已被清除的警告邮件。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门