如何确定我的Linux盒是否已渗透?


11

我最近阅读了一篇有关分析恶意SSH登录尝试的文章。这让我开始思考,我的Debian机器上的SSH用户名和密码组合不常见吗?我是否曾受到暴力字典攻击的攻击?让我们看一下/var/log/auth.log.0

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

因此,这看起来并不好。现在,我知道我已成为攻击的目标,并且我的一些用户名,密码组合很弱,我想知道如何...

  • ...确定我的Linux盒是否已被渗透?
  • ...消除肇事者留下的任何损害?
  • ...防止将来发生这种情况?

更新

有什么建议可以消除肇事者留下的任何损害?


该日志并不表明您已经受到攻击。除了让您担心的之外,您还有其他信息吗?

Answers:


15

许多人似乎建议使用DenyHosts,但我在系统上使用Fail2Ban取得了很多成功。它监视(可配置的)故障数量,然后执行一个操作-在我的服务器上,该操作是使用iptables丢弃来自主机的所有流量。在10次登录失败后,他们被禁止了,到此为止。

我将其与Logcheck结合使用,因此我总是知道服务器上正在发生什么。

如果您有任何证据表明有人确实侵入了您的系统(您发布的日志不是该证据),那么您唯一的解决方案是备份您需要保留的所有数据,擦除计算机,重新安装和还原。从备份。否则,无法确定。


1
我也使用logcheck和fail2ban。很好的组合。

我第二次使用fail2ban。
Malfist

我也从denyhosts切换到了fail2ban,因为fail2ban监视更多服务(邮件,Web,FTP等),并且更具可配置性
Jure1873

10

有效的登录尝试也会被登录,因此,如果您看到尝试成功的蛮力尝试,则表明发生了一些问题。

我使用DenyHosts监视我的日志中是否存在可疑的SSH通信,并且将其配置为在特定点自动对主机进行防火墙保护。

请注意,您还可以通过多种其他方式来监视计算机以查看其是否受到威胁,包括负载模式,登录活动,周期性的流量嗅探,监视运行的进程和打开的端口,以及使用tripwire之类的工具确保文件完整性。

如果您只打算做一个,监视系统负载是检测入侵的一种非常有效的方法,因为大多数计算机在遭受入侵时都被用来做诸如发送大量垃圾邮件或接收大量流量的事情。如果您是一个高价值的目标,也许没有用,人们可能会出于其他原因而专门闯入您,而不是将您的主人变成僵尸,但仍然很有价值。此外,进行概要分析并确定何时需要购买更多的硬件或更好的软件时,还需要监视负载。

您还应该进行全面的日志分析,查看auth.log和其他日志,以查找意外情况。日志文件分析是一个竞争激烈的市场,问题尚未解决,但是可以将Logwatch等免费工具配置为每天向您发送摘要。

层层安全!


1
当然,攻击者可能已经修改了日志以删除入侵的证据,因此日志中缺乏证据并不一定意味着一切都很好。

这是真的。在我的书中,缺乏证据基本上绝不是没有妥协的证据。登录到远程服务器可以提高日志的可信度。为此,我使用syslog-ng和ssh隧道。

我也看到过骇人听闻的尝试来破解我的服务器的企图...我安装了DenyHosts,仅在10分钟后它就已经添加了几个IP。谢谢!
亚伦·布朗

4

忘了Tripwire,它相当昂贵。请改用AIDE。它是免费的,易于设置(尽管要花一些时间来确定要排除的临时目录,否则进行配置)。

您运行它,它将建立所有文件的数据库。再次运行它,它会告诉您哪些文件已更改。

要做的另一件事是安装CSF,它具有denyhost类型的阻止程序,由于人们反复登录失败,它将把它们添加到您的防火墙规则中。您还可以要求SSH登录名也具有公共密钥,脚本小子可以尝试任意多次登录。


Tripwire有一个开源(免费)版本。参见tripwire.org
丹·安德雷塔

4
"* ... determine if my Linux box has been infiltrated?"
  • 寻找奇怪过程的迹象。我通常使用chkrootkit随附的工具(http://www.chkrootkit.org
  • 用另一台机器上的nmap进行portcan。如果您的包装盒遭到破坏,那么atacker很有可能安装了后门

“ * ...消除肇事者留下的任何损害吗?”

算了吧,如果发生了攻击,最好的建议是从头开始重新安装它(确保在新安装的过程中插入了任何漏洞)。不注意后门或隐身过程非常容易,最好重新安装。

“ * ...防止将来发生这种情况?”

  • 安全更新

  • 紧密防火墙

  • 强密码

  • 关闭不必要的服务


3

看一下logcheckportentrytripwire等工具。这对于随机字典SSH尝试非常常见,因此我对此不会太担心。您可能需要更改端口以进行随机混淆,但是您仍会不时看到随机尝试,这是一台拥有互联网机器的生活。


3

我在服务器上用来防止这些攻击的一件事是DenyHosts。DenyHosts将阻止恶意用户尝试登录。自安装以来,我的日志文件中的登录尝试条目少得多。


3

将公钥/私钥对用作额外的身份验证是一个好习惯。这样一来,如果没有右键,用户将无法通过SSH登录;根本不可能猜测出蛮力。关于此的一篇不错的文章可以在这里找到。

仅此一个密码短语对于SSH身份验证就非常可靠了。但是还有更多的漏洞!当心所有使用开放端口的应用程序;如果它们包含错误,则开发者可能会超越您的系统。一个很好的例子是由于我们当前使用的webstats软件中的错误,垃圾邮件机器人已安装在我们的服务器上。


2

Fail2ban是访问日志实时分析器。可以将其配置为阻止多次尝试失败的IP。这避免了字典攻击,而无需移动ssh端口。chkrootkit和rootkithunter是检查入侵的好工具。如果入侵成功,则最佳实践是复制数据(仅复制数据,而非可执行文件),擦除并重新安装,因为要确保100%确保系统是干净的确实很困难。


2

这里没有任何迹象表明您的设备已被盗用。即使您的密码很弱,仅对每个用户名进行一次登录尝试的字典攻击也极不可能成功。

但是,如果您知道自己的密码很弱,请加强密码!我个人喜欢pwgen(由Debian打包)。每次运行时,它都会生成大量健壮但相对较易发音的密码候选项,这些密码候选项(至少对我而言)很容易记住,例如yodieCh1,Tai2daci或Chohcah9。

但是,如果还有其他证据表明您的系统已受到威胁,请从轨道上对其核杀。这是唯一可以确定的方法。

不可执行的数据可能是可挽回的,但是任何具有可执行内容的内容(可能包括MS Office文档和某些配置文件)都必须删除,除非您愿意并且能够手动检查它以确保它没有被执行。不要怀有敌意,也不要接受它可能怀有敌意的可能性,如果您将它保留在原处,则可能损坏您的系统或为将来的再次妥协提供一条途径。


2

我喜欢的一项小额外保护是对传入的ssh连接进行速率限制,以减慢任何字典攻击或类似攻击。不要指望这能单独保护您自己,但除了包括禁用密码身份验证在内的其他答案中的建议外,还请使用此功能。

使用iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP

2

关于此线程有一些不好的建议,例如:

  • 对ssh使用非标准端口(错!)
  • 使用某些第三方安全工具(添加了不必要的依赖性/复杂性)
  • 将防火墙配置为阻止或列入白名单(维护头痛)

只需调整一下/etc/ssh/sshd_config即可提高安全性:

  • PermitRootLogin no
  • 仅为系统上具有ssh帐户的用户配置AllowUsers
  • 考虑仅使用带有“ PasswordAuthentication no”的物理密钥

如果您是箱子已被渗透。重建盒子。


(-1)有时需要在防火墙上配置规则或使用入侵防御系统。称其为不好的建议,而无需就其为何不是一个好主意进行任何额外的讨论,并不是很有帮助。
Zoredache

1

启用ssh会一直发生。将其移至高端口。

有一个名为“ Tripwire”的程序,它非常适合入侵检测,但安装起来非常困难。如果没有其他问题,则应通读他们的文档,以便您理解问题。


1

您需要先安装入侵检测,然后才能将计算机连接到互联网。

将IP连接列入SSH连接白名单是一个好主意,以确保整个世界都不能尝试这种事情。


我还将添加允许通过SSH登录的白名单用户,并在可能的情况下禁用基于密码的身份验证。

1

如何确定我的Linux机器是否已渗透?

引导只读媒体(livecd),然后将文件与备份或原始媒体进行比较。

只是到处看看奇怪的行为。当然,如果您花一些时间在骇客入侵之前先了解一下“正常”情况,这是最容易的。

您发布的错误并不表示妥协。只是有人在尝试。

我该如何消除肇事者留下的任何损失?

在系统受到威胁之前,请重新安装备份并从备份还原。

看到:

如何防止这种情况将来发生?

看到:




0

使用rkhunter或chkrootkit或同时使用两者;从外面扫描您的盒子以查看打开了哪些端口

无论如何,如果您拥有的所有用户都是无效用户,则无需担心:)


0

完全不同:尝试在IP地址上使用Google!自称来自土耳其的STARTURK的黑客可能曾试图入侵您的网站。

尽管它看起来像是对您系统的强力攻击,但很可能是该黑客​​做了一次尝试,现在又转到了其他站点。


0

正如许多人所指出的那样,Tripwire / AIDE是寻找系统变更的最佳方法。不幸的是,由于必须在已知良好的系统上对其进行配置,因此该母牛不在那头上。

至少可以帮助您入门的一件事是使用RPM数据库来检查文件的md5sums。基本要点是:

rpm -qa | xargs rpm -V

由于多种原因,这并不完美。首先,理论上您的本地RPM数据库可能已更改。其次,大多数发行版都使用预链接,而RPM并不支持预链接。MD5似乎已从该过程中被更改,这是合法的。

最好的建议是:如果不确定自己是否受到攻击,现在是时候进行重建了。


0

为了防止将来出现安全问题,您可以看一下OSSEC,我用它来对我们的服务器进行文件完整性检查和日志监视,它非常完整且易于配置。它可以发送邮件通知,您可以通过命令行或Web界面检查警报...

http://www.ossec.net/

取自网站:

“ OSSEC是一个基于开源主机的入侵检测系统。它执行日志分析,文件完整性检查,策略监视,rootkit检测,实时警报和主动响应。”

  • 日志分析它可以检查服务器上的日志文件并通过规则向您发出警报(有很多预定义的内容,您可以添加自己的内容)

  • 文件完整性Tripwire / aide类似于功能,因此您将看到服务器上是否已修改任何文件

  • 策略监控:检查一些“最佳做法”安全规则

  • rootkit检测:rkhunter,chkrootkit之类的功能

  • 实时警报和主动响应:您可以将ossec配置为对警报自动做出反应(我不使用它,但是可以使用它来阻止对尝试进行过多失败连接的主机的ssh访问)

真的很好的产品,而且非常活跃

要加固您的盒子,您还可以使用lynisbastille

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.