免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1063 | 回复: 0
打印 上一主题 下一主题

Linux下配置完整安全的DHCP服务器详解(下) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-15 15:48 |只看该作者 |倒序浏览


  2. 让DHCP服务器在监牢中运行

  所谓"监牢"就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使出现被破坏或被侵入,所受的损失也较小。

  将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chroot jail(chroot"监牢")。如果要在"监牢"中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。因此需要事先创建目录,并将dhcpd复制到其中。同时dhcpd需要几个库文件,可以使用ldd(library Dependency Display缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。

ldd dhcpd

        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)

        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  这意味着还需要在"监牢"中创建lib目录,并将库文件复制到其中。手工完成这一工作是非常麻烦的,此时可以用jail软件包来帮助简化chroot"监牢"建立的过程。

  (1)Jail软件的编译和安装

  Jail官方网站是:{http://www.jmcresearch.com/} ,最新版本:1.9a。

#Wget {http://www.jmcresearch.com/static/dwn/projects/jail/jail_1.9a.tar.gz}
#tar xzvf jail.tar.gz; cd jail/src
#make; make install   


  (2)用jail创建监牢

  jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和addjailsw。

  mkjailenv:创建chroot"监牢"目录,并且从真实文件系统中拷贝基本的软件环境。addjailsw:从真实文件系统中拷贝二进制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该"监牢"中。addjailuser:创建新的chroot"监牢"用户。

  首先停止目前dhcpd服务,然后建立chroot目录:

#/sbin/service dhcpd start
#mkjailenv  /chroot/
mkjailenv

A component of Jail (version 1.9 for linux)

http://www.gsyc.inf.uc3m.es/~assman/jail/

Juan M. Casillas

Making chrooted environment into /chroot

        Doing preinstall()

        Doing special_devices()

        Doing gen_template_password()

        Doing postinstall()

Done.   


  下面的例子展示为"监牢"添加dhcpd程序的过程:

# addjailsw  /chroot/ -P /usr/sbin/dhcpd
addjailsw

A component of Jail (version 1.9 for linux)

http://www.gsyc.inf.uc3m.es/~assman/jail/

Juan M. Casillas

Guessing dhcpd args(0)

Warning: file /chroot//lib/tls/libc.so.6 exists. Overwritting it

Warning: file /chroot//lib/ld-linux.so.2 exists. Overwritting it

………
Done.   


  不用在意那些警告信息,因为jail会调用ldd检查dhcpd用到的库文件。而几乎所有基于共享库的二进制可执行文件都需要上述的几个库文件。接下来将dhcpd的相关文件拷贝到"监牢"中:

#  mkdir -p /chroot/dhcp/etc
# cp /etc/dhcpd.conf /chroot/dhcp/etc/
# mkdir -p /chroot/dhcp/var/state/dhcp
# touch /chroot/dhcp/var/state/dhcp/dhcp.leases   


  重新启动dhcpd:

[root@www root]# /chroot/usr/sbin/dhcpd   


  使用ps命令检查dhcpd进程:

#ps -ef | grep dhcpd
root      2402     1  0 14:25 ?        00:00:00 /chroot/usr/sbin/dhcpd
root      2764  2725  0 14:29 pts/2    00:00:00 grep dhcpd   


  注意此时进程名称已经改变,使用检查dhcpd运行的端口:

# netstat -nutap | grep dhcpd
udp   0  0 0.0.0.0:67         0.0.0.0:*                     2402/dhcpd   


  端口号没有改变。现在dhcpd已经成功运行在"监牢"中。到此为止一个这样,一个完整和安全的 DHCP服务器就完成了。

讨论:1、如果一个网络中同时有两台配置了不同网段的DHCP服务器,会有怎么样的后果?
   2、在一个比较大的网络中,如何限制只有一台DHCP服务器运行?


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/9457/showart_47757.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP