上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的安全性。