我有一个运行桌面版 Ubuntu 发行版的家庭服务器。我在 crontab 中发现了这一点
* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1
当我查看该目录(用户名/后面的空格是目录名)时,我发现很多脚本显然在做一些不该做的事情。
在我清除电脑中的数据并重新安装之前,我想找出导致安全漏洞的原因以及发生的时间。这样我就不会再犯同样的错误。
我应该查看哪些日志文件?据我所知,计算机上运行的唯一服务器是 sshd 和 lighttpd。
如果类似的事情再次发生,我该怎么做才能检测出来?
答案1
首先,确保计算机已断开与任何网络的连接。
其次,确保在再次启动被黑操作系统之前,已从驱动器中取出所有重要数据。
首先检查相关文件的时间戳。通常它们都是准确的。
如果它们没有被清除,请交叉引用 httpd 日志和 auth 日志。如果其中一个被清除,您可以肯定这就是入侵方式。如果它们仍然完好无损,您可能能够从日志中收集有关它们如何进入的更多信息。
如果它们全部被消灭,你就倒霉了。弄清楚发生了什么事可能要花比它本身更多的时间。
您提到这两项服务正在运行,是否有良好的防火墙来阻止其他所有服务被访问?您是否允许在端口 22 上使用 SSH;您的登录名是否相当容易猜到;您是否允许密码登录;您是否对密码登录有任何实际速率限制?您是否安装了 lighttpd、perl、php、cgi、CMS 或类似软件?您是否运行了所有软件的更新版本;您是否订阅了您运行的所有软件的安全通知,并仔细评估了所有通知,以查看它们是否适用于您运行/公开的软件?
答案2
这本身就是一个话题;您可以通过 Google 搜索 Linux 取证来获取更多信息。基本上,您必须先制作驱动器映像以进行离线分析,然后清除计算机并从头开始安装。
记住所有意外情况。任何使用该计算机的人的密码都可能被泄露。更改密码、将其保持离线状态等,直到将其放入“洁净室”(隔离的虚拟机)为止。
否则,需要大量检查日志(可能伪造)并检查应用程序(php 脚本?数据库?是否更新了最新修复程序?其他用户是否泄露了密码?)
实际上,没有简单的方法可以回答您的问题,因为您需要对服务器进行取证工作并检查漏洞。您可以使用一些自动化工具,但请记住,如果攻击者拥有 Root 权限,您就不能再信任系统二进制文件,也不能信任日志。
至于未来的攻击,取决于你想要的安全性,你可以先将日志重定向到仅用于保存系统日志的系统。没有其他访问权限,以减少攻击足迹。
您还可以在系统上运行校验和软件(例如 Tripwire)来检查文件的完整性。
当然,还要保持更新并运行检查rootkit的扫描软件。
再次强调,安全并不是一蹴而就的事情。它本身也可以成为一门专业。分层安全可以变得非常严格,例如检查不属于您网络的主机/IP、加密对系统的所有访问、每天将系统上发现的更改日志发送给您,以及在您的网络上设置蜜罐以查找奇怪的活动(为什么我的服务器试图连接到蜜罐计算机上的端口 25?)
首先,如果你想检查活动,请获取磁盘映像并重新安装服务器软件。从头开始。服务器的二进制文件不再可信。
编辑 - 由于您正在运行 SSH,我想到了一些其他事情 - 安装拒绝主机。可以对其进行配置,以便在尝试 X 次后锁定针对 SSHD 上的系统的自动攻击。还可以将其配置为从“云”中的其他拒绝主机服务器进行更新,以共享锁定的 IP,以帮助最大限度地减少自动攻击。您还可以移动它正在监听的端口;许多人指出,这只是通过隐蔽性来实现安全性,但考虑到扫描的机器人数量,这大大减少了随机入侵的尝试。