我有一个运行 Ubuntu 12.04 的 VPS - 我对服务器管理不是特别精通,但可以做基本的 CL 操作。
我们有一些第三方(来自 odesk)正在为我们开发一个 Web 应用程序,该应用程序将托管在 VPS 上,作为构建的一部分,他们需要通过它访问服务器来ssh
运行数据库迁移和其他内容。
我主要担心的是,我不知道他们实际上在服务器上放了什么,我相信他们只放了与网络应用程序开发有关的项目,但同样,他们也可能在后台安装恶意软件。
我计划安装ClamAV
病毒扫描程序,但如果有人具有 root 访问权限,可以绕过吗?
有没有最佳做法来 A)保护服务器,同时仍然授予第三方访问权限;B)是否有命令或某处可以让我查看所有已安装的项目,以便我可以看到那里实际有什么?
答案1
我计划安装 ClamAV 进行病毒扫描,但如果有人具有 root 权限,可以绕过吗?
要扫描什么?Windows 病毒?为什么需要扫描?请阅读此主题:我需要安装‘防病毒软件’吗?关于 Linux 上是否需要病毒扫描程序。但要检查系统上是否有可疑活动,根工具包检测器似乎更合适。
Root kit 扫描器是一款扫描工具,可确保您 99.9%* 的恶意工具均已清除。此工具通过运行以下测试来扫描 Root kit、后门和本地漏洞:
- MD5 哈希比较
- 查找 root kit 使用的默认文件
- 二进制文件权限错误
- 在 LKM 和 KLD 模块中查找可疑字符串
- 查找隐藏文件
- 纯文本和二进制文件中的可选扫描
Root kit Hunter 作为 GPL 许可项目发布,可供所有人免费使用。
- 不,实际上不是 99.9%。这只是另一个安全层
有没有一种最佳做法可以保护服务器,同时又能给予第三方访问权限
不要告诉他们您的管理员密码。为他们创建一个单独的用户,并赋予您认为足够的权限。如果他们需要做某事而无法完成,请让他们向您抱怨,然后决定是接受他们的请求还是拒绝。如果您自己可以完成这项任务,拒绝可能是合适的。
完成后锁定该用户并更改管理员密码。当他们再次需要访问时解锁用户。
是否有一个命令或某个地方可以让我查看所有已安装的项目,以便我可以看到那里实际有什么?
不。无论如何,没有万无一失的方法。如果他们使用 apt-get,这些都会被记录下来。但是没有办法记录添加到系统中的脚本(我希望这些脚本无论如何都会隐藏在您允许 odesk 安装的软件中;假设他们告诉您安装 10 个文件,其中 9 个是合法的,而 1 个是想要安装不需要的东西的 odesk 用户……您将如何找到它?)。
有一个更好的方法:您需要做的是检查流量,您可以在 中找到/var/log/
。如果您看到(您认为是)奇怪的连接,日志文件会将您指向罪魁祸首。但这不仅适用于这种情况:定期检查流量是任何管理员都应该做的任务(恶意软件只有在将其结果发布出去时才有用,因此您需要扮演守门人的角色)。
答案2
真正好的做法是给予他们尽可能少的访问权限,
1)他们是否需要 ssh 访问?
如果他们只需要使用数据库,那么您可以打开数据库端口到他们的 IP 或使用 Web 管理工具,例如 PhpMyAdmin。他们可以请求安装某些软件包,而不是自己安装。如果他们出于某种原因确实需要 ssh 访问权限,那么您可以查看 SSH Chroot Jails,它允许对系统上的某些资源进行有限的访问。
2)如何列出所有程序?
您可以通过发出命令列出由包管理器安装的所有已安装的应用程序sudo dpkg -l
,但您如何知道它们没有将一些二进制文件放到系统上并绕过包管理器?或编辑 cronjobs。您可以使用诸如tripwire
并对其进行精细设置以测试系统中的更改。
这实际上归结为第三方可能需要的少量访问权限。如果您授予某人系统的根访问权限,那么在我看来,您只能信任您授予访问权限的管理员,才能信任该系统。
答案3
第一部分(SSH 和防病毒/恶意软件)由 Rinzwind 和 Shutupsquare 正确回答,因此我避免重复。我同意他们的观点并为此点赞。 Rinzwind 关于 SSH 的回答 Shutupsquare 对 SSH 和防病毒的回答
至于列出所有本地安装的软件包并将其保存为桌面上名为“packages”的文本文件,请在终端中执行以下操作(不需要“sudo”):
dpkg --get-selections > ~/Desktop/packages
Tripwire
如果您担心您的团队(或某人)可能会进行大规模破坏活动,您也应该使用它。