| 什么是chroot?chroot基本上重定义了一个程序的运行环境。更确切地说,它重定义了一个程序(或登录会话)的“ROOT”目录或“/”。 也就是说,对于chroot了的程序或shell来说,chroot环境之外的目录是不存在的。 那这样又有什么用呢?如果入侵者入侵了你的电脑,他们就不能看见你系统里所有的文件了。 这样,就限制了入侵者可能执行的命令,从而禁止了他们溢出不安全文件的机会。但唯一的缺点是, 我认为这不能阻止他们察看网络连接和其他资料。因此,你应做一些本文未深入涉及的事情: 保护网络端口。 察看是否所有的服务都以非root权限运行。另外,是否所有的服务都进行了chroot? 把系统日志转移到其他电脑。 分析日志文件。 分析那些试图探测你的计算机的随机端口的人们。 限制服务所占用的cpu和内存资源。 激活用户配额。 我认为(把以非root权限运行的服务进行)chroot可以作为一道安全防线的原因是, 如果入侵者得到了一个非root账户,但没有使他们得到root权限的文件的话,那么他们只能对所入侵的区域造成破坏。 而且,如果root账户是入侵区域大部分文件的拥有者的话,入侵者是没有多少攻击的选择的。显然,如果你的账户被入侵, 那一定是某些地方出问题了,但最好能减少入侵者所能造成的破坏。 请记住 我所做的并不是100%正确的。这是我第一次尝试这样做,就算只是部分有效的话, 也应该是很容易完成基本的配置的。我想做一个chroot的HOWTO,现在所说的只是一些基本的东西。 怎样把所有的服务都chroot呢? 好的,让我们先创建一个目录“/chroot”,然后以下面的格式把我们的所有服务都放在它下面: Syslogd 分别和每一个服务一起运行在hroot环境下。 Apache 运行在/chroot/httpd下. Ssh 运行在/chroot/sshd下. PostgreSQL 运行在/chroot/postmaster下. Sendmail 运行在 chroot环境下,但不幸的是,它必须以root权限运行。 ntpd 运行在 /chroot/ntpd下。 named 运行在 /chroot/named 下。 每一个服务都是完全与外界隔离的。 我用来创建chroot环境的Perl脚本。 下载 href=http://fanqiang.chinaunix.net/system/linux/2002-08-16/"http://main.linuxfocus.org/common/src/article225/Config_Chroot.pl.txt">Config_Chroot.pl.txt并更名为 Config_Chroot.pl. 这个Perl脚本让你列出所有已安装的服务,查看配置文件,配置服务,并启动和停止服务。通常,这就是你应该做的。 创建chroot目录 mkdir -p /chroot/Config/Backup 下载 href=http://fanqiang.chinaunix.net/system/linux/2002-08-16/"http://main.linuxfocus.org/common/src/article225/Config_Chroot.pl.txt">Config_Chroot.pl.txt 并更名为 /chroot/Config_Chroot.pl 如果你的家目录(home directory)不是/chroot,请把Perl脚本里的$Home 变量作相应的改变。 下载我的 href=http://fanqiang.chinaunix.net/system/linux/2002-08-16/"http://main.linuxfocus.org/common/src/article225/">配置文件。 现在,重要的是:我只在 RedHat 7.2 和 RedHat 6.2 上测试过。. 请在Perl脚本里作相应的改变以适应你的发行版。 关于chroot,我写了一遍很长的文章,但有了我的脚本,它变得短了很多。在chroot了很多服务之后,我注意到这些服务中需要被chroot的文件和配置都很相似。对一个特定的服务来说,判断哪些文件需要拷贝的最容易的方法是查看man,如果程序要用到库文件,就再键入“ldd /usr/bin/file“。你还可以把你正在安装的服务进行chroot并手动启动, 看看出了什么错或查一查它的日志文件。 通常,要安装一个服务,可以这样做:
|
注册
个人空间
