分享
 
 
 

什麽是CHROOT

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

CHROOT就是Change Root,也就是改变程式执行时所参考的根目录位置。

一般的目录架构:

/

/bin

/sbin

/usr/bin

/home

CHROOT的目录架构:

/hell/

/hell/bin

/hell/usr/bin

/hell/home

* 为何要CHROOT?

1.限制被CHROOT的使用者所能执行的程式, 如SetUid的程式,或是会造成 Load 的 Compiler等等。

2.防止使用者存取某些特定档案,如/etc/passwd。

3.防止入侵者/bin/rm -rf /。

4.提供Guest服务以及处罚不乖的使用者。

5.增进系统的安全。

* 要如何建立CHROOT的环境?

1.chroot()这个function:

chroot(PATH)这个function必须具有 root 的身份才能执行,执行後会将跟目录切换到 PATH 所指定的地方。

2.login的过程:

使用者无论是从console或是telnet进入, 都必须执行/usr/bin/login来决定是否能进入系统,而login所做的动作大致是:

(1)印出login的提示符号,等待使用者输入密码。

(2)检查密码是否正确,错误的话回到(1)。

(3)正确的话以setuid()来改变身份为login_user。

(4)以exec()执行user的shell。

因此我们必须先修改/usr/bin/login的source code, 让login在(2)到(3)的中间执行chroot($CHROOT_PATH)

的动作,已达到CHROOT的目的,并以修改过的login 替代原先的/usr/bin/login。

(5)稍微好一点的方法必须在做chroot()之前检查login user的group,如果有某个特定的group(如chrootgrp) 才执行chroot(),不然所有的人都会被chroot了。

3.建立CHROOT所需的环境:

(1)必须具备的目录:(假设$CHROOT为希望建立的路径)

$CHROOT/etc $CHROOT/lib $CHROOT/bin

$CHROOT/sbin $CHROOT/usr/lib $CHROOT/usr/bin

$CHROOT/usr/bin $CHROOT/usr/local $CHROOT/home

(2)仔细审查/etc中的档案,需具备执行程式时所需的档案,如passwd,groups,hosts,resolv.conf等等。

(3)拿掉不想给的执行档,如su,sudo等SetUid的程式, 以及compiler甚至telnet。

(4)测试一下,以root身份执行 chroot $CHROOT /bin/sh 即可进入CHROOT环境中。(man chroot for details)

4.在console或是以telnet进入试试。

5.Username/Password Resolve的考量:

在CHROOT时你可能不希望被CHROOT的使用者(以後简称CHROOTer)能拿到/etc/passwd或是/etc/shadow等档

案,尤其是有root密码的。以下有三种情形:

(1)/etc/passwd跟 $CHROOT/etc/passwd相同:

这是最差的作法,因为一来被CHROOTer有机会得到root 的encrypted password,二来要保持/etc/passwd及

$CHROOT/etc/passwd的同步性是个大问题。因为 /usr/bin/login参考的是/etc/passwd,可是一旦CHROOTer被chroot後执行passwd时,他所执行的 passwd所更改的将是$CHROOT/etc/passwd。

(2)/etc/passwd跟$CHROOT/etc/passwd不同:

你可以把$CHROOT/etc/passwd中的重要人物(如root) 的密码拿掉,然後以比较复杂的方法修改

/usr/bin/login:

if (has_chroot_group) {

re-load $CHROOT/etc/passwd

if (password is valid) {

chroot($CHROOT)

exec(shell)

} else logout()

}

此法的好处是你可以将/etc/passwd跟 $CHROOT/etc/passwd分开来。/etc/passwd只影响 CHROOTer在login时所使用的username,其他如password甚至uid,gid,shell,home等等都是参考$CHROOT/etc/passwd的。

缺点是你其他的daemon如ftpd,httpd都必须做相同的修改才能正确取的CHROOTer的资讯,而且你在把一

个user加入或移出chroot_group时都必须更改/etc/passwd跟$CHROOT/etc/passwd。

(3)使用NIS/YP:

此法大概是最简单,且麻烦最少的了。因为一切的user information都经过NIS Bind来取得,不但可以保护住root的密码,也省去/etc/passwd跟 $CHROOT/etc/passwd同步管理上的问题。不只是 passwd,连其他如groups,hosts,services, aliases等等都可以一并解决。

* 其他必须考虑的问题:

1.执行档的同步性:

再更新系统或是更新软体时,必须考虑到一并更换 $CHROOT目录下的档案,尤其如SunOS或是BSD等会用nlist()来取得Kernel Information的,在更新kernel时必须更新$CHROOT下的kernel。

2./dev的问题:

一般而言你必须用local loopback NFS将/dev read- write mount到$CHROOT/dev以使得一般user跟CHROOTer 可以互相write以及解决devices同步性的问题。

3./proc的问题:

在Linux或是SYSV或是4.4BSD的系统上许多程式会去 参考/proc的资料,你必须也将/proc mount到 $CHROOT/proc。

4./var的问题:

一般而言/var也是用local loopback NFS read-write mount到$CHROOT/var下,以解决spool同步性的问题, 否则你可能必须要修改lpd或是sendmail等daemon, 不然他们是不知道$CHROOT/var下也有spool的存在。

5.Daemon的问题:

你必须修改一些跟使用者相关的Daemon如ftpd,httpd 以使这些daemon能找到正确的user home。

* CHROOT无法解决的安全问题:

1.不小心或是忘记拿掉SetUid的程式:

CHROOTer还是有机会利用SetUid的程式来取得root的 权限,不过因为你已经将他CHROOT了,所以所能影响到 的只有$CHROOT/目录以下的档案,就算他来个"/bin/rm -rf /" 也不怕了。

不过其他root能做的事还是防不了,如利用tcpdump来窃听该localnet中的通讯并取得在该localnet上其他

机器的帐号密码,reboot机器,更改NIS的资料,更改其他没有被CHROOT的帐号的密码藉以取得一般帐号(所

以root不可加入NIS中)等等。

(此时就必须藉由securetty或是login.access或是将 wheel group拿出NIS来防止其login as root)

2.已载入记忆体中的Daemon:

对於那些一开机就执行的程式如sendmail,httpd, gopherd,inetd等等,如果这些daemon有hole(如 sendmail),那hacker只要破解这些daemon还是可以取得root权限。

* 结论:

CHROOT可以增进系统的安全性,限制使用者能做的事,但是CHROOT Is Not Everything,因为还是有其他的

漏洞等著hacker来找出来。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有