Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上沙箱Apache的最佳方法_Linux_Security_Apache_Debian_Sysadmin - Fatal编程技术网

在Linux上沙箱Apache的最佳方法

在Linux上沙箱Apache的最佳方法,linux,security,apache,debian,sysadmin,Linux,Security,Apache,Debian,Sysadmin,我在面向公众的Debian服务器上运行Apache,我有点担心安装的安全性。这是一台拥有多个业余爱好项目的机器,所以我们这些使用这台机器的人都没有时间经常关注上游补丁,时刻注意安全问题,等等。但是我想把坏人挡在外面,或者如果他们进来了,就把他们关在沙箱里 那么,这里最好的、易于设置、易于维护的解决方案是什么?在Debian上设置用户模式linux沙箱容易吗?或者可能是一个chroot监狱?我想从外部轻松访问sadbox中的文件。这是其中一个让我很清楚我是程序员而不是系统管理员的时刻。任何帮助都将

我在面向公众的Debian服务器上运行Apache,我有点担心安装的安全性。这是一台拥有多个业余爱好项目的机器,所以我们这些使用这台机器的人都没有时间经常关注上游补丁,时刻注意安全问题,等等。但是我想把坏人挡在外面,或者如果他们进来了,就把他们关在沙箱里


那么,这里最好的、易于设置、易于维护的解决方案是什么?在Debian上设置用户模式linux沙箱容易吗?或者可能是一个chroot监狱?我想从外部轻松访问sadbox中的文件。这是其中一个让我很清楚我是程序员而不是系统管理员的时刻。任何帮助都将不胜感激

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

创建一个虚拟机。当您运行一个完整的沙箱环境时,尝试使用vmware或qemu之类的工具,Chroot-jails可能会非常不安全。攻击者可以完全访问内核功能,例如,可以装载驱动器以访问“主机”系统

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

我个人使用LinuxVServer来分离我的所有服务,只有很少明显的性能差异

请参阅以获取安装说明


您好,丹尼斯

为了确保这一点,CHRoot监狱很少是一个好主意。尽管有这样的意图,但它很容易被打破,事实上,我曾看到用户意外地使用它

无意冒犯,但是如果您没有时间查看安全补丁,并且没有时间了解安全问题,那么无论您的设置如何,您都应该关心。另一方面,仅仅是你在思考这些问题的事实,就将你与其他99.9%的此类机器的所有者区分开来。你走对了路

我赞同xardias所说的,但建议改为

它类似于LinuxVServer,因此在执行此路线时,您可能希望比较这两个版本

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

OpenVZ容器可以很容易地全部得到更新(“对于$(vzlist)中的i;vzctl exec apt get upgrade;done”)

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

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

这两个问题都不能通过虚拟化来解决,而不必严重破坏服务器本身。我认为你问题的真正答案是:

  • 运行一个操作系统,为您提供一个简单的操作系统更新机制
  • 使用供应商提供的软件
  • 经常备份所有内容

  • 我感到惊讶的是,没有人提到和,这是你应该开始做的基本事情,而且很可能是你唯一需要的事情。

    你应该使用SELinux。我不知道Debian对它的支持有多好;如果不是,只需在VM中安装启用SELinux的Centos 5.2即可。不应该做太多的工作,而且比任何业余爱好都要安全得多,因为业余爱好并不像大多数人认为的那样安全。
    SELinux以难以管理而闻名,但如果您只是运行一个Web服务器,这不应该是一个问题。您可能只需要执行一些“sebool”就可以让httpd连接到DB,但仅此而已。

    虽然以上所有建议都很好,但我还建议添加iptables规则以禁止意外的传出网络连接。由于大多数自动web攻击的第一件事是下载其剩余的有效负载,因此阻止网络连接可以降低攻击者的速度

    可以使用一些类似的规则(注意,您的Web服务器可能需要访问其他协议): iptables—追加输出—m所有者—uid所有者apache—m状态—状态已建立,相关—跳转接受 iptables—追加输出—m所有者—uid所有者apache—协议udp—目标端口53—跳转接受
    iptables——append OUTPUT——m owner——uid owner apache——jump REJECT

    如果使用Debian,debootstrap是您的朋友,它与QEMU、Xen、OpenVZ、Lguest或其他许多东西结合在一起。

    虽然所有这些基本上都是正确的,但某种沙盒提供了一个有用的附加安全层。这是否值得做取决于服务器上还有多少其他功能-如果机器的唯一用途是作为web服务器,那么将web服务器放在沙箱中没有多大意义。如果我错了,请纠正我,但chroot从来不是一个安全功能。chroot监狱是不安全的。UNIX chroot(8)程序不是作为安全软件设计的——你是对的,但是Apache mod_chroot