| 关键词: nbsp named 文件 用户 local xiaocui DNS 目录 usr 配置 |
DNS是互联网的基础服务,同时bind是最流行的开源DNS软件,因为非常流行,所以受到的攻击性也非常大,因此我们有必要构建一个安全的DNS服务器。 构建一个安全的DNS服务有如下几种措施(基础bind编译安装及配置部分参考:菜鸟也玩DNS之配置DNS缓存服务器): 第一种,让named以普通用户运行 # useradd -s /bin/false bind 创建一个不允许登录系统的用户bind # chown bind /usr/local/named/dns/ 把存放named.pid的目录的所有权赋予bind用户 # /usr/local/named/sbin/rndc stop 停止已经运行的named # /usr/local/named/sbin/named -4 -u bind 已bind用户启动named 查看系统进程: # ps -ef|grep named named已经已bind这个普通用户运行了。 第二种,以chroot牢笼方式运行named 所谓牢笼,就是把程序限定在这个目录中运行,无法访问其它目录,这样也大大提升了安全性。 # useradd -s /bin/false bind 创建一个不允许登录系统的用户bind # mkdir -p /chroot/named 创建牢笼目录named运行的时候需要访问一些设备文件,读取named配置文件及区域资源文件,它们所在的目录有如下几个: /usr/local/named/etc 存放named.conf配置文件 /usr/local/named/dns 存放named.pid文件 /usr/local/named/dns/zone 存放区域文件 /dev 存放named需要的几个设备文件 注意:这些目录除了/dev是默认的,其余的存放相关文件的目录都是你安装bind的时候手工指定的。 下面,我们需要在/chroot/named目录下创建对应的几个目录 #mkdir –p /chroot/named/dev #mkdir –p /chroot/named/usr/local/named/etc #mkdir –p /chroot/named/usr/local/named/dns #mkdir –p /chroot/named/usr/local/named/dns/zone # chown bind /chroot/named/usr/local/named/dns/ 把存放named.pid的目录的所有权赋予bind用户 # mknod /chroot/named/dev/random c 1 8 创建供named调用的设备文件 # cp /usr/local/named/etc/* /chroot/named/usr/local/named/etc/ 复制named.conf等基本配置文件到牢笼对应目录下 # cp /usr/local/named/dns/* /chroot/named/usr/local/named/dns/ 复制named.pid到对应牢笼目录下 # cp /usr/local/named/dns/zone/* /chroot/named/usr/local/named/dns/zone/ 复制区域文件到对应牢笼目录下 # /usr/local/named/sbin/rndc stop 停止之前运行的named进程 # /usr/local/named/sbin/named -4 -u bind -t /chroot/named/ 用普通用户bind以牢笼方式启动 使用命令查看named进程: # ps -ef|grep named 查看系统日志,看看启动是否有问题: # tail /var/log/messages Oct 24 22:41:52 localhost named[6932]: zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700 Oct 24 22:41:52 localhost named[6932]: zone 1.168.192.in-addr.arpa/IN: loaded serial 20031001 Oct 24 22:41:52 localhost named[6932]: zone xiaocui.com/IN: loaded serial 1053891162 Oct 24 22:41:52 localhost named[6932]: zone localhost/IN: loaded serial 42 Oct 24 22:41:52 localhost named[6932]: managed-keys-zone ./IN: loaded serial 0 Oct 24 22:41:52 localhost named[6932]: running 如果你看到类似以上内容,说明启动成功,加载各种区域文件成功。 第三种,通过ACL控制访问用户来源 编辑named.conf配置文件 # vi /usr/local/named/etc/named.conf 在options标签之前建立一个访问控制列表 acl my-network { 192.168.1.0/24; }; 定义完之后,在options标签中允许这个ACL所定义的网络内的用户进行查询 options { directory "/usr/local/named/dns/zone"; pid-file "/usr/local/named/dns/named.pid"; allow-recursion { my-network; }; }; 配置完之后重启named进程或重新加载配置文件,这样以后就只有ACL中指定的网段用户才可以通过这个DNS来进行查询,其余的都将被拒绝。 第四种、通过view控制用户的访问范围 加入我们有一台DNS服务器,我们希望这台DNS服务器只对内网用户开放所有的DNS解析,对外只开放部分DNS查询功能,这个时候我就需要用到view这种功能。view可以针对不同的用户,提供不同的查询范围。 配置如下: 编辑named.conf配置文件 #vi /usr/local/named/etc/named.conf 首先定义一个内网ACL acl my-network { 192.168.1.0/24; }; 然后定义供内部用户使用的view:A view “A”{ match-clients { my-network; }; 指定本地内网 recursion yes; 允许递归查询 zone “xiaocui.com” { type master; file “xiaocui.com.zone.A” }; }; 定义一个供所有用户使用的view:B view “B”{ match-clients { any; }; 所有用户 recursion yes; 允许递归查询 zone “xiaocui.com” { type master; file “xiaocui.com.zone.B” }; }; 配置完named.conf文件,我们还需要在区域文件存放目录创建对应的区域文件。 vi /usr/local/named/dns/zone/xiaocui.com.zone.A 针对内网用户的区域文件 $TTL 86400 @ IN SOA xiaocui.com. root.xiaocui.com. ( 1053891162 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS xiaocui.com. IN A 192.168.1.10 www IN A 192.168.1.100 mail IN A 192.168.1.101 oa IN A 192.168.1.102 给内网用户开放OA ftp IN A 192.168.1.103 给内网用户开放ftp vi /usr/local/named/dns/zone/xiaocui.com.zone.B 针对所有用户的区域文件 $TTL 86400 @ IN SOA xiaocui.com. root.xiaocui.com. ( 1053891162 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS xiaocui.com. IN A 192.168.1.10 www IN A 192.168.1.100 mail IN A 192.168.1.101 配置完成之后,重启named进程或重新加载配置文件。使用内网用户可以访问到oa.xiaocui.com和ftp.xiaocui.com,外网用是不能访问的。 如果你达到了这个效果,说明配置成功。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|