标签 DNS 下的文章

接着前一篇教程写的关于使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构,在这篇文章中我们将学习如何使用微软 DNS 管理器远程管理我们的 Samba AD 域控制器的 DNS 服务器,如何创建 DNS 记录,如何创建反向查找区域以及如何通过组策略管理工具来创建域策略。

要求

1、 在 Ubuntu 16.04 系统上使用 Samba4 软件来创建活动目录架构(一)

2、 在 Linux 命令行下管理 Samba4 AD 架构(二)

3、 使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构 (三)

第 1 步:管理 Samba DNS 服务器

Samba4 AD DC 使用内部的 DNS 解析器模块,该模块在初始化域提供的过程中创建(如果 BIND9 DLZ 模块未指定使用的情况下)。

Samba4 内部的 DNS 模块支持 AD 域控制器所必须的基本功能。有两种方式来管理域 DNS 服务器,直接在命令行下通过 samba-tool 接口来管理,或者使用已加入域的微软工作站中的 RSAT DNS 管理器远程进行管理。

在这篇文章中,我们使用第二种方式来进行管理,因为这种方式很直观,也不容易出错。

1、要使用 RSAT 工具来管理域控制器上的 DNS 服务器,在 Windows 机器上,打开控制面板 -> 系统和安全 -> 管理工具,然后运行 DNS 管理器工具。

当打开这个工具时,它会询问你将要连接到哪台正在运行的 DNS 服务器。选择“使用下面的计算机”,输入域名(IP 地址或 FQDN 地址都可以使用),勾选“现在连接到指定计算机”,然后单击 OK 按钮以开启 Samba DNS 服务。

Connect Samba4 DNS on Windows

在 Windows 系统上连接 Samba4 DNS 服务器

2、为了添加一条 DNS 记录(比如我们添加一条指向 LAN 网关的 A 记录),打开 DNS 管理器,找到域正向查找区,在右侧单击右键选择新的主机(A 或 AAAA)。

Add DNS A Record on Windows

在 Windows 下添加一条 DNS 记录

3、在打开的新主机窗口界面,输入 DNS 服务器的主机名和 IP 地址。 DNS 管理器工具会自动填写完成 FQDN 地址。填写完成后,点击“添加主机”按钮,之后会弹出一个新的窗口提示你 DNS A 记录已经创建完成。

确保仅为你的网络中已配置静态 IP的资源(设备)添加 DNS A 记录。不要为那些从 DHCP 服务器自动获取 IP 地址或者经常变换 IP 地址的主机添加 DNS A 记录。

Configure Samba Host on Windows

在 Windows 系统下配置 Samba 主机

要更新一条 DNS 记录只需要双击那条记录,然后输入更改即可。要删除一条记录时,只需要在这条记录上单击右键,选择从菜单删除即可。

同样的方式,你也可以为你的域添加其它类型的 DNS 记录,比如说 CNAME 记录(也称为 DNS 别名记录),MX 记录(在邮件服务器上非常有用)或者其它类型的记录(SPE、TXT、SRV 等类型)。

第 2 步:创建反向查找区域

默认情况下,Samba4 AD DC 不会自动为你的域添加一个反向查找区域和 PTR 记录,因为这些类型的记录对于域控制器的正常工作来说是无关紧要的。

相反,DNS 反向区和 PTR 记录在一些重要的网络服务中显得非常有用,比如邮件服务,因为这些类型的记录可以用于验证客户端请求服务的身份。

实际上, PTR 记录的功能与标准的 DNS 记录功能相反。客户端知道资源的 IP 地址,然后去查询 DNS 服务器来识别出已注册的 DNS 名字。

4、要创建 Samba AD DC 的反向查找区域,打开 DNS 管理器,在左侧反向查找区域目录上单击右键,然后选择菜单中的新区域。

Create Reverse Lookup DNS Zone

创建 DNS 反向查找区域

5、下一步,单击下一步按钮,然后从区域类型向导中选择主区域(Primary)。

Select DNS Zone Type

选择 DNS 区域类型

6、下一步,在 “AD 区域复制范围”中选择复制到该域里运行在域控制器上的所有的 DNS 服务器,选择 “IPv4 反向查找区域”然后单击下一步继续。

Select DNS for Samba Domain Controller

为 Samba 域控制器选择 DNS 服务器

Add Reverse Lookup Zone Name

添加反向查找区域名

7、下一步,在网络ID 框中输入你的 LAN IP 地址,然后单击下一步继续。

在这个区域内添加的所有资源(设备)的 PTR 记录仅能指向 192.168.1.0/24 网络段。如果你想要为一个不在该网段中的服务器创建一个 PTR 记录(比如邮件服务器位于 10.0.0.0/24 这个网段的时候),那么你还得为那个网段创建一个新的反向查找区域。

Add IP Address of Reverse Lookup DNS Zone

添加 DNS 反向查找区域的 IP 地址

8、在下一个截图中选择“仅允许安全的动态更新”,单击下一步继续,最后单击完成按钮以完成反向查找区域的创建。

Enable Secure Dynamic Updates

启用安全动态更新

New DNS Zone Summary

新 DNS 区域概览

9、此时,你已经为你的域环境创建完成了一个有效的 DNS 反向查找区域。为了在这个区域中添加一个 PTR 记录,在右侧右键单击,选择为网络资源创建一个 PTR 记录。

这个时候,我们已经为网关创建了一个指向。为了测试这条记录对于客户端是否添加正确和工作正常,打开命令行提示符执行 nslookup 查询资源名,再执行另外一条命令查询 IP 地址。

两个查询都应该为你的 DNS 资源返回正确的结果。

nslookup gate.tecmint.lan
nslookup 192.168.1.1
ping gate

Add DNS PTR Record and Query PTR

添加及查询 PTR 记录

第 3 步:管理域控制策略

10、域控制器最重要的作用就是集中控制系统资源及安全。使用域控制器的域组策略功能很容易实现这些类型的任务。

遗憾的是,在 Samba 域控制器上唯一用来编辑或管理组策略的方法是通过微软的 RSAT GPM 工具。

在下面的实例中,我们将看到通过组策略来实现在 Samba 域环境中为域用户创建一种交互式的登录提示是多么的简单。

要访问组策略控制台,打开控制面板 -> 系统和安全 -> 管理工具,然后打开组策略管理控制台。

展开你的域下面的目录,在默认组策略上右键,选择菜单中的编辑,将出现一个新的窗口。

Manage Samba Domain Group Policy

管理 Samba 域组策略

11、在组策略管理编辑器窗口中,进入到计算机配置 -> 组策略 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项,你将在右侧看到一个新的选项列表。

在右侧查询并编辑你的定制化设置,参考下图中的两条设置内容。

Configure Samba Domain Group Policy

配置 Samba 域组策略

12、这两个条目编辑完成后,关闭所有窗口,打开 CMD 窗口,执行以下命令来强制应用组策略。

gpupdate /force

Update Samba Domain Group Policy

更新 Samba 域组策略

13、最后,重启你的电脑,当你准备登录进入系统的时候,你就会看到登录提示生效了。

Samba4 AD Domain Controller Logon Banner

Samba4 AD 域控制器登录提示

就写到这里吧!组策略是一个操作起来很繁琐和很谨慎的主题,在管理系统的过程中你得非常的小心。还有,注意你设置的组策略不会以任何方式应用到已加入域的 Linux 系统中。


作者简介:我是一个电脑迷,开源软件及 Linux 系统爱好者,有近4年的 Linux 桌面和服务器系统及 bash 编程经验。


via: http://www.tecmint.com/manage-samba4-dns-group-policy-from-windows/

作者:Matei Cezar 译者:rusking 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

域名解析系统(DNS)是互联网安全的许多薄弱环节之一;可以将应用程序所访问的主机对应的 IP 地址误导到其它地方。也就是说,会连接到错误的位置,从而引发 中间人 man-in-the-middle 攻击等等。而 DNSSEC 扩展协议则通过为 DNS 信息建立一条加密的可信通道来解决这个漏洞。在正确地配置好 DNSSEC 后,应用程序将可以得到可靠的主机查询信息。通过关于尝试将 DNSSEC 更好地集成到 GNU C 库里的讨论,我们知道,确保 DNS 查询信息安全这件事并不是那么简单。

从某种意义上来说,这个问题多年以前就解决了,我们可以配置一个本地域名服务实现完整的 DNSSEC 校验 verification 并允许应用程序通过 glibc 函数来使用该服务。DNSSEC 甚至还可以用于提高其他领域的安全性,比如,它可以携带 SSH 或 TLS 密钥指纹,让应用程序可以确认其在与正确的服务器对话。不过,当我们希望确认这条自称带有 DNSSEC 校验的 DNS 结果是不是真的已通过认证的时候 - 也就是说,当我们想依赖 DNSSEC 所承诺的安全的时候,事情变得有点复杂。

/etc/resolv.conf 问题

从 glibc 的角度来看,这个问题一部分是因为 glibc 本身并没有做 DNSSEC 校验,而是引用 /etc/resolv.conf 文件,从该文件里读出的服务器来做解析以及校验,再将结果返回给应用程序。如果应用程序使用底层 res\_query() 接口,那结果中将会包含“ 已认证数据 authenticated data ”(AD)标识(如果域名服务器设定了的话)以表示 DNSSEC 校验已经成功。但是 glibc 却完全不知道提供这些结果的域名服务器的信用,所以它其实并不能告诉应用程序结果是否真的可靠。

由 glibc 的维护者 Carlos O'Donell 提出的建议是在 resolv.conf 文件里增加一个选项(dns-strip-dnssec-ad-bit)告诉 glibc 无条件移除 AD 标识。这个选项可以由各发行版设定,表示 DNSSEC 级别的 DNS 查询结果并不可靠。而一旦建立好合适的环境可以获得可靠的查询结果后,再移除这个选项。这样一来,虽然问题还没有完全解决,至少应用程序有依据来评价从 glibc 获取的 DNS 查询结果的可靠性。

一个可靠的环境配置应该是什么样?标准情况应该和这个差不太多:有一个本地域名服务器,通过 环路 loopback 接口访问,作为访问 /etc/resolv.conf 文件的唯一条目。这个域名服务器应该配置来做校验,而在校验失败后就只是简单地不返回任何结果。绝大多数情况下,应用程序就不再需要关心 AD 标识,如果结果不可靠,应用程序就根本看不到。一些发行版已经倾向于这种模型,不过情况仍然不像一些人所设想的那么简单。

其中一个问题是,这种方式将 /etc/resolv.conf 文件放到整个系统可信任度的中心。但是,在一个典型的 Linux 系统里,有无数的 DHCP 客户端、网络脚本以及其他更多的程序可以修改这个文件。就像 Paul Wouters 所指出的,在短时间内锁定这个文件是不可能的。有时候这种修改是必须的:在一个无盘系统启动的时候,在自身的域名服务器启动之前也是需要域名服务的;一个系统的整个 DNS 环境也会根据所连接的网络不同而有所改变;运行在容器里的系统也最好是配置成使用宿主机的域名服务器;等等。

所以,现在一般认为,现有系统里的 /etc/resolv.conf 文件并不可信。于是有人提出增加另一个配置文件(/etc/secure-resolv.conf 或其他什么),但这并没有从根本上解决问题。除此之外,有些参与者觉得就算有一个运行在环路接口上的域名服务器也不是真正可靠,比如 Zack Weinberg 甚至建议系统管理员可以有意禁用 DNSSEC 确认 validation

既然当前系统里的配置不足以信任,那可以这样推断,在情况有改善能够取得可信的结果后,glibc 需要有一种方式来通知应用程序。可以是上面讨论的屏蔽 AD 标识的方式(或者与之相反,增加一个显示的“此域名服务器可以信任”选项);当然,这都需要一定程度上锁定系统以免 /etc/resolv.conf 受到任何不可预计的修改。按 Petr Spacek 的建议,还有一种引申方式,就是提供一种途径允许应用程序查询 glibc 当前通讯的是不是本地域名服务器。

在 glibc 里来处理?

另一种方式是不管域名服务器,而是让 glibc 本身来做 DNSSEC 确认。不过,把这么大一坨加密相关代码放进 glibc 也是有很大阻力。这样将增加库本身的大小,从而感觉会增加使用它的应用程序的受攻击可能性。这个方向再引申一下,由 Zack 提出的建议,可以把确认相关代码放到域名服务缓冲守护进程(nscd)里。因为 nscd 也是 glibc 的一部分,由 glibc 开发人员维护,因此在一定程度上可以相信能正确执行 DNSSEC 确认。而且 nscd 的通讯 socket 所在位置也是公开的,所以可以不考虑 /etc/resolv.conf 问题。不过,Carlos 担心这种方式不能让那些不想使用 nscd 缓存功能的用户所接受;在他看来,基本可以排除 nscd 的方式。

所以,至少近期内,glibc 不太可能全部执行 DNSSEC 确认了的整个查询过程。这意味着,如果一个有安全考虑的应用要使用 glibc 库来查询域名,该库将需要提供一个标识来评价从独立域名服务器返回的结果有多大程度的可靠性。这几乎肯定需要发行版或系统管理员做出一些明确的改动。就像 Simo Sorce 说的那样:

如果 glibc 不使用明确的配置选项来通知应用程序它所用的域名解析是可信的,不会有什么用……不改一下还有很大弊端,因为应用程序开发者将马上认识到他们不能信任从 glibc 获取的任何信息,从而在处理 DNSSEC 相关信息时就简单地不用它。

要配置一个系统能正常使用 DNSSEC 需要改动该系统的很多组件 - 这是一个发行版范围的问题,需要时间来完全解决。在这个转变过程中 glibc 所扮演的角色很可能会比较小,但是很重要的一部分:如果应用程序不实现一套自己的域名解析代码,glibc 很可能是保证 DNS 结果可信的唯一方式。在一个系统中运行多个 DNSSEC 实现方式看起来不像是一种安全的方式,所以最好还是把事情做对了。

glibc 项目目前并没有确定用哪种方式来做这个事情,虽然从 /etc/resolv.conf 文件里的某些标记看上去快好了。这种改动应该需要发布新版本;考虑到 glibc 开发的保守天性,很可能来不及加入预计二月份发布的 2.23 版本了。所以 glibc 中暂时还不会有更高安全性的 DNSSEC ,不过在这个方向上也有一些进展了。


via: https://lwn.net/Articles/664776/

作者:Jonathan Corbet 译者:zpl1025 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

DNSCrypt 是一个用于对 DNS 客户端和 DNS 解析器之间通信进行加密和验证的协议。它可以阻止 DNS 欺骗或中间人攻击。 DNSCrypt 可用于大多数的操作系统,包括 Linux,Windows,MacOSX ,Android 和 iOS。而在本教程中我使用的是内核为4.1的 archlinux。

Unbound 是用来解析收到的任意 DNS 查询的 DNS 缓存服务器。如果用户请求一个新的查询,unbound 会将其存储到缓存中,并且当用户再次请求相同的请求时,unbound 将采用已经保存的缓存。这将比第一次请求查询更快。

现在我将尝试安装“DNSCrypt”,以确保 DNS 的通信的安全,并用“Unbound”加速。

第一步 - 安装 yaourt

Yaourt 是AUR(ARCH 用户仓库)的辅助工具之一,它可以使用户能够很容易地从 AUR 安装程序。 Yaourt 和 pacman 使用相同的语法,你可以使用 yaourt 安装该程序。下面是安装 yaourt 的简单方法:

1、 用 nano 或者 vi 编辑 arch 仓库配置文件,存放在“/etc/pacman.conf”中。

$ nano /etc/pacman.conf

2、 在 yaourt 仓库底部添加,粘贴下面的脚本:

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

3、 用“Ctrl + x”,接着用“Y”保存。

4、 接着升级仓库数据库并用pacman安装yaourt:

$ sudo pacman -Sy yaourt

第二步 - 安装 DNSCrypt 和 Unbound

DNSCrypt 和 unbound 就在 archlinux 仓库中,你可以用下面的 pacman 命令安装:

$ sudo pacman -S dnscrypt-proxy unbound

接着在安装的过程中按下“Y”。

第三步 - 安装 dnscrypt-autoinstall

Dnscrypt-autoinstall 是一个在基于 Linux 的系统上自动安装和配置 DNSCrypt 的脚本。DNSCrypt 在 AUR 中,因此你必须使用“yaourt”命令来安装它。

$ yaourt -S dnscrypt-autoinstall

注意 :

-S = 这和 pacman -S 安装程序一样。

第四步 - 运行 dnscrypt-autoinstall

用 root 权限运行“dnscrypt-autoinstall”来自动配置 DNSCrypt。

$ sudo dnscrypt-autoinstall

下一步中按下“回车”,接着输入"Y"来选择你想使用的 DNS 提供者,我这里使用不带日志和 DNSSEC 的 DNSCrypt.eu。

DNSCrypt autoinstall

第五步 - 配置 DNSCrypt 和 Unbound

1、 打开 dnscrypt 的“/etc/conf.d/dnscrypt-config” ,确认配置文件中“DNSCRYPTLOCALIP”指向本地ip,“DNSCRYPTLOCALPORT”根据你本人的意愿配置,我是用的是40端口。

$ nano /etc/conf.d/dnscrypt-config

DNSCRYPT_LOCALIP=127.0.0.1
DNSCRYPT_LOCALIP2=127.0.0.2
DNSCRYPT_LOCALPORT=40

DNSCrypt Configuration

保存并退出。

2、 现在你用 nano 编辑器编辑“/etc/unbound/”下 unbound 的配置文件:

$ nano /etc/unbound/unbound.conf

3、 在脚本最后添加下面的行:

do-not-query-localhost: no
forward-zone:
name: "."
forward-addr: 127.0.0.1@40

确保forward-addr和DNSCrypt中的“DNSCRYPT\_LOCALPORT”一致。如你所见,用的是40端口。

Unbound Configuration

接着保存并退出。

第六步 - 运行 DNSCrypt 和 Unbound,接着添加到开机启动中

请用 root 权限运行 DNSCrypt 和 unbound,你可以用 systemctl 命令来运行:

$ sudo systemctl start dnscrypt-proxy unbound

将服务添加到启动中。你可以运行“systemctl enable”:

$ sudo systemctl enable dnscrypt-proxy unbound

命令将会创建软链接到“/usr/lib/systemd/system/”目录的服务。

第七步 - 配置 resolv.conf 并重启所有服务

resolv.conf 是一个在 linux 中用于配置 DNS 解析器的文件。它是一个由管理员创建的纯文本,因此你必须用 root 权限编辑并让它不能被其他人修改。

用 nano 编辑器编辑:

$ nano /etc/resolv.conf

并添加本地IP “127.0.0.1”。现在用“chattr”命令使他只读:

$ chattr +i /etc/resolv.conf

注意:

如果你想要重新编辑,用“chattr -i /etc/resolv.conf”加入写权限。

现在你需要重启 DNSCrypt 和 unbound 和网络;

$ sudo systemctl restart dnscrypt-proxy unbound netctl

如果你看到错误,检查配置文件。

测试

1、 测试 DNSCrypt

你可以通过 https://dnsleaktest.com/ 来确认 DNSCrypt,点击“标准测试”或者“扩展测试”,然后等待程序运行结束。

现在你可以看到 DNSCrypt.eu 就已经与作为 DNS 提供商的 DNSCrypt 协同工作了。

Testing DNSCrypt

2、 测试 Unbound

现在你应该确保 unbound 可以正确地与“dig”和“drill”命令一起工作。

这是 dig 命令的结果:

$ dig linoxide.com

我们现在看下结果,“Query time”是“533 msec”:

;; Query time: 533 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:48:19 WIB 2015
;; MSG SIZE rcvd: 188

再次输入命令,我们看到“Query time”是“0 msec”。

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Aug 30 14:51:05 WIB 2015
;; MSG SIZE rcvd: 188

Unbound Test

DNSCrypt 对 DNS 客户端和解析端之间的通讯加密做的很好,并且 Unbound 通过缓存让相同的请求在另一次请求同速度更快。

总结

DNSCrypt 是一个可以加密 DNS 客户端和 DNS 解析器之间的数据流的协议。 DNSCrypt 可以在不同的操作系统上运行,无论是移动端或桌面端。选择 DNS 提供商还包括一些重要的事情,应选择那些提供 DNSSEC 同时没有日志的。Unbound 可被用作 DNS 缓存,从而加快解析过程,因为 Unbound 将请求缓存,那么接下来客户端请求相同的查询时,unbound 将从缓存中取出保存的值。 DNSCrypt 和 Unbound 是针对安全性和速度的一个强大的组合。


via: http://linoxide.com/tools/install-dnscrypt-unbound-archlinux/

作者:Arul 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

PowerDNS是一个运行在许多Linux/Unix衍生版上的DNS服务器,它可以使用不同的后端进行配置,包括BIND类型的区域文件、关系型数据库,或者负载均衡/失效转移算法。它也可以被配置成一台DNS递归器,作为服务器上的一个独立进程运行。

PowerDNS授权服务器的最新版本是3.4.4,但是当前EPEL仓库中可以获得的版本是3.4.3。我推荐安装EPEL仓库中提供的那一个,因为该版本已经在CentOS和Fedora中测试过。那样,你也可以在今后很容易地更新PowerDNS。

本文用于向你演示如何安装并配置以MariaDB作为后端的PowerDNS,以及它的界面友好的 Web 管理工具 PowerAdmin。

出于本文的写作目的,我将使用以下服务器:

主机名: centos7.localhost 
IP地址: 192.168.0.102

第一部分: 安装带有MariaDB后端的PowerDNS

1、 首先,你需要为你的系统启用EPEL仓库,只需使用:

# yum install epel-release.noarch 

Enable Epel Repository

启用Epel仓库

2、 下一步是安装MariaDB服务器。运行以下命令即可达成:

# yum -y install mariadb-server mariadb

Install MariaDB Server

安装MariaDB服务器

3、 接下来,我们将配置并启用MariaDB,并设置开机启动:

# systemctl enable mariadb.service
# systemctl start mariadb.service

Enable Start MariaDB System Boot

启用MariaDB开机启动

4、 现在MariaDB服务运行起来了,我们将为MariaDB设置密码进行安全加固,运行以下命令:

# mysql_secure_installation

按照指示做

/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):  Press ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y     
New password:  ← Set New Password
Re-enter new password:  ← Repeat Above Password
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y ← Choose “y” to disable that user
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n ← Choose “n” for no
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y ← Choose “y” for yes
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y ← Choose “y” for yes
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

5、 MariaDB配置成功后,我们可以继续去安装PowerDNS。运行以下命令即可轻易完成:

# yum -y install pdns pdns-backend-mysql

Install PowerDNS with MariaDB Backend

安装带有MariaDB后端的PowerDNS

6、 PowerDNS的配置文件位于/etc/pdns/pdns,在编辑之前,我们将为PowerDNS服务配置一个MariaDB数据库。首先,我们将连接到MariaDB服务器并创建一个名为powerdns的数据库:

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE powerdns;

Create PowerDNS Database

创建PowerDNS数据库

7、 接下来,我们将创建一个名为powerdns的数据库用户:

MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY ‘tecmint123’;
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'centos7.localdomain' IDENTIFIED BY 'tecmint123';
MariaDB [(none)]> FLUSH PRIVILEGES;

Create PowerDNS User

创建PowerDNS用户

注意: 请将“tecmint123”替换为你想要设置的实际密码。

8、 我们继续创建PowerDNS要使用的数据库表。像堆积木一样执行以下这些:

MariaDB [(none)]> USE powerdns;
MariaDB [(none)]> CREATE TABLE domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
);

Create Table Domains for PowerDNS

创建用于PowerDNS的表domains

MariaDB [(none)]> CREATE UNIQUE INDEX name_index ON domains(name);
MariaDB [(none)]> CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

Create Table Records for PowerDNS

创建用于PowerDNS的表 records

MariaDB [(none)]> CREATE INDEX rec_name_index ON records(name);
MariaDB [(none)]> CREATE INDEX nametype_index ON records(name,type);
MariaDB [(none)]> CREATE INDEX domain_id ON records(domain_id);

Create Index of Table

创建表索引

MariaDB [(none)]> CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

Create Table Supermaster

创建表supermasters

你现在可以输入以下命令退出MariaDB控制台:

MariaDB [(none)]> quit;

9、 最后,我们可以继续配置PowerDNS了,以MariaDB作为后台。请打开PowerDNS的配置文件:

# vim /etc/pdns/pdns.conf 

在该文件中查找像下面这样的行:

#################################
# launch        Which backends to launch and order to query them in
#
# launch=

在这后面放置以下代码:

launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=user-pass
gmysql-dbname=powerdns

修改“user-pass”为你先前设置的实际密码,配置如下:

Configure PowerDNS

配置PowerDNS

保存修改并退出。

10、 现在,我们将启动并添加PowerDNS到系统开机启动列表:

# systemctl enable pdns.service 
# systemctl start pdns.service 

Enable and Start PowerDNS

启用并启动PowerDNS

到这一步,你的PowerDNS服务器已经起来并运行了。要获取更多关于PowerDNS的信息,你可以参考手册http://downloads.powerdns.com/documentation/html/index.html

第二部分: 安装PowerAdmin来管理PowerDNS

11、 现在,我们将安装PowerAdmin——一个界面友好的PowerDNS服务器的 Web 管理器。由于它是用PHP写的,我们将需要安装PHP和一台网络服务器(Apache):

# yum install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

Install Apache PHP

安装Apache 和 PHP

PowerAdmin也需要两个PEAR包:

# yum -y install php-pear-DB php-pear-MDB2-Driver-mysql 

Install Pear

安装Pear

你也可以参考一下文章了解CentOS 7中安装LAMP堆栈的完整指南:

安装完成后,我们将需要启动并设置Apache开机启动:

# systemctl enable httpd.service
# systemctl start httpd.service

Enable Start Apache System Boot

启用Apache开机启动

12、 由于已经满足PowerAdmin的所有系统要求,我们可以继续下载软件包。因为Apache默认的网页目录位于/var/www/html/,我们将下载软件包到这里。

# cd /var/www/html/
# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz 
# tar xfv poweradmin-2.1.7.tgz

Download PowerAdmin

下载PowerAdmin

13、 现在,我们可以启动PowerAdmin的网页安装器了,只需打开:

http://192.168.0.102/poweradmin-2.1.7/install/

这会进入安装过程的第一步:

Select Installation Language

选择安装语言

上面的页面会要求你为PowerAdmin选择语言,请选择你想要使用的那一个,然后点击“进入步骤 2”按钮。

14、 安装器需要PowerDNS数据库:

PowerDNS Database

PowerDNS数据库

15、 因为我们已经创建了一个数据库,所以我们可以继续进入下一步。你会被要求提供先前配置的数据库详情,你也需要为Poweradmin设置管理员密码:

Enter PowerDNS Database Settings

输入PowerDNS数据库配置

16、 输入这些信息后,进入步骤 4。你将创建为Poweradmin创建一个受限用户。这里你需要输入的字段是:

  • 用户名(Username) - PowerAdmin用户名。
  • 密码(Password) – 上述用户的密码。
  • 主机管理员(Hostmaster) - 当创建SOA记录而你没有指定主机管理员时,该值会被用作默认值。
  • 主域名服务器 - 该值在创建新的DNS区域时会被用于作为主域名服务器。
  • 辅域名服务器 – 该值在创建新的DNS区域时会被用于作为辅域名服务器。

PowerDNS Configuration Settings

PowerDNS配置设置

17、 在下一步中,Poweradmin会要求你在数据库表中创建一个新的受限数据库用户,它会提供你需要在MariaDB控制台输入的代码:

Create New Database User

创建新的数据库用户

18、 现在打开终端并运行:

# mysql -u root -p

提供你的密码并执行由PowerAdmin提供的代码:

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'powermarin'@'localhost'
IDENTIFIED BY '123qweasd';

Grant Mysql Permissions to User

为用户授予Mysql权限

19、 现在,回到浏览器中并继续下一步。安装器将尝试创建配置文件到/var/www/html/poweradmin-2.1.7/inc。

文件名是config.inc.php。为防止该脚本没有写权限,你可以手动复制这些内容到上述文件中:

Configuration Settings of PowerDNS

配置PowerDNS设置

20、 现在,进入最后页面,该页面会告知你安装已经完成以及如何访问安装好的PowerAdmin:

PowerDNS Installation Completed

PowerDNS安装完成

你可以通过运行以下命令来启用用于其他动态DNS提供商的URL:

# cp install/htaccess.dist .htaccess 

出于该目的,你将需要在Apache的配置中启用mod\_rewrite。

21、 现在,需要移除从PowerAdmin的根目录中移除“install”文件夹,这一点很重要。使用以下命令:

# rm -fr /var/www/html/poweradmin/install/

在此之后,你可以通过以下方式访问PowerAdmin:

http://192.168.0.102/poweradmin-2.1.7/

PowerDNS Login

PowerDNS登录

在登录后,你应该会看到PowerAdmin的主页:

PowerDNS Dashboard

PowerDNS仪表盘

到这里,安装已经完成了,你也可以开始管理你的DNS区域了。

第三部分: PowerDNS中添加、编辑和删除DNS区域

22、 要添加新的主区域,只需点击“添加主区域”:

Add Master Zone

添加主区域

在下一页中,你需要填写一些东西:

  • 域(Domain) – 你要添加区域的域。
  • 所有者(Owner) – 设置DNS区域的所有者。
  • 模板(Template)– DNS模板 – 留空。
  • DNSSEC – 域名系统安全扩展(可选——看看你是否需要)。

点击“添加区域”按钮来添加DNS区域。

Master DNS Zone

主DNS区域

现在,你可以点击“首页”链接回到PowerAdmin的首页。要查看所有现存的DNS区域,只需转到“列出区域(List Zones)”:

Check List of Zones

查看区域列表

你现在应该看到一个可用DNS区域列表:

Check List of DNS Zones

检查DNS区域列表

23、 要编辑现存DNS区域或者添加新的记录,点击编辑图标:

Edit DNS Zone

编辑DNS区域

在接下来的页面,你会看到你选择的DNS区域的条目:

Domain DNS Zone Entries

域名的DNS区域条目

24、 在此处添加新的DNS条目,你需要设置以下信息:

  • 名称(Name) – 条目名称。只需添加域/子域的第一部分,PowerAdmin会添加剩下的。
  • 类型(Type) – 选择记录类型。
  • 优先级(Priority) – 记录优先级。
  • TTL – 存活时间,以秒计算。

出于本文目的,我将为子域new.example.com添加一个A记录用于解析IP地址192.168.0.102,设置存活时间为14400秒:

Add New DNS Record

添加新DNS记录

最后,点击“添加记录”按钮。

25、 如果你想要删除DNS区域,你可以回到“列出区域”页面,然后点击你想要删除的DNS区域旁边“垃圾桶”图标:

Delete DNS Zone

删除DNS区域

Poweradmin将问你是否确定想要删除DNS区域。只需点击“是”来完成删除。

如要获取更多关于怎样创建、编辑和删除区域的说明,你可以参与Poweradmin的文档:https://github.com/poweradmin/poweradmin/wiki/Documentation

我希望你已经发现本文很有趣,也很有用。一如既往,如果你有问题或要发表评论,请别犹豫,在下面评论区提交你的评论吧。


via: http://www.tecmint.com/install-powerdns-poweradmin-mariadb-in-centos-rhel/

作者:Marin Todorov 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

BIND(Berkeley internet Name Daemon)也叫做NAMED,是现今互联网上使用最为广泛的DNS 服务器程序。这篇文章将要讲述如何在 chroot 监牢中运行 BIND,这样它就无法访问文件系统中除“监牢”以外的其它部分。

例如,在这篇文章中,我会将BIND的运行根目录改为 /var/named/chroot/。当然,对于BIND来说,这个目录就是 /(根目录)。 “jail”(监牢,下同)是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性(LCTT 译注:chroot “监牢”,所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件进行操作,从而保证整个服务器的安全)。Bind Chroot DNS 服务器的默认“监牢”为 /var/named/chroot。

你可以按照下列步骤,在CentOS 7.0 上部署 Bind Chroot DNS 服务器。

1、安装Bind Chroot DNS 服务器

[root@centos7 ~]# yum install bind-chroot bind -y

2、拷贝bind相关文件,准备bind chroot 环境

[root@centos7 ~]# cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/

3、在bind chroot 的目录中创建相关文件

[root@centos7 ~]# touch /var/named/chroot/var/named/data/cache_dump.db
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named_stats.txt
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named_mem_stats.txt
[root@centos7 ~]# touch /var/named/chroot/var/named/data/named.run
[root@centos7 ~]# mkdir /var/named/chroot/var/named/dynamic
[root@centos7 ~]# touch /var/named/chroot/var/named/dynamic/managed-keys.bind

4、 将 Bind 锁定文件设置为可写

[root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/data
[root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/dynamic

5、 将 /etc/named.conf 拷贝到 bind chroot目录

[root@centos7 ~]# cp -p /etc/named.conf /var/named/chroot/etc/named.conf

6、 在/etc/named.conf中对 bind 进行配置。

在 named.conf 文件尾添加 example.local 域信息, 创建转发域(Forward Zone)与反向域(Reverse Zone)(LCTT 译注:这里example.local 并非一个真实有效的互联网域名,而是通常用于本地测试的一个域名;如果你需要做权威 DNS 解析,你可以将你拥有的域名如这里所示配置解析。):

[root@centos7 ~]# vi /var/named/chroot/etc/named.conf

-

..
..
zone "example.local" {
    type master;
    file "example.local.zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0.zone";
};
..
..

named.conf 完全配置如下:

//
// named.conf
//
// 由Red Hat提供,将 ISC BIND named(8) DNS服务器 
// 配置为暂存域名服务器 (用来做本地DNS解析).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };

        /*
         - 如果你要建立一个 授权域名服务器 服务器, 那么不要开启 recursion(递归) 功能。
         - 如果你要建立一个 递归 DNS 服务器, 那么需要开启recursion 功能。
         - 如果你的递归DNS服务器有公网IP地址, 你必须开启访问控制功能,
           只有那些合法用户才可以发询问. 如果不这么做的话,那么你的服
           服务就会受到DNS 放大攻击。实现BCP38将有效抵御这类攻击。
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "example.local" {
    type master;
    file "example.local.zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0.zone";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

7、 为 example.local 域名创建转发域与反向域文件

a)创建转发域

[root@centos7 ~]# vi /var/named/chroot/var/named/example.local.zone

添加如下内容并保存:

;
;       Addresses and other host information.
;
$TTL 86400
@       IN      SOA     example.local. hostmaster.example.local. (
                               2014101901      ; Serial
                               43200      ; Refresh
                               3600       ; Retry
                               3600000    ; Expire
                               2592000 )  ; Minimum

;       Define the nameservers and the mail servers

               IN      NS      ns1.example.local.
               IN      NS      ns2.example.local.
               IN      A       192.168.0.70
               IN      MX      10 mx.example.local.

centos7          IN      A       192.168.0.70
mx               IN      A       192.168.0.50
ns1              IN      A       192.168.0.70
ns2              IN      A       192.168.0.80

b)创建反向域

[root@centos7 ~]# vi /var/named/chroot/var/named/192.168.0.zone

-

;
;       Addresses and other host information.
;
$TTL 86400
@       IN      SOA     example.local. hostmaster.example.local. (
                               2014101901      ; Serial
                               43200      ; Refresh
                               3600       ; Retry
                               3600000    ; Expire
                               2592000 )  ; Minimum

0.168.192.in-addr.arpa. IN      NS      centos7.example.local.

70.0.168.192.in-addr.arpa. IN PTR mx.example.local.
70.0.168.192.in-addr.arpa. IN PTR ns1.example.local.
80.0.168.192.in-addr.arpa. IN PTR ns2.example.local.。

8、开机自启动 bind-chroot 服务

[root@centos7 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on
[root@centos7 ~]# systemctl stop named
[root@centos7 ~]# systemctl disable named
[root@centos7 ~]# systemctl start named-chroot
[root@centos7 ~]# systemctl enable named-chroot
ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.service'

via: http://www.ehowstuff.com/how-to-setup-bind-chroot-dns-server-on-centos-7-0-vps/

作者:skytech 译者:SPccman 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

电信常用DNS:

地区DNS服务器1DNS服务器2
安徽202.102.192.68202.102.199.68
澳门202.175.3.8202.175.3.3
北京202.96.199.133202.96.0.133
重庆61.128.128.6861.128.192.68
福建202.101.115.55218.85.157.99
甘肃202.100.64.6861.178.0.93
广东202.96.128.86202.96.128.166
广西202.103.224.68202.103.225.68
贵州202.98.192.67202.98.198.167
海南202.100.192.68202.100.199.8
河北219.150.32.132222.222.222.222
黑龙江219.150.32.132219.146.0.130
河南219.150.150.150222.88.88.88
湖北202.103.0.68202.103.24.68
湖南202.103.96.112202.103.96.68
江苏61.177.7.161.147.37.1
江西202.101.224.68202.101.226.69
内蒙古219.150.32.132219.146.0.130
宁夏202.100.96.68222.75.152.129
青海202.100.128.68
山东219.146.0.130
上海202.96.209.5202.96.209.133
陕西218.30.19.4061.134.1.4
四川61.139.2.69202.98.96.68
台湾168.95.1.1168.95.192.1
天津202.99.104.68
香港205.252.144.126218.102.62.71
新疆61.128.114.16661.128.114.133
云南222.172.200.6861.166.150.123
浙江60.191.244.5202.96.113.34

网通/联通常用DNS:

地区DNS服务器1DNS服务器2
安徽218.104.78.2
北京210.106.0.20202.106.196.115
广东221.4.66.66210.21.4.130
广西221.7.136.68221.7.128.68
河北202.99.160.68202.99.166.4
黑龙江202.97.224.68202.97.224.69
河南202.102.224.68202.102.227.68
湖北218.104.111.112218.104.111.114
湖南58.20.127.17058.20.57.4
江苏221.6.4.66221.6.96.177
江西220.248.192.12220.248.192.13
吉林202.98.0.68202.98.5.68
辽宁202.96.69.38202.96.64.68
内蒙古202.99.224.8202.99.224.67
山东202.102.152.3202.102.134.68
上海210.22.70.3210.22.84.3
山西202.99.192.66202.99.192.68
四川221.10.251.196119.6.6.6
天津202.99.96.68202.99.64.69
云南221.3.131.9221.3.131.10
浙江221.12.1.228221.12.33.228