Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

chroot Linux中的所有服务

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  作者:Mark Nielsen

  译者:蓝风

  原文出处:LinuxFocus.org

  摘要:当某些人入侵你的系统时,chroot将通过限制入侵者所能造成的损失来提高系统的安全性。

介绍:

  什么时chroot呢?它其实是对一个程序从根本上重新定义。更准确的说,它为一个程序重新定义“root”目录或“/”或日志。当你使用chroot后,一个程序在目录以外的东西不再显得那么多。

  为什么它有用,如果某些人入侵了你的计算机,它们就不能看到你的系统中的所有的文件,而且,还可以限制它们使用命令来访问文件,也不能利用处于不安全状况下的文件。chroot唯一的缺点是:它不能阻止那些在网络连接和其他部件偷看的入侵者。这样,你必须做一些从本文你无法了解得更多的事情。

  1.保护你的网络端口。

  2.让你所有的服务在非root帐号的情况下运行,此外,将所有的服务chrooted。

  3.复制系统日志文件到另一台机器上。

  4.分析日志文件,

  5.分析人们试图探测你的计算机上任一端口的行为。

  6.限制每个服务的CPU和内存。

  7.激活帐号分配。

  我之所以认为chroot(在non-root服务中)可以对程序起到防护作用的原因是,如果某些人入侵了你的电脑,在non-root帐号的情况下,就没有文件来供他们使用以进入root,那么他们对闯入的区域所造成的破坏就会有限。同样,如果他们侵入的领域绝大部分在root帐号下所有,可供选择的破坏也会减少。很明显,如果某些人入侵了你的帐号,那么也可以保护你所受的损坏最小化。

  请记住:我的方法也不是100%的有效。这是我第一次尝试这样做,而且如果这样做有一部分的有效的话,那么剩余的的也将非常简单了.下面是如何做的步骤.

  你准备好了吗?

  好的,我们先创建一个目录,”/chroot”,然后,我们将我们所有的services都放在它的下面。接下来做以下安排:

  系统日志文件将和每项服务一起chroot。

  Apache放在/chroot/httpd。

  Ssh放在/chroot/sshd。

  PostgreSQL放在/chroot/postmaster。

  Sendmail也将被chroot,但是不幸的是,它不能在一个非root权限下运行。

  ntpd被chroot到/chroot/ntpd。

  named被chroot到/chroot/named。

  每一项service都将完全隔绝。

  我的perl脚本将生成一个chrooted的环境。

  Config_Chroot.pl.txt(下载地址见本文参考)在下载后被重命名为Config_Chroot.pl。perl脚本将安装的每一项service列表,浏览配置文件,对每一项服务进行配置。总之,下面是你需要做的事情。

  1.生成chroot目录。mkdir -p /chroot/Config/Backup

  2.下载Config_Chroot.pl.txt到/chroot/Config_Chroot.pl

  3.在perl脚本种改变$Home变量,如果你的根目录不是/chroot

  4.下载我写的配置文件。

  现在,最重要的一件事情是:我只在RedHat 7.2和RedHat 6.2中进行过测试。所以,请 根据你的版本修改perl脚本。

  我不想在Chroot中放置大量的文件,最后我的Perl脚本将它变得很小。基本上,我注意到当chroot很多service后,其实它们重复chroot了很多相似的文件和结构。一个最简单的分辨那些文件需要复制给一个特殊的service的方法是阅读手工页,而且对适用库文件的程序键入”ldd /usr/bin/file”命令。当然,你也可以chroot你正在安装的service,并且你可以手工操作,看看你犯的错误,后者看看它的日志文件。

  总之,,安装一项service操作如下:


cd /chroot
./Config_Chroot.pl config SERVICE
./Config_Chroot.pl install SERVICE
./Config_Chroot.pl start SERVICE

Chroot Ntpd

  Ntpd只是一个时间服务项目,它能使你的机器和其他机器与真实时间保持一致。chroot它很简单。


cd /chroot
# 如果你不想使用我的配置文件,下面的命令行不共通
#./Config_Chroot.pl config ntpd
./Config_Chroot.pl install ntpd
./Config_Chroot.pl start ntpd

Chroot DNS 或named

  已经做好,可以在下面的网址中有偿得到:

  http://www.linuxdoc.org/HOWTO/Chroot-BIND8-HOWTO.html

  或是

  http://www.linuxdoc.org/HOWTO/Chroot-BIND-HOWTO.html

  或者,你也可以使用我的脚本,


cd /chroot
 # 如果你不想使用我的配置文件,下面的命令行不共通
#./Config_Chroot.pl config named
./Config_Chroot.pl install named
./Config_Chroot.pl start named

  Chroot 系统日志文件还有我的抱怨

  我想chroot日志文件,但是有一个问题就是,日志文件缺省使用/dev/log,而且,它不能被chroot service监测到,因此,chroot并不是一件容易的事,下面是可能有效的几个方法:

  1.与每项service一起chroot日志文件。我测试过确实可行。但是我并不喜欢这样,因为我有一个连续运转的root service。

  2.看我们能不能连接一个断开的日志工具。

  3.记录文件到一个文件而不是通过系统日志文件。这可能是最可靠的方案,虽然,万一真的有人闯入系 统,他们就可以对日志文件为所欲为。

  4.配置主要的系统日志文件,看看个别的位置能不能获得所有的service。请同时使用-a选项。

  我的唯一的解决方法是确信系统日志文件和每一项service一起chroot。我想有一些方法可以在它们自己的chroot环境中在非root权限下对文件进行日志备份,就象是一个网络端口。它是可行的,但我想找到一个更好的解决方案。

  如果你不想将每个service的日志文件分离出来,那么请在系统日志开始的时候,在主要的日志文件开始在系统中运行的时候,加入以下命令:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:安全工具   下一篇:Samba的使用

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号