18

我在面向公众的 Debian 服务器上运行 Apache,有点担心安装的安全性。这是一台承载几个空闲时间爱好项目的机器,所以我们使用这台机器的人都没有真正有时间持续关注上游补丁、注意安全问题等。但我想让坏人远离,或者如果他们进来了,就把他们放在沙箱里。

那么这里最好的、易于设置、易于维护的解决方案是什么?在 Debian 上设置用户模式 ​​linux 沙箱容易吗?或者也许是 chroot 监狱?我想从外部轻松访问 sadbox 内的文件。这是我非常清楚我是程序员而不是系统管理员的时候之一。任何帮助将非常感激!

4

11 回答 11

15

当您运行一个完整的沙盒环境时,Chroot 监狱可能真的很不安全。攻击者可以完全访问内核功能,例如可以挂载驱动器来访问“主机”系统。

我建议你使用 linux-vserver。您可以将 linux-vserver 视为一个改进的 chroot 监狱,其中包含完整的 debian 安装。它非常快,因为它在一个内核中运行,并且所有代码都是本地执行的。

我个人使用 linux-vserver 来分离我的所有服务,并且几乎没有明显的性能差异。

查看linux-vserver wiki以获取安装说明。

问候,丹尼斯

于 2008-09-28T09:24:33.163 回答
4

我赞同 xardias 的说法,但推荐使用OpenVZ

它类似于 Linux-Vserver,因此您可能希望在走这条路线时比较这两者。

我已经设置了一个带有代理 http 服务器(nginx)的网络服务器,然后它将流量委托给不同的 OpenVZ 容器(基于主机名或请求的路径)。在每个容器中,您可以设置 Apache 或任何其他网络服务器(例如 nginx、lighttpd、..)。这样一来,您就不需要一个 Apache 来处理所有事情,而是可以为任何服务子集(例如,每个项目)创建一个容器。

OpenVZ 容器可以很容易地完全更新(“for i in $(vzlist); do vzctl exec apt-get upgrade; done”)

不同容器的文件存储在硬件节点中,因此您可以通过 SFTP 轻松访问它们到硬件节点。除此之外,您可以向某些容器添加公共 IP 地址,在其中安装 SSH,然后直接从容器中访问它们。我什至听说过 SSH 代理,所以即使在这种情况下,额外的公共 IP 地址也可能是不必要的。

于 2008-09-28T14:04:03.740 回答
3

您始终可以在虚拟机中设置它并保留它的映像,以便在需要时重新滚动它。这样,服务器就从您的实际计算机中抽象出来,并且任何病毒等都包含在虚拟机中。正如我之前所说,如果您保留图像作为备份,则可以很容易地恢复到以前的状态。

于 2008-09-28T09:18:04.270 回答
3

可以肯定的是,CHRoot Jails 很少是一个好主意,尽管有意图,但很容易突破,事实上我看到它是用户不小心做的!

于 2008-09-28T09:40:42.547 回答
3

无意冒犯,但如果您没有时间关注安全补丁并时刻注意安全问题,那么无论您的设置如何,您都应该担心。另一方面,您正在考虑这些问题这一事实使您与其他 99.9% 的此类机器所有者区分开来。你在正确的道路上!

于 2008-09-28T13:37:21.170 回答
3

令我惊讶的是,没有人提到mod_chrootsuEXEC,它们是你应该开始的基本东西,而且很可能是你唯一需要的东西。

于 2008-09-28T18:08:58.100 回答
1

你应该使用 SELinux。我不知道它在 Debian 上的支持情况如何;如果不是,只需在 VM 中安装启用 SELinux 的 Centos 5.2。不应该做太多的工作,而且比任何业余 chrooting 安全得多,这并不像大多数人认为的那样安全。SELinux 以难以管理而著称,但如果您只是在运行网络服务器,那应该不是问题。您可能只需要执行一些“sebool”即可让 httpd 连接到数据库,但仅此而已。

于 2008-11-03T14:31:50.260 回答
1

虽然以上都是很好的建议,但我还建议添加一个 iptables 规则来禁止意外的传出网络连接。由于大多数自动化 Web 漏洞所做的第一件事就是下载其余的有效载荷,因此阻止网络连接会减慢攻击者的速度。

可以使用一些类似的规则(注意,您的网络服务器可能需要访问其他协议): iptables --append OUTPUT -m owner --uid-owner apache -m state --state ESTABLISHED,RELATED --jump ACCEPT iptables - -append OUTPUT -m owner --uid-owner apache --protocol udp --destination-port 53 --jump ACCEPT iptables --append OUTPUT -m owner --uid-owner apache --jump REJECT

于 2008-12-30T11:14:09.720 回答
1

如果使用 Debian,debootstrap 是你的朋友,再加上 QEMU、Xen、OpenVZ、Lguest 或其他许多。

于 2008-12-30T11:21:23.107 回答
0

做一个虚拟机。尝试类似 vmware 或 qemu

于 2008-09-28T09:19:23.660 回答
0

你真正想解决什么问题?如果您关心该服务器上的内容,则需要防止入侵者进入它。如果您关心入侵者会对您的服务器做什么,您需要限制服务器本身的功能。

这些问题都不能通过虚拟化来解决,而不会严重削弱服务器本身。我认为您的问题的真正答案是:

  1. 运行一个为您提供简单的操作系统更新机制的操作系统。
  2. 使用供应商提供的软件。
  3. 经常备份一切。
于 2008-09-28T17:40:44.377 回答