cowgod Asked: 2009-05-02 12:59:12 +0800 CST2009-05-02 12:59:12 +0800 CST 2009-05-02 12:59:12 +0800 CST 我如何知道我的 Linux 服务器是否已被黑客入侵? 772 Linux 服务器被黑客入侵的迹象是什么?是否有任何工具可以按计划生成和通过电子邮件发送审计报告? linux security hacking audit 10 个回答 Voted Best Answer Brent 2009-05-02T13:11:41+08:002009-05-02T13:11:41+08:00 在某处保留关键系统文件(例如 ls、ps、netstat、md5sum)的原始副本,其中包含它们的 md5sum,并定期将它们与实时版本进行比较。Rootkit 总是会修改这些文件。如果您怀疑原件已被泄露,请使用这些副本。 aide或tripwire会告诉您任何已修改的文件——假设他们的数据库没有被篡改。 配置 syslog 以将您的日志文件发送到远程日志服务器,在那里它们不能被入侵者篡改。观察这些远程日志文件是否有可疑活动 定期阅读您的日志- 使用logwatch或logcheck来综合关键信息。 了解您的服务器。了解哪些活动和日志是正常的。 user1686 2009-05-03T17:49:38+08:002009-05-03T17:49:38+08:00 过去给我提示的一些事情: 应该空闲的系统上的高负载 奇怪的段错误,例如。来自标准实用程序ls(如损坏的根工具包可能会发生这种情况) /或中的隐藏目录/var/(大多数脚本小子太愚蠢或懒得掩盖他们的踪迹) netstat显示不应该存在的开放端口 进程列表中您通常使用不同风格的守护程序(例如bind,但您总是使用djbdns) 此外,我发现有一个可靠的迹象表明一个盒子被破坏了:如果您对继承系统的管理员的勤奋(更新等)有不好的感觉,请密切关注它! Oskar Duveborn 2009-05-02T13:13:41+08:002009-05-02T13:13:41+08:00 你没有。 我知道,我知道 - 但这是偏执的、可悲的事实,真的 ;) 当然有很多提示,但如果系统是专门针对的 - 可能无法分辨。很高兴了解没有什么是完全安全的。但是我们需要为更安全而努力,所以我将指出所有其他答案;) 如果您的系统遭到入侵,那么您的任何系统工具都不能被信任来揭示真相。 Whisk 2009-05-02T13:01:40+08:002009-05-02T13:01:40+08:00 Tripwire是一种常用工具——它会在系统文件发生更改时通知您,但显然您需要事先安装它。否则,诸如您不知道的新用户帐户、奇怪的进程和您不认识的文件或无明显原因的带宽使用增加等项目都是常见的迹象。 其他监控系统(例如Zabbix )可以配置为在 /etc/passwd 等文件发生更改时向您发出警报。 Shai 2011-06-18T12:39:39+08:002011-06-18T12:39:39+08:00 有一种方法可以通过以下方式检查被黑服务器kill- 本质上,当您运行“kill -0 $PID”时,您正在向进程标识符 $PID 发送一个 nop 信号。如果进程正在运行,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。 Ian Purton 2012-03-30T07:58:43+08:002012-03-30T07:58:43+08:00 我将支持此处给出的回复并添加我自己的回复。 find /etc /var -mtime -2 如果您的任何主服务器文件在过去 2 天内发生更改,这将给您一个快速指示。 这是一篇关于黑客检测 如何检测你的服务器是否被黑客入侵的文章。 Tom Ritter 2009-05-02T13:40:47+08:002009-05-02T13:40:47+08:00 从如何检测服务器上的不需要的入侵? 使用 IDS SNORT® 是一个使用规则驱动语言的开源网络入侵预防和检测系统,它结合了签名、协议和基于异常的检查方法的优点。迄今为止,Snort 的下载量已达数百万,是全球部署最广泛的入侵检测和防御技术,并已成为业界事实上的标准。 Snort 读取网络流量并可以查找诸如“通过笔测试驱动”之类的东西,其中有人只是对您的服务器运行整个 metasploit 扫描。在我看来,很高兴知道这些事情。 使用日志... 根据您的使用情况,您可以对其进行设置,以便您知道用户何时登录,或从一个奇怪的 IP 登录,或何时 root 登录,或何时有人尝试登录。实际上,我让服务器通过电子邮件将每条高于 Debug 的日志消息发送给我。是的,甚至通知。我当然会过滤其中的一些,但每天早上当我收到 10 封关于某些事情的电子邮件时,我就想修复它,这样它就不会再发生了。 监控你的配置——我实际上将我的整个 /etc 保存在 subversion 中,这样我就可以跟踪修订。 运行扫描。Lynis和Rootkit Hunter等工具可以提醒您应用程序中可能存在的安全漏洞。有些程序可以维护所有垃圾箱的哈希或哈希树,并可以提醒您更改。 监控你的服务器——就像你提到的磁盘空间——如果有什么不寻常的地方,图表可以给你一个提示。我使用Cacti来监视 CPU、网络流量、磁盘空间、温度等。如果某些东西看起来很奇怪,那就是奇怪的,你应该找出奇怪的原因。 Rob 2013-12-21T01:12:59+08:002013-12-21T01:12:59+08:00 我只想补充一点: 检查您的 bash 历史记录,如果它是空的并且您没有取消设置或清空它,那么很可能有人已经破坏了您的服务器。 最后检查。要么你会看到未知的 IP,要么它看起来很空。 然后正如接受的答案所述,系统文件经常更改,请检查修改日期。然而,他们经常篡改修改日期。 他们经常安装在随机端口上运行的另一个版本的 ssh。这通常隐藏在一些非常奇怪的地方。请注意,它通常会被重命名为 ssh 以外的名称。所以检查 netstat(可能无法正常工作,因为他们经常替换它)并使用 iptables 来阻止任何未知端口。 无论如何,在这种情况下,预防胜于治疗。如果您受到了损害,最好只是格式化并重新开始。几乎不可能确认您已成功清除黑客。 请注意以下事项,以防止您的服务器受到威胁。 更改 ssh 端口 防止root无法登录 只允许某些用户 防止密码登录 使用 ssh 密钥,最好是受密码保护的密钥 在可能的情况下,将所有 ip 列入黑名单并将所需 ip 列入白名单。 安装和配置fail2ban 使用绊线检测入侵 监控使用 Nagios 或 zabbix 登录的用户数。即使您每次登录时都会收到通知,但至少您会知道其他人何时在玩。 如果可能,将您的服务器保持在 vpn 上,并且只允许通过 vpn ip 进行 ssh。保护您的 VPN。 值得注意的是,一旦他们进入一台服务器,他们将检查您的 bash 历史记录并查找您通过 ssh 从该服务器连接到的其他服务器。然后他们将尝试连接到这些服务器。因此,如果您由于密码错误而被暴力破解,他们很可能能够连接到另一台服务器并破坏这些服务器。 这是一个丑陋的世界,我重申预防胜于治疗。 Shai 2011-06-18T12:57:03+08:002011-06-18T12:57:03+08:00 在搜索了一下之后,还有这个,它可以完成我上面列出的内容,以及其他一些内容: http: //www.chkrootkit.org/和http://www.rootkit.nl/projects/rootkit_hunter.html Cheyne 2013-10-18T11:23:48+08:002013-10-18T11:23:48+08:00 您应该查看 GuardRail。它可以每天扫描您的服务器,并以一种很好的视觉方式告诉您发生了什么变化。它不需要代理,并且可以通过 SSH 连接,因此您无需使用代理将您的机器和资源搞得一团糟。 最重要的是,它最多可免费用于 5 台服务器。 在这里查看: https://www.scriptrock.com/
过去给我提示的一些事情:
ls
(如损坏的根工具包可能会发生这种情况)/
或中的隐藏目录/var/
(大多数脚本小子太愚蠢或懒得掩盖他们的踪迹)netstat
显示不应该存在的开放端口bind
,但您总是使用djbdns
)此外,我发现有一个可靠的迹象表明一个盒子被破坏了:如果您对继承系统的管理员的勤奋(更新等)有不好的感觉,请密切关注它!
你没有。
我知道,我知道 - 但这是偏执的、可悲的事实,真的 ;) 当然有很多提示,但如果系统是专门针对的 - 可能无法分辨。很高兴了解没有什么是完全安全的。但是我们需要为更安全而努力,所以我将指出所有其他答案;)
如果您的系统遭到入侵,那么您的任何系统工具都不能被信任来揭示真相。
Tripwire是一种常用工具——它会在系统文件发生更改时通知您,但显然您需要事先安装它。否则,诸如您不知道的新用户帐户、奇怪的进程和您不认识的文件或无明显原因的带宽使用增加等项目都是常见的迹象。
其他监控系统(例如Zabbix )可以配置为在 /etc/passwd 等文件发生更改时向您发出警报。
有一种方法可以通过以下方式检查被黑服务器
kill
-本质上,当您运行“kill -0 $PID”时,您正在向进程标识符 $PID 发送一个 nop 信号。如果进程正在运行,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。
我将支持此处给出的回复并添加我自己的回复。
如果您的任何主服务器文件在过去 2 天内发生更改,这将给您一个快速指示。
这是一篇关于黑客检测 如何检测你的服务器是否被黑客入侵的文章。
从如何检测服务器上的不需要的入侵?
使用 IDS
Snort 读取网络流量并可以查找诸如“通过笔测试驱动”之类的东西,其中有人只是对您的服务器运行整个 metasploit 扫描。在我看来,很高兴知道这些事情。
使用日志...
根据您的使用情况,您可以对其进行设置,以便您知道用户何时登录,或从一个奇怪的 IP 登录,或何时 root 登录,或何时有人尝试登录。实际上,我让服务器通过电子邮件将每条高于 Debug 的日志消息发送给我。是的,甚至通知。我当然会过滤其中的一些,但每天早上当我收到 10 封关于某些事情的电子邮件时,我就想修复它,这样它就不会再发生了。
监控你的配置——我实际上将我的整个 /etc 保存在 subversion 中,这样我就可以跟踪修订。
运行扫描。Lynis和Rootkit Hunter等工具可以提醒您应用程序中可能存在的安全漏洞。有些程序可以维护所有垃圾箱的哈希或哈希树,并可以提醒您更改。
监控你的服务器——就像你提到的磁盘空间——如果有什么不寻常的地方,图表可以给你一个提示。我使用Cacti来监视 CPU、网络流量、磁盘空间、温度等。如果某些东西看起来很奇怪,那就是奇怪的,你应该找出奇怪的原因。
我只想补充一点:
检查您的 bash 历史记录,如果它是空的并且您没有取消设置或清空它,那么很可能有人已经破坏了您的服务器。
最后检查。要么你会看到未知的 IP,要么它看起来很空。
然后正如接受的答案所述,系统文件经常更改,请检查修改日期。然而,他们经常篡改修改日期。
他们经常安装在随机端口上运行的另一个版本的 ssh。这通常隐藏在一些非常奇怪的地方。请注意,它通常会被重命名为 ssh 以外的名称。所以检查 netstat(可能无法正常工作,因为他们经常替换它)并使用 iptables 来阻止任何未知端口。
无论如何,在这种情况下,预防胜于治疗。如果您受到了损害,最好只是格式化并重新开始。几乎不可能确认您已成功清除黑客。
请注意以下事项,以防止您的服务器受到威胁。
值得注意的是,一旦他们进入一台服务器,他们将检查您的 bash 历史记录并查找您通过 ssh 从该服务器连接到的其他服务器。然后他们将尝试连接到这些服务器。因此,如果您由于密码错误而被暴力破解,他们很可能能够连接到另一台服务器并破坏这些服务器。
这是一个丑陋的世界,我重申预防胜于治疗。
在搜索了一下之后,还有这个,它可以完成我上面列出的内容,以及其他一些内容: http: //www.chkrootkit.org/和http://www.rootkit.nl/projects/rootkit_hunter.html
您应该查看 GuardRail。它可以每天扫描您的服务器,并以一种很好的视觉方式告诉您发生了什么变化。它不需要代理,并且可以通过 SSH 连接,因此您无需使用代理将您的机器和资源搞得一团糟。
最重要的是,它最多可免费用于 5 台服务器。
在这里查看:
https://www.scriptrock.com/