我在面向公众的Debian服务器上运行Apache,并且有点担心安装的安全性。这是一台托管几个空闲业余爱好项目的机器,所以我们这些使用机器的人都没有时间经常观察上游补丁,保持安全问题等等。但是我想把坏人排除在外。 ,或者如果他们进去,请将他们留在沙箱中。

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

有帮助吗?

解决方案

当您运行完整的沙箱环境时,Chroot jails可能真的不安全。攻击者可以完全访问内核功能,例如可以安装驱动器来访问“主机”。系统

我建议您使用linux-vserver。你可以看到linux-vserver是一个改进的chroot监狱,里面有一个完整的debian安装。它真的很快,因为它在一个内核中运行,所有代码都是本机执行的。

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

有关安装说明,请查看 linux-vserver wiki

问候,丹尼斯

其他提示

我是xardias所说的,但建议改为 OpenVZ

它与Linux-Vserver类似,所以你可能想要在这条路线上比较这两者。

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

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

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

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

为了确保说明这一点,CHRoot Jails很少是一个好主意,尽管有意图,很容易突破,事实上我已经看到用户不小心做了!

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

令我惊讶的是,没有人提到 mod_chroot suEXEC ,这是您应该开始的基本内容,而且很可能是您需要的唯一内容。

你应该使用SELinux。我不知道它在Debian上的支持程度如何;如果不是,只需在VM中安装启用了SELinux的Centos 5.2即可。不应该做太多的工作,比任何业余的chroot更安全,这不像大多数人所认为的那样安全。 SELinux因难以管理而闻名,但如果您只是运行网络服务器,那应该不是问题。你可能只需要做一些“sebool”。让httpd连接到数据库,但这就是它。

虽然以上所有都是很好的建议,但我还建议添加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

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

制作虚拟机。尝试像vmware或qemu

这样的东西

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

这些问题都无法通过虚拟化解决,也不会严重影响服务器本身。我认为你问题的真正答案是:

  1. 运行一个操作系统,为您提供操作系统更新的简便机制。
  2. 使用供应商提供的软件。
  3. 经常备份所有内容。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top