我正在玩bind,并开始想知道为什么这个软件,例如,在chroot中运行的CentOS.不要误解我,我知道什么是绑定和什么chroot(监狱)是为了.但我的主要问题是绑定运行没有chroot所以非常不安全?
没有监狱(比任何其他服务或软件更多)设置它真的是有害的.在系统中有很多过程没有chroot运行,我认为妥协它们是非常危险的,但是什么使得命名比其他没有chroot运行的软件更危险?
解决方法
正如@Some Guy提到的那样,你必须从历史的角度思考这个问题.
从历史的角度来看,单个操作系统下的单个硬件是十几个不同的服务.如果一项服务遭到入侵,那么该硬件上的所有内容都会受到损害.
通过虚拟化,这远不是一个问题.虽然从VM中逃脱并非不可能,但这远非微不足道.打破虚拟机肯定更难,然后是以root权限运行的进程突破chroot.所以我的绑定服务器在他们自己的VM上运行.在这种情况下,chroot确实没什么意义,因为损坏已经仅仅因为它是VM而受到限制.
chroot是一种非常弱的尝试,可以创建像VM这样的东西.可以通过具有root权限的任何进程转出Chroots. chroot不是有意的,也不能作为安全机制.带有BSD监狱的chroot或LXC为您提供操作系统级别的虚拟化,并提供安全功能.但是现在由于很容易启动整个机器的新VM,因此可能不值得设置或学习如何使用操作系统级虚拟化工具来实现此目的.
早期版本的bind没有删除权限.在Unix上,只有root帐户可以打开1024以下的端口,并且我们都知道需要绑定udp / 53和tcp / 53.由于Bind以root身份启动,并且不会丢弃权限,因此任何妥协都意味着整个系统可能会受到攻击.现在几乎所有软件都会开始打开套接字并执行任何其他需要root权限的东西,然后他们会将运行的用户更改为非特权帐户.一旦权限被删除,受到攻击的影响就会大大低于主机系统.