服务器 频道

Solaris 10下DNS服务器安全攻略

二、让DNS 服务器在“牢监”中运行

    所谓“监牢”就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使出现被破坏或被侵入,所受的损伤也较小。将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chroot jail(chroot“监牢”)。如果要在“监牢”中运行dns,而事实上根本看不到文件系统中那个真正的目录。因此需要事先创建目录,并将dns文件复制到其中。图-1中的例子,说明了 牢监 中的环境状态


    图 1 “监牢”环境示意图

    以下是具体步骤:
    为 DNS Server 建立监牢目录
    建立 /chroot/dns 目录
    # mkdir /chroot/dns
    建立一个空壳目录架构
    # cd /chroot/dns
    # mkdir -p etc/named var/run
    复制 /etc/named.conf 到监牢中
    # cp /etc/named.conf /chroot/dns/etc/named.conf
    复制 /etc/named 目录中的文件到 Jail 监牢中
    # cp /etc/named/* /chroot/dns/etc/named/
    更改 /chroot/dns/var/run 目录的权限
    # chmod 770 /chroot/dns/var/run
    # chown noaccess:root /chroot/dns/var/run
    为 Solaris 10 建立一个新服务
    原本的 DNS Server Service 名称为 dns/server。
    建立新服务 后,以后要启动旧版本的 DNS服务时,不能只启动 dns/server,而要改为 dns/server:default。
    新 DNS Server Chroot 服务 名称为, dns/server:chroot
    开始建立新 服务
    # cd /var/svc/manifest/network/dns
    # cp server.xml server-chroot.xml
    编辑 server-chroot.xml
    寻找
    <instance name='default' enabled='false' >
    改为
    <instance name='chroot' enabled='false' >
    寻找
    exec='/usr/sbin/named'
    改为
    exec='/usr/sbin/named -t /chroot/dns'
    寻找
    privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr,file_dac_read,file_dac_search,sys_resource' />
    改为
privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr,priv_proc_chroot,priv_file_dac_read,file_dac_search,sys_resource' />
    寻找
    user='root'
    改为
    user='noaccess'
    保存文件退出。
    停止原来的 DNS服务
    # svcadm disable dns/server:default
    加入新的 DNS Server Chroot service
    # svccfg import server-chroot.xml
    启动 chroot DNS service
    # svcadm enable dns/server:chroot
    # svcs dns/server
    STATE STIME FMRI
    disabled 6:21:03 svc:/network/dns/server:default
    online 6:27:01 svc:/network/dns/server:chroot
    Bind 9 DNS Server 现在已经能够在“监牢” 环境中运行
0
相关文章