我们的一个网络项目被黑客入侵了。黑客修改了项目中的几个模板文件和网络框架(它是著名的 php 框架之一)的 1 个核心文件。我们通过 git 找到了所有损坏的文件并恢复了它们。所以现在我需要找到弱点。
我们可以非常肯定地说,这不是 ftp 或 ssh 密码盗用。托管服务提供商的支持专家(经过日志分析)表示,这是我们代码中的安全漏洞。
我的问题:
1)我应该使用什么工具来查看 Apache 的访问和错误日志?(我们的服务器发行版是 Debian)。
2) 您能写一些关于在日志中检测可疑行的提示吗?也许是一些有用的正则表达式或技术的教程或入门书?
3)如何将日志中的“正常用户行为”与可疑行为区分开。
4)有没有什么办法可以防止 Apache 受到攻击?
感谢您的帮助。
答案1
像 HopelessNOOb 一样,我建议寻求一些专业帮助。
当你知道一个系统已经被入侵时,你不能依赖任何存储在其上的数据。此外,如果入侵是通过 HTTP 进行的,那么标准日志中可能没有足够的信息来隔离发生了什么。这就是为什么那些认真对待网络服务器安全的人会使用类似 mod_security 的东西来获取更详细的日志,并运行基于主机的 IDS 来检测入侵。
托管服务提供商的支持专家(经过日志分析)表示这是我们代码中的安全漏洞
如果他/她可以提出这种说法,那么他/她一定已经知道你的问题的答案——要么这种说法没有得到证实,而他们真正的意思是说,他们找不到他们的东西有任何问题。
你的目标应该是让网站恢复在线和安全。要确保网站安全,你需要堵住所有漏洞 - 但要破坏网站,你只需要找到一个漏洞:你知道你的网站至少有一个漏洞,但你需要修复任何存在漏洞 - 这意味着您需要采取截然不同的方法来保护站点安全。即使您可以识别并修复这次被利用的漏洞,证据表明您没有适当的流程和技能来确保这只是一起孤立事件。
答案2
1)你可以看看这些链接寻找一些软件来帮助你,尽管我自己没有使用过其中的大部分。但是,鉴于你已经获得了被修改文件的时间戳,请先查看日志文件中的日期和时间。搜索其中一个被修改文件的文件名;这应该会给你犯罪者的 IP 地址,然后你就可以开始搜索它了。
2 和 3) 您需要做的第一件事是找出您自己网站的正常情况。一种方法是使用标准分析工具(如 awstat)每天检查您的日志。您现在的主要问题似乎是您不知道您的网站的正常情况,因此您无法知道什么是异常的。
4) 有一些方法可以防止某些攻击,尽管这当然是一场军备竞赛。但只要消除最常见的漏洞,您就不太可能成为随机攻击的目标。您应该确保您的安装具有针对您的操作系统、apache 和 php 的最新安全补丁。您还应该查看mod_security,它既可以让你记录可疑活动,也可以要求客户端发送诸如 User-Agent 之类的标头,而许多破解工具都不这样做。
此外,我建议您考虑将您的日志(尤其是错误日志和任何 mod_security 日志)发送到另一台服务器(如果可能),这样即使有人设法进入您的服务器,他们也无法编辑日志文件来隐藏他们的踪迹。
答案3
JennyD 给了你一个很好的答案,但我建议采取不同的方法。
聘请一位专家。
确实有一些安全专家以此为生,他们会做得更好、更快,确定你是如何被黑客入侵的,以及你仍然容易受到攻击的地方。看看当地的安全市场,如果你找不到价格合理的咨询服务来为你分析日志,以及至少对你的系统进行基本的渗透和漏洞扫描,那我会感到惊讶。你会更全面地了解你需要做些什么来保护自己,并且你可以把时间花在你的专业领域上。
答案4
你可能想看看 LORG -https://github.com/jensvoid/lorg- 一个 PHP-CLI 工具(GPL),用于 Apache access_logs 的攻击后取证。它使用多种方法(基于签名、统计、基于学习)来检测 HTTPD 日志文件中针对 Web 应用程序的攻击。
它试图将这些可疑活动分组到会话中,并应用机器人检测技术(通常,攻击者可能会运行自动扫描,然后稍后再手动检查发现的内容)。此外,它还使用地理映射和 DNSBL 查找来查看攻击是否来自某个国家或僵尸网络。
之后,您可以选择各种机制来确定攻击是否成功:主动重放和签名匹配、HTTP 响应代码或响应大小的异常(发送字节字段)。
显然,如果日志文件已被更改或删除,事情可能会变得困难(LORG 可以选择执行简单的篡改检查以查找没有活动的特殊时间窗口,但这对您没有真正的帮助)。
至于防止攻击,我会使用 mod_security(如果您的托管服务提供商允许的话)。