我如何知道我的Linux服务器是否遭到黑客入侵?


36

有什么迹象表明Linux服务器已被黑客入侵?是否有任何工具可以按计划生成并通过电子邮件发送审核报告?


1
如果状态未知,则实际上是不可能的。这就是为什么在将其暴露于除自身之外的任何东西之前使用受信任的安装源并设置Tripwire之类的工具如此重要的原因。
奥斯卡·杜夫伯恩


10
你的意思是“破解”。黑客是我们首先获得linux的方式。
gbarry

我的一个朋友是我们的服务器托管人,曾有一次要求我查看他的服务器,因为它似乎有些奇怪。一看到日志,我就知道有些事情发生了。他们试图掩盖自己的足迹,我认为已经安装了一个根工具包,但有些混乱。无论如何,为了简而言之,我们不得不从头开始重建整个服务器。花费了整夜,然后我们配置了一些安全审核工具。
马特2013年

@Matt Mind告诉我们哪些工具?今天还是一样吗?
罗德里戈

Answers:


34
  1. 将关键系统文件(如ls,ps,netstat,md5sum)的原始副本保存在某个地方,并带有md5sum,并定期将它们与实时版本进行比较。Rootkit将始终修改这些文件。如果您怀疑原稿已被盗用,请使用这些副本。
  2. aidetripwire会告诉您任何已被修改的文件-假设它们的数据库未被篡改。
  3. 配置syslog以将您的日志文件发送到远程日志服务器,该文件不会被入侵者篡改。观看这些远程日志文件中的可疑活动
  4. 定期阅读日志 -使用logwatchlogcheck综合关键信息。
  5. 了解您的服务器。了解哪些活动和日志是正常的。

8
如果不将md5扔掉,它会被严重削弱。您可能需要移动到sha512。
Broam 2010年

12

你不知道

我知道,我知道-但这确实是偏执的,可悲的事实;)当然,有很多提示,但是如果系统是专门针对的,则可能无法分辨。很高兴知道没有什么是绝对安全的。但是我们需要更加安全地工作,所以我将指向所有其他答案;)

如果您的系统遭到破坏,那么任何系统工具都不能被信任来揭露真相。


5
您假设攻击者具有一定的技能,想以任何方式隐身,并且对散发垃圾邮件并将OC3添加到僵尸网络并不完全感兴趣。这些天来,您通常会发现大量垃圾邮件从服务器中冒出来,通常是在不应该这样的超载系统上。如今,大多数“黑客”都是出于金钱动机。
Ernie 2012年

2
目前,最先进的攻击工具需要零技能,并且易于使用,并且默认情况下和设计上有些隐身。僵尸网络/僵尸可以被用于伤害,但漏洞的攻击工具能够引起不必要的崩溃和怪异的行为等之前被闲置了很长时间
奥斯卡Duveborn

11

Tripwire是一种常用的工具-尽管系统文件显然需要事先安装,但它会在系统文件更改时通知您。否则,通常会出现一些迹象,例如您不知道的新用户帐户,您不认识的怪异进程和文件,或无故增加带宽使用情况。

可以将其他监视系统(例如Zabbix)配置为在更改/ etc / passwd等文件时向您发出警报。


11

过去曾使我失望的一些事情:

  • 系统上的高负载应处于空闲状态
  • 奇怪的段错误,例如。来自标准实用程序,例如ls(破损的根工具包可能会发生这种情况)
  • /或中的隐藏目录/var/(大多数脚本小子太愚蠢或懒惰以至于无法掩盖音轨)
  • netstat 显示不应该存在的开放端口
  • 进程中的守护进程通常会使用不同的风格(例如bind,,但您始终使用djbdns

另外,我发现有一个可靠的迹象表明一个盒子被盗了:如果您对继承系统的管理员的勤奋(包括更新等)有不好的感觉,请密切注意!


10

有一种方法可以通过以下方式检查被黑的服务器kill

本质上,当您运行“ kill -0 $ PID”时,您将发送一个nop信号来处理标识符$ PID。如果进程正在运行,kill命令将正常退出。(FWIW,由于您传递了一个nop kill信号,因此该过程将不会发生任何事情)。如果进程未在运行,kill命令将失败(退出状态小于零)。

当服务器被黑客入侵/安装了rootkit时,它要做的第一件事就是告诉内核从进程表等中隐藏受影响的进程。但是,它可以在内核空间中做各种很酷的事情来处理流程。所以这意味着

a)此检查不是广泛的检查,因为编码正确/智能的rootkit将确保内核将以“进程不存在”答复进行答复,从而使此检查变得多余。b)不管哪种方式,当被黑客入侵的服务器运行“不良”进程时,其PID通常不会在/ proc下显示。

因此,如果您到现在为止,方法是杀死-0系统中的每个可用进程(从1-> / proc / sys / kernel / pid_max中的任何值),并查看是否有正在运行但未报告的进程在/ proc中。

如果某些进程确实在运行时出现,但未在/ proc中报告,则从任何角度看您都可能有问题。

这是一个实现所有内容的bash脚本-https: //gist.github.com/1032229。将其保存在某个文件中并执行它,如果您发现proc中未报告的进程,则应该有一些线索来进行挖掘。

HTH。


那对于我的家庭服务器非常有用,因为我没有时间像生产性工作系统那样维护系统。无论如何,我可以在专业环境中使用它,并且相对“确定”结果吗?答案是3岁:2014年当今,这仍然是检查常见感染的有效方法吗?
2014年


5

如何检测服务器上的有害入侵?

  • 使用IDS

    SNORT®是一种使用规则驱动语言的开源网络入侵防御和检测系统,结合了签名,协议和基于异常的检查方法的优点。迄今为止,Snort拥有数百万的下载量,是全球部署最广泛的入侵检测和防御技术,并已成为该行业的事实上的标准。

    Snort读取网络流量,并可以查找“笔式驱动测试”之类的东西,其中有人只对您的服务器运行整个metasploit扫描。我认为很高兴知道这类事情。

  • 使用日志...

    根据您的使用情况,您可以进行设置,以便在用户登录或从奇数IP登录时,在root用户登录或有人尝试登录时知道。实际上,服务器让我通过电子邮件向我发送了高于调试的每条日志消息。是的,甚至注意。我当然会过滤掉其中的一些,但是每天早晨,当我收到10封关于某事的电子邮件时,我都希望对其进行修复,以使其不再发生。

  • 监视您的配置-实际上,我将整个/ etc保留在subversion中,以便可以跟踪修订。

  • 运行扫描。LynisRootkit Hunter等工具可以向您发出警报,提醒您应用程序中可能存在的安全漏洞。有些程序会维护所有垃圾箱的哈希或哈希树,并且可以提醒您更改。

  • 监视服务器-就像您提到的磁盘空间一样,如果出现异常情况,图形可以为您提供提示。我使用Cacti来监视CPU,网络流量,磁盘空间,温度等。如果某些东西看起来很奇怪,那就奇怪了,您应该找出为什么这很奇怪。


2

我想补充一点:

检查您的bash历史记录,如果它为空,并且尚未设置或清空它,则很可能有人破坏了您的服务器。

最后检查。您可能会看到未知的IP,或者看起来很空白。

然后,如接受的答案所述,系统文件经常更改,请检查修改日期。但是,他们经常篡改日期。

他们通常会在随机端口上安装另一个版本的ssh。这通常隐藏在一些非常奇怪的地方。请注意,通常它将重命名为ssh以外的名称。因此,请检查netstat(由于经常替换它可能无法正常工作),并使用iptables阻止任何未知端口。

无论如何,在这种情况下,预防胜于治疗。如果您遇到问题,最好只是格式化并重新开始。几乎不可能确认您已成功清除了该hack。

请注意以下事项,以防止服务器受到损害。

  1. 更改SSH端口
  2. 阻止root用户登录
  3. 只允许某些用户
  4. 防止密码登录
  5. 使用ssh密钥,最好使用受密码保护的密钥
  6. 尽可能将所有ip列入黑名单,并将所需ip列入白名单。
  7. 安装和配置fail2ban
  8. 使用绊线检测入侵
  9. 监视使用Nagios或zabbix登录的用户数。即使您每次登录时都收到通知,至少您也会知道其他人何时在玩。
  10. 如果可能,将您的服务器保持在vpn上,并且仅允许通过vpn ip的ssh。保护您的VPN。

值得一提的是,一旦它们进入一台服务器,它们将检查您的bash历史记录,并从该服务器中查找通过ssh连接到的其他服务器。然后,他们将尝试连接到这些服务器。因此,如果您由于密码错误而被迫强行使用,那么很有可能他们将能够连接到另一台服务器并破坏这些服务器。

这是一个丑陋的世界,我重申预防胜于治疗。



0

您应该签出GuardRail。它可以每天扫描您的服务器,并以直观的方式告诉您发生了什么变化。它不需要代理程序,并且可以通过SSH连接,因此您不需要使用代理程序来浪费您的计算机和资源。

最重要的是,它最多可免费使用5台服务器。

在这里查看:

https://www.scriptrock.com/


这是具有根权限登录到您的计算机的云服务吗?如果服务受损,会发生什么?
2014年

您无需扎根。您还可以选择使用代理,这意味着您的计算机轮询而不是SSH调用。DB之类的密码始终存储在您的计算机上,而不是云中。
Cheyne 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.