Linux运维最佳实践
上QQ阅读APP看书,第一时间看更新

最佳实践3:配置chroot加固BIND

chroot是Linux系统对应用程序的一种安全约束机制。在应用程序执行了chroot系统调用后,它的执行被限定到chroot后的目录下。例如在Perl脚本中,使用chroot/chroot/test后,那么该程序看到的目录实际上是系统的/chroot/test目录。这样操作后,在最差的情况下,如果BIND被入侵了,那么黑客所拿到的目录权限会被限制到chroot后的目录,不会对系统的其他文件造成泄露或者被恶意修改。

使BIND支持chroot的操作步骤有以下6步。

1)创建named用户。使用的命令如下:

groupadd -g 25 named
useradd -g 25 -u 25 -d /chroot/named -s /sbin/nologin named

2)创建目录结构、修改权限。使用的命令如下:

mkdir -p /chroot/named/{dev,etc,var}
chown named.named /chroot/named/var

3)创建设备。使用的命令如下:

mknod /chroot/named/dev/null c 1 3
mknod /chroot/named/dev/zero c 1 5
mknod /chroot/named/dev/random c 1 8

4)复制需要的文件。使用的命令如下:

cp /etc/localtime /chroot/named/etc

5)在/chroot/named/etc/named.conf中,直接使用chroot后的目录结构即可,使用的命令如下:

options {
    directory "/etc"; #此处实际上对应系统的/chroot/named/etc
    dump-file "/var/cache_dump.db";#此处实际上对应系统的/chroot/named/ var/cache_dump.db
    statistics-file "/var/named_stats.txt"; #此处实际上对应系统的/chroot/named/var/named_stats.txt
    zone-statistics yes;
    allow-query {any;};
    recursion yes;
};
logging{
      channel query_log {
          file "/var/query.log" versions 5 size 20m; #此处实际上对应系统的/chroot/named/var/query.log
          severity info;
          print-time yes;
          print-category yes;
     };
     category queries{
          query_log;
     };
};

6)启动named进程。使用的命令如下:

named -t /chroot/named -u named -c /etc/named.conf

这样操作完成后,named以普通用户权限运行,运行环境被限定到/chroot/named目录下,这样可以极大地增强BIND的安全性。