如何检查一个Linux服务器是否从rootkit /后门/僵尸networking等干净?

如果Linux服务器暴露在互联网上的安全策略极低(R / W匿名Samba文件夹,Firebird数据库服务器,默认pipe理员密码,没有防火墙等)一周,那么我该如何确保系统是没有完全格式化和重新安装妥协,访问它只能通过SSH远程?

通常我会build议使用chkrootkit这样的工具进行本地检查,但是如果运行检查的唯一方法是远程执行此操作,那么我build议您尝试使用Rootkit Hunter 。

Rookit Hunter通过运行以下testing来检查rootkit和其他此类活动(有关更多详细信息 ,请参阅项目信息 ):

  • MD5哈希比较
  • 查找rootkit使用的默认文件
  • 二进制文件的权限错误
  • 在LKM和KLD模块中查找可疑的string
  • 寻找隐藏的文件

我想补充的是,正如其他人所说,确保没有篡改您的服务的唯一可靠的方法是重build它。 这些工具运行良好,但它们不是100%的成功保证。

OSSEC检查rootkit并检测可疑活动。

我知道这个答案不是你想要听到的,但是我们现在去吧。 有一些工具可以检查系统,确保系统清洁的最好方法是擦除服务器并重build。 我会做以下几点:

  • 从互联网上取下电脑
  • 备份数据和configuration信息以删除设备
  • 格式化存储
  • 重新安装基本/标准安装/更新
  • 使用旧数据重新configuration服务器作为参考
  • 恢复用户数据

这里有一些资源,我会开始阅读,如果你还没有。

[链接文字] [1] 链接文字 链接文字 链接文字

[1]: http : //www.sans.org/reading_room/whitepapers/linux/linux-rootkits-beginners-prevention-removal_901 “Linux Rootkits初学者”

也不是你想要的答案,但是如果有一个系统根植的可能性,可能很难100%确定系统是干净的。 Rootkit的devise很难被发现。 如果您运行各种根检查程序,并检查干净,那么“最可能”您的系统是干净的。

如果担心安全问题,我会考虑像上面刚刚提到的海报那样重build它,或者从好的备份中恢复它。

你真的需要在这里积极主动。 没有可靠的方法来检测机器上的rootkits,因此您需要阻止他们到达那里,并find方法来检测他们在入境(例如通过tripwire和locking的接口)。

如果您认为机器已被任何方式利用,您确实需要重新安装 – 没有保证的方式来清理它重新安装。 迄今为止最安全的select。

RKhunter,Tripwire等都很棒,但事实上只有在事件发生前才安装 – 这是因为它们非常适合检测密钥文件是否已经更改。 如果您现在安装RKHunter并运行它,它将检测到包含许多rootkit,但是它不会检测到在操作系统或您使用的应用程序中打开的攻击者的后门。

例如,你可以潜入电脑,创build一个新用户,给他们SSH和sudo权限,然后清理之后留下一个合法的外观configuration,没有rootkit – 然后回来,做你的邪恶。

最好的办法是查看哪些端口有监听服务的端口,然后查看所有这些服务的configuration并确保它们都是合法的。 然后查看您的防火墙configuration,并locking不需要的端口,包括进出端口。 然后安装RKHunter等,看看是否有一些脚本小子在那里乱丢了一个rootkit。

坦率地说,做JJbuild议和重build的工作可能比确保电脑没有受到损害的工作要less一些。 这是有价值的数据,而不是操作系统和configuration(除了设置的人工时间)。

你永远不会确定它不会被比你聪明的人破解。

第一步实际上应该是rkhunter / chkrootkit,但是过去我也运行过某些软件包pipe理器中的function,例如“rpmverify”,它会遍历系统上的所有软件包,并检查它们包含的文件的MD5Sums与磁盘上的文件没有区别。

核心二进制文件应该与RPM或DPKG数据库中指定的MD5完全相同,所以如果它们不同,就会发现有些奇怪的事情发生。

确定您的运行系统是否受损最有效的方法是使用Second Look 。 它将validation内核和内存中正在运行的所有软件,以确保它们与分发供应商提供的内容一致。 这是一个更好的方法比rkhunter,chkrootkit等,寻找特定的已知感染的文物。 Second Look对操作系统的完整性没有任何假设,因此在事件发生前您不需要使用或安装它。

(免责声明:我是Second Look的首席开发人员。)