FreeBSD & Jail

嗨宝Ec

嗨宝Ec

2016-01-29 18:08

FreeBSD & Jail,FreeBSD & Jail
Jail 命令在FreeBSD 4.0中首次出现。用于“监禁”进程以及其衍生的子进程。而且jail和FreeBSD本身的secure_level合并使用可以显著限制(jail中的)root的能力。
假设某一个应用程序在系统中运行,一段时间之后该应用程序被发现包含有致命的安全漏洞,在通常的系统中,这个应用程序可能已经形成了可利用的漏洞,甚至cracker们已经成功地攻破这一应用并且成为root,控制了系统;但假如该应用程序在jail内运行,即使cracker们已经攻破系统,也无法访问到jail之外系统的其他部分。因为在Jail内,尽管应用程序可以自由活动,却无法获得更多权限,也无法访问Jail外的任何资源。通过实施Jail,在系统管理上面可以做到防范未知漏洞,避免某些不安全应用程序对整个系统的安全构成威胁。 jail通常有两类应用方向: 一、对应用程序的活动能力进行限制。 比如ftp服务器,DNS服务器,这样一些东西,比如wu-ftpd,bind这样一些隔三岔五就会爆出漏洞的“著名”软件放到jail里面会让人更加放心。 二、受控制的主机。 某些时候,需要对外提供有shell的管理性访问,比如作为某公司A,其合作单位B有某项目需要在A的机器上获得shell乃至root权限,这就需要提供受控制的主机,用户可以在jail里面控制几乎所有他需要的资源(除了jail不允许他访问的部分)。 第一类应用并不是非常复杂,实际上这类应用实现方法相对简单,只要在Linux下面玩过chroot就没有什么大问题;第二类应用则有很多有趣的特性,而jail最吸引人的部分也是这些很有趣的特性。 下面从最简单的部分开始: 第一类:限制应用程序活动能力 首先按照通常习惯的方式安装好你想要jail的应用程序,下面我们将会使用pure-ftpd(我不是很熟悉它,只不过顺手拿过来而已,据说还算好用)作为例子。 这个ftpd的安装位置,默认为:/usr/local/sbin;/usr/local/bin;在/etc下面还有一些相关的文件,整个结构感觉不是特别干净,不过它运行需要的东西并不很多,包括 /usr/local/sbin/pure-ftpd , /etc/xxx /etc/xxxx 这样一些文件。 接下来先用ldd看看/usr/local/sbin/pure-ftpd需要的那些运行库: tester# cd /usr/local/sbin tester# ldd pure-ftpd pure-ftpd: libcrypt.so.2 => /usr/lib/libcrypt.so.2 (0x2807b000) libpam.so.1 => /usr/lib/libpam.so.1 (0x28094000) libc.so.4 => /usr/lib/libc.so.4 (0x2809d000) 这样我们的工作任务清单上面就多出来这样一些东西了: /usr/lib/...... 使用ldd我们还可以获得其他一些需要放入jail的程序的运行库位置,信息搜集完成之后,我们开始建立jail目录树(这里我们假定jail环境构造在/jail内,当然你也可以选择你喜欢的位置): tester# mkdir -p /jail/usr/ 然后将上面列出的,libcrypt.so.2 等这些文件都复制到对应位置。当然还有我们FreeBSD下非常重要的一个文件ld-elf.so.1,尽管ldd没有给出提示,也还需要复制过去,否则应用程序也跑不起来。这样我们就获得了一个很干净(最小化)的应用程序运行环境jail命令的格式是: jail path hostname ip-number command 下面开始在jail里面运行它: tester# jail /jail jailed.host.name $JAILED_IP_ADDR /usr/local/sbin/pure-ftpd [options] 这里,/jail是你的jail环境的位置,也就是被jail之后,应用程序“以为”自己所在的“/”的位置;jailed.host.name是你打算提供给这个jail环境的主机名,某些情况下,应用程序需要知道这个变量;$JAILED_IP_ADDR是你打算提供ftp服务(如果是其他应用软件,那就是其他服务咯,比如web服务)的那个IP地址,至于/usr/local/sbin/pure-ftpd [options] 则是你打算运行的那个应用程序在jail里面的所在位置以及运行所需的参数。 然后用ps 查看一下进程状态: tester# ps -axf |grep pureftpd 95 ?? IsJ 0:00.92 pure-ftpd (SERVER) (pure-ftpd) 可以看到所有这些pure-ftpd的进程都有一个J,标志这这一程序正在jail下面运行。 这时候可能会有一些管理用的程序无法正常工作,因为这些管理用程序无法找到他们需要访问的那些文件,只要找到这些应用程序需要调用的文件(比如日志文件)的位置,然后制造一个soft link就可以了,通常这些管理程序都可以继续正常运行。 到此为止,一个针对应用程序的jail构造完成。 第二类,构造受控制的主机 在这种情况下面,我们首先需要构造一个当前版本操作系统的完整镜像(下面这个脚本是从FreeBSD 4.6r的man page里面来的,实际上4.5以及之前的man page在构造jail目录树脚本上面都有一定的问题,4.6才纠正过来): tester# cat >>/root/mkjail.sh jailhome=/data/jail cd /usr/src mkdir -p $jailhome make world DESTDIR=$jailhome cd etc make distribution DESTDIR=$jailhome -DNO_MAKEDEV_RUN cd $jailhome/dev sh MAKEDEV jail cd $jailhome ln -sf dev/null kernel ^D tester# sh /root/mkjail.sh 最后在/data/jail下面获得一个完整的根据当前源码树编译得来的jail目录树。 接下来: /* tester# mkdir $jailhome/stand tester# cp /stand/sysinstall $jailhome/stand tester# jail $jailhome jailed.system
展开更多 50%)
分享

猜你喜欢

FreeBSD & Jail

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
FreeBSD & Jail

FreeBsd

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
FreeBsd

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

FreeBSD 5.3 to FreeBSD 5.4 binary upgrade

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
FreeBSD 5.3 to FreeBSD 5.4 binary upgrade

初识FreeBSD

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
初识FreeBSD

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

FreeBSD4.8 IPFW How to

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
FreeBSD4.8 IPFW How to

教你配置freebsd ftp nfs方法

电脑入门
教你配置freebsd ftp nfs方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel多条件求和的三种方法

Excel多条件求和的三种方法

Reinstall the boot manager.

Reinstall the boot manager.
下拉加载更多内容 ↓