当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 和其它大型软件一样,BIND(DNS服务器)也因其体积庞大和功能繁杂而存在许多问题。因此针对BIND安全漏洞的系统入侵数量也在大幅度上升,最严重的甚至可获取目标主机的所有远

 和其它大型软件一样,BIND(DNS服务器)也因其体积庞大和功能繁杂而存在许多问题。因此针对BIND安全漏洞的系统入侵数量也在大幅度上升,最严重的甚至可获取目标主机的所有远程控制权。由于DNS服务器主机对网络系统有着很大的影响,如何避免这些系统入侵也变得至关重要了。

这篇短文的主旨是讲述如何利用chroot()环境在RedHat Linux(或类似系统)中建立安全的BIND 8.x服务器。本文内容主要来自于Adam Shostack和他在这方面的文章(Solaris版本)。

步骤一:软件获取和安装

请到ISC FTP站点下载BIND的最新版本(本文内容在BIND 8.x版本中经过测试)。

到Obtuse System FTP站点下载本文必需的免费软件:holelogd(及其它有用的工具)。该软件用于在chroot环境中建立/dev/log套接字(socket),从而使syslogd能够记录named进程的日志。OpenBSD系统的syslogd已内建了这一功能("syslogd -a /chroot/dev/log"),但Linux系统尚未实现这一功能。Holelogd软件就是用来模仿OpenBSD的这个功能。

按照软件文档安装holelogd(通常被安装到/usr/local/sbin)。

步骤二:构造静态(static)的named和named-xfer二进制文件

在编译和安装后,你需要构造可执行文件的静态链接版本。只要对%BIND%/src/port/linux目录下的Makefile.set文件稍加修改后即可。

修改文件内容:

'CDEBUG= -O2 -g'

替换为:

'CDEBUG= -O2 -static'

切换到BIND的源代码路径,执行"make clean"和"make"命令。在下面的步骤中将会把这些文件复制到chroot()目录下。

本步骤构造的静态链接执行文件在运行时无需装载动态链接库。在chroot()环境中,这种“独立”可执行文件可避免出现缺少链接库文件问题。它在chroot()环境中无需任何静态链接库,可使服务配置简单化。其它所有的网络守护进程也可以编译和使用这种静态链接版本。

步骤三:构造BIND目录

为chroot()环境构造BIND目录。这个目录将在chroot()环境中被BIND当作系统根目录。

/dev

/etc

/namedb

/usr

/sbin

/var

/run

需要复制以下文件到其下的相应子目录中,和进行一些必要的处理:

/

/etc

复制系统/etc目录下的named.conf文件

复制系统/etc目录下的localtime文件(为syslog提供正确的named日志记录时间)

创建仅包含named GID的/etc/group文件

/etc/namedb

复制系统/etc/namedb目录下的所有“区(zone)”数据库和文件

/dev

mknod ./null c 1 3; chmod 666 null(请参阅相应版本的mknod命令)

/usr/sbin

复制系统%BIND%/src/bin/named目录和系统%BIND%/src/bin/named-xfer目录下的named和named-xfer二进制文件(静态链接版本)

/var/run

另外还可根据需要指定日志记录目录(如/var/log)。

步骤四:添加named用户和组

在/etc/passwd和/etc/group文件中添加named用户和组。它们是DNS服务器运行时的UID/GID。

此时,你可以到chroot环境中执行"chown -R named.named /etc/namedb"命令。这样当你向系统发送中断信号(kill -INT )时,named进程能够保存服务器缓存和统计信息。如果该目录为root所有则named进程无法将输出写到目录中,但不会影响named服务器功能。另一个选择是仅改变目录权限(使named用户具有写权限),而属主仍然是root。这种方法也是可行的,但必须小心设置,确保其它用户不会修改named记录!

*** 重要警告***

不要用一个已存在的UID/GID(如"nobody")运行named。记住,以chroot环境中使用任何已存在的UID/GID都可能会影响到服务的安全性。必须养成在chroot环境中为每一个守护进程提供独立的UID/GID的习惯。

步骤五:编辑启动脚本

Linux使用SYS V风格的init文件,所以有几个地方都可以放置运行named的命令。(大多数情况下)最好将named初始化脚本放置到/etc/rc.d/init.d/named中。在其中你会找到有关named启动的那一节内容。我们需要添加和修改其中的某些行。

1、在运行named前插入一行以启动holelogd。需要向holelogd提供远程套接字

位置的参数,它应该是在上面步骤中创建的chroot named dev目录。命令行

内容如下:

# Start daemons.

echo -n "Staring holelogd: "

daemon /usr/local/sbin/holelogd /chroot/named/dev/log

echo

echo -n "Starting named: "

daemon named

echo

touch /var/lock/subsys/named

;;

2、另外还需要修改BIND的启动参数。BIND 8.x版本允许指定运行用户ID和组ID,

它也应该是在上面步骤中特别创建的UID/GID:

# Start daemons.

echo -n "Staring holelogd: "

daemon /usr/local/sbin/holelogd /chroot/named/dev/log

echo

echo -n "Starting named: "

daemon /chroot/named/usr/sbin/named -u named -g named -t /chroot/named

echo

touch /var/lock/subsys/named

;;

3、named附带的"ndc"脚本可用于控制named的工作。需要编辑这个文件以将PID

文件位置从/var/run/named.pid修改为/chroot/named/var/run/named.pid。

步骤六:服务器测试

输入如下命令启动holelogd进程

/usr/local/sbin/holelogd /chroot/named/dev/log

进入/chroot/named/dev/目录并输入ls -al。应该得到与下面类似的输出:

srw-rw-rw- 1 root wheel 0 Jan 01 12:00 log

设定的"s"位指示这是一个套接字(socket)文件。chroot()环境中的named进程将通过该套接字与syslog通讯。

现在输入:

/chroot/named/usr/sbin/named -u named -g named -t /chroot/named

如果一切正常,named进程将启动,日志文件将记录named服务器"Ready to answer queries."。[!--empirenews.page--]

进行适当的DNS测试以确保服务器能正确工作,然后重新启动系统并检验所有配置。BIND正常启动后会报告其chroot()目录和运行UID/GID。你可以使用lsof之类的程序列出主机中所有网络套接字进行检查。

当一切工作正常后,建议将/etc/namedb改名为/etc/namedb.orig或其它名字,同时chmod 000 /usr/sbin/named,这样可以确保这些旧版本的named不会因偶然的失误而使用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中国深圳2025年8月26日 /美通社/ -- 2025年8月26日,中集车辆(301039.SZ)召开2025年中期业绩说明会。2025年上半年,中集车辆稳健前行,实现营收97.5亿元,毛利达14.6亿元,加速演化成星...

关键字: 电动 EV 新能源 供应链

上海2025年7月28日 /美通社/ -- 为期四天的2025国际低空经济博览会于7月26日圆满落幕。作为聚焦低空经济全产业链为核心的国际性展会,本届博览会以"启航低空经济,赋能千行百业"为主题,吸引...

关键字: EV 无人机 飞机 飞行器

上海2025年7月25日 /美通社/ -- 昨日,在首届上海国际低空经济博览会现场,昂际智航与翊飞航空科技正式签署ES1000型号铁鸟及101工程实验样机飞控电子集成和试飞支持合同。此次采购合同签署标志着双方自2024年...

关键字: 运输机 飞控系统 EV ST

以 AI 为核心的智能汽车平台将加速向软件定义出行的转型进程 德国埃朗根 2025年6月25日 /美通社/ -- Elektrobit 今日宣布与全球领先的电子制造商之一——鸿海科技集团(富士康)...

关键字: 汽车 软件定义 OS EV

5月19日消息,据日经中文报道,日产汽车5月9日发布消息称,将放弃在日本国内建设该公司首座纯电动汽车(EV)电池工厂的计划。由于业绩不佳,日产认为很难进行巨额投资。

关键字: EV 新能源

在当今高度互联的数字化时代,计算机网络协议如同隐形的纽带,将全球范围内的设备、系统和用户紧密相连。它们规定了数据在网络中传输、处理和交互的规则,确保了信息的准确、高效传递。其中,FTP(文件传输协议)、SMTP(简单邮件...

关键字: FTP SMTP DNS

-CleverTap收购rehook.ai,加强人工智能驱动的促销和客户留存能力 整合rehook.ai的创新促销引擎,统一分析、互动和促销,促进人工智能驱动的营销活动和客户留存 旧金山和印度孟买2025年4月16日...

关键字: EV AI 智能驱动 人工智能

北京2025年4月9日 /美通社/ -- 隶属于AVEVA 剑维软件集团旗下的泰尔文特控制系统(中国)有限公司(以下简称"泰尔文特")获得"北京市外资研发中心"认定,并于2025中...

关键字: 控制系统 研发中心 软件 EV

苏州2025年3月31日 /美通社/ -- 在生育友好消息频传之际,专注于生育健康全产业链的辅助生殖IVD第一股贝康医疗发布2024年度成绩单,表现亮眼。公司全年实现收入近3亿元,同比激增44%,标志着其国际化全产业链战...

关键字: 管线 EV 网络 矩阵

在当今的数字化时代,互联网已成为人们获取信息、交流和娱乐的主要平台。然而,在看似无形的网络背后,有一个复杂而精密的系统在默默地运作,它就是域名系统(DNS)。DNS不仅将人类可读的域名(如www.example.com)...

关键字: DNS 域名系统
关闭