在FreeBSD监狱指挥指令

点评:监狱的命令出现在FreeBSD 4第一次,囚禁过程及其衍生的过程。和监狱和FreeBSD自己的secure_level组合能显著抑制根的能力(监狱)。



假设应用程序在系统内运行,并在一段时间后发现应用程序包含致命的安全漏洞。




监狱的命令出现在FreeBSD 4第一次,囚禁过程及其衍生的过程。和监狱和FreeBSD自己的secure_level组合能显著抑制根的能力(监狱)。



如果一个应用程序在系统中运行的,一段时间的应用程序被发现含有安全漏洞通常是致命的,如果在系统中,应用程序可能构成的漏洞在上面,即使黑客已成功地打破了应用成为根,控制系统,但如果应用;在监狱里跑,尽管饼干已经被入侵的系统,没有进入监狱系统的其他部分,因为应用程序可以在监狱里是免费的,更多的权限和访问监狱内外任何资源不可用。通过这一功能,系统管理可以防范未知漏洞和避免这些潜在的漏洞,整个系统的安全性。



监狱通常有两种申请方向:



1。限制应用程序的活动能力。



例如,FTP服务器,DNS服务器,所以有些东西,如吴ftpd,绑定一些隔三岔五就会爆出漏洞著名的软件进了监狱;这将更让人放心。



两。受控主机。



有些时候,应该给管理层提供shell访问权限,比如A公司,合作B单元一个项目需要在一台机器上获得shell和root权限,它需要提供一个受控主机,用户可以控制几乎所有他需要的资源在监狱里(除了监狱允许他访问的部分)。



第一个应用程序是不是很复杂,其实这种方法比较简单,只要在linux下chroot没有什么大问题;二应用有许多有趣的性质,而监狱是这些有趣的性质,最吸引人的一部分。



以下是最简单的部分:



第一类:限制应用程序活动的能力



首先,按照通常的方式安装你想申请的监狱。接下来我们将使用Pure-FTPd(我不熟悉它,但我只是把它的手,它是有用的)为例。



安装位置,ftpd默认: / usr /局部/ sbin; / usr /局部/桶;下/等一些相关的文档,感觉整个结构不是很干净,但它不需要很多东西,包括 / usr /局部/ sbin / Pure-FTPd, /等/ XXX /等/ XXXX文件。



接下来,用ldd看看运行时库 / usr /局部/ sbin / Pure-FTPd需求:







测试仪# CD / usr /局部/ sbin



测试仪# LDD Pure-FTPd



Pure-FTPd:



libcrypt,。2 = / usr / lib / libcrypt。所以2(0x2807b000)。



使用。所以,1 = / / / lib目录使用。所以1(0x28094000)。



Libc。所以,4 = / / / libc库的使用,4(0x2809d000)。







所以有这样的事情在我们的工作任务清单: / / / lib目录…



使用数据,我们可以得到一些其他运行库需要投入监狱。完成信息收集后,我们开始构建监狱目录树。在这里,我们假设监狱环境是建立在监狱里的,你也可以选择你喜欢的位置。







测试仪# mkdir P / / / {监狱使用LIB,libexec,本地/ sbin,本地/本,地方/等等,无功/运行,无功/日志}







那上面列出的文件,例如libcrypt。所以。2,复制到相应的位置。当然,也有一个非常重要的文件,LD的精灵。所以1 FreeBSD下。虽然LDD没有给予提示,它还需要复制过去,否则程序将无法运行。这样,我们得到一个非常干净的(最小)在应用运行环境指挥监狱:







主机IP号命令监狱的路径







下面开始在监狱里运行它:







测试仪#监狱/监狱jailed.host.name jailed_ip_addr美元 / usr /局部/ sbin / Pure-FTPd {选项}







在这里,你的监狱/监狱的位置,后被监禁,应用自己的思想;;和定位;jailed.host.name你打算给监狱环境的主机名称,在某些情况下,应用程序需要知道你打算提供jailed_ip_addr美元是可变的;FTP服务(如果是其他应用软件,另一个是服务策略、网络服务等)的IP地址, / usr /局部/ sbin / Pure-FTPd {选项}是一个必需的参数,你想要运行的应用在监狱以及操作的位置。



然后用ps查看进程的状态:







测试仪# PS AXF | grep pureftpd



95学会0.92 0: pure-ftpd(服务器)(Pure-FTPd)







你可以看到,所有这些Pure-FTPd过程有一个J,这标志着这个程序是运行在监狱。



这时可能会有一些管理程序不工作,因为管理程序找不到他们需要访问的那些文件,只要你发现这些应用程序需要调用文件(如日志文件)的位置,那么就在它上做一个软链接,通常管理程序可以继续正常运行。



到目前为止,申请的监狱建设已经完成。



第二类,受控主机的构建



在这种情况下,我们需要构建一个完整的操作系统的当前版本(第一个图像下面的脚本是从FreeBSD 4.6r个人页面里面,事实上4.5人在页面构建监狱脚本4.6修正一些问题树):







测试仪#猫> > / / mkjail.sh根



jailhome = /数据/监狱



CD / usr / SRC



mkdir -p jailhome美元



让世界jailhome destdir = $



光盘等



使分布jailhome - dno_makedev_run destdir = $



CD jailhome美元/ dev



上海MAKEDEV监狱



CD jailhome美元



的内核



^ D



测试仪# SH /根/ mkjail.sh







最后,在{数据/监狱}下,根据当前源树获得完整的监狱目录树。



一、uff1a







*



测试仪# mkdir jailhome美元/台



测试仪# CP sysinstall的jailhome美元/站/ /站



测试仪#监狱jailhome美元jailed.system.box 192.168.0.123 /斌/ CSH



(然后是监狱里的一个空壳)



被监禁的# sysinstall的 / /站



* /







sysinstall的程序的可用来建立监狱系统常见的变量,如时区,DNS,邮件,监狱系统是程序需要执行时开始。



如果你熟悉这个系统,你可以亲自考虑一下。



复制 / /时间等jailhome美元/等,在监狱环境中的应用,可以得到正确的时间;



复制 / / resolv.conf等为jailhome / / resolv.conf等这样的域名可以正确地解释了在监狱。



运行newaliases监狱避免sendmail的没完没了的抱怨;



如果你想运行inetd,需要修改inetd的启动参数,再加上一个listen_addr美元期权(因为监狱不能获得当前系统的IP地址,所以你必须为它提供一个IP地址),它看起来像这样在rc.conf。







inetd_flags = WW - 192.168.0.123







syslogd操作系统本身与SS的选项,以避免syslog开始****端口;修改 / / rc.conf等加syslogd_flags =SS(也仿照jailhome美元/等/ RC conf)



创建一个空的 / / fstab等在监狱和消除在rc.conf网卡地址绑定使监狱系统不会抱怨,当它开始。



为了实际运行监狱系统,我们还需要提供一个IP地址,该地址可以连接到监狱,它可以是与实际环境相同的子网,也可以是另一个子网。







测试仪# ifconfig fxp0 192.168.0.123掩码0xffffffff别名







(这里是一个网络卡fxp0,别名绑定准备提供服务。)



当所有这些事情都完成了,有几种方法可以启动监狱系统,一个在监狱外面运行的系统。







测试仪#监狱jailhome美元美元jailed.system.box jail_ip_addr /斌/ SH $ jailhome / /钢筋混凝土等







一个是简单的开始几个远程访问服务如监狱SSH / telnetd:







测试仪#监狱jailhome美元美元jailed.system.box jail_ip_addr /斌/ SH jailhome美元/桶/ inetd -第一次世界大战jail_ip_addr美元







然后从外部登录、运行、配置监狱系统环境,或者手动启动所需的应用程序服务。



如果你想运行一个生产环境的监狱系统,建议使用第一种方法,并在 /等/ rc.local脚本启动监狱指挥(实际环境)里面去,使监狱系统可以有一个比较完整的、类似于实际的机器环境。



如果这样的监狱体系的构建和操作不当,加上定期和严格的真实环境中的备份、安全检查和审计可以得到很好的保障体系。一般scriptkids已经无法构成真正威胁到您的系统,甚至一些黑帽非常接近开放的人在实际的漏洞攻击脚本,并进入你的系统,他只能在监狱里,你知道他什么时候可以进入和离开系统,要做什么,所以你可以很容易地恢复对未来的未知攻击和防护系统。



在监狱管理中,有几个问题需要注意:







1。监狱的帐户、密码与实际系统的不同,但除了在一个目录树牢PS或查看文件的内部监狱,监狱UID可以视为外部的UID,所以最好是放在监狱/等/ adduser.conf修改UID开始数它们扩大,例如:uid_start = 5000 所以,当你在监狱的文件,程序主文件或误解的外部过程管理。



2以内的任何活动。监狱是有限制的,例如,像顶/ vmstat不能用,和mknod,DD,等等,这需要获得直接的硬件不能工作。所以很难在监狱监控系统的运行状态。



三.当你想关闭时,远程监狱系统的方式有两种,一是进监狱杀死长期- 1或杀杀1,所有监狱在发送SIGTERM或SIGKILL信号过程中,监狱可以运行里面/等/ rc.shutdown关闭监狱。关闭监狱,如果它的地方是很容易的。只要用j标记把所有过程都干出来。



4。一个系统可以运行多个监狱,每个监狱不能互相干扰,如果在监狱外使用。







测试仪#监狱jailhome美元jailed.system.box jail_ip_addr美元/路径 / /应用







这样运行一个应用程序,下一次尝试通过







测试仪#监狱jailhome美元美元jailed.system.box jail_ip_addr /斌/ CSH







此应用程序将无法管理的应用程序,由监狱比壳。因为他们是两个独立的监狱,他们不会互相干扰。为了评价监狱系统过程柔性管理,建议在监狱除了应用软件,然后启动sshd telnetd或像服务,这些服务和在同一监狱的应用程序运行,你可以通过这些应用程序在同一监狱壳远程登录系统。



5以内所有应用软件的版本号。监狱系统应与外部实际系统相一致,当外部系统源代码同步到某一版本并重建世界时,建议重新生成监狱以避免可能出现的莫名其妙的错误。



6。另一种方法,不知道是否正确,当在每个使用PS的监狱,系统会报告没有 / / /无功运行dev.db文件,让人觉得很不舒服,模仿实际系统/无功/运行/ dev.db至jailhome /无功/运行/,从来没有遇到这个问题。