首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
stdout
devops
zsh
4层
ssh
colors
fabric
sudo
centos
sftp
jenkins
unix
cron
service
路由器
vagrant
syslog
grafana
nginx
压力测试
server
k8s
tengine
port
apache
touch
debian
grep
kubectl
交换机
dns
log4j
负载均衡
tomcat
crontab
7层
服务器
centos7
linux
shell
ubuntu
docker
运维
ftp
curl
awk
当前位置:
开发笔记
>
运维
> 正文
建立安全的DNS服务器
作者:用户r0t3utxyco | 来源:互联网 | 2017-11-06 18:16
文章标题:建立安全的DNS服务器。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
和其它大型软件一样,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."。
进行适当的DNS测试以确保服务器能正确工作,然后重新启动系统并检验所有配置。BIND正常启动后会报告其chroot()目录和运行UID/GID。你可以使用lsof之类的程序列出主机中所有网络套接字进行检查。
当一切工作正常后,建议将/etc/namedb改名为/etc/namedb.orig或其它名字,同时chmod 000 /usr/sbin/named,这样可以确保这些旧版本的named不会因偶然的失误而使用。
<<完>>
资料来源:
ISC (Internet Software Consortium)
Steinar Haug
Bernhard Weisshuhn
Marc Heuse
Jan Gruber
Adam Shostack
Psionic
服务器
安全
linux
ssh
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
server
Centos7.6安装Gitlab教程及注意事项
本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ...
[详细]
蜡笔小新 2023-12-14 14:01:06
server
如何在服务器主机上实现文件共享的方法和工具
本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ...
[详细]
蜡笔小新 2023-12-13 13:23:48
port
Python高级之网络编程及TCP/IP协议簇的OSI七层模型介绍
本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ...
[详细]
蜡笔小新 2023-12-14 18:16:27
service
Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ...
[详细]
蜡笔小新 2023-12-14 17:57:01
server
图解redis的持久化存储机制RDB和AOF的原理和优缺点
本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ...
[详细]
蜡笔小新 2023-12-13 20:24:11
apache
RHEL 7中的系统日志管理和网络管理
本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ...
[详细]
蜡笔小新 2023-12-09 10:39:58
sftp
大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ...
[详细]
蜡笔小新 2023-10-17 19:47:17
server
rhel5.5搭建网关+LAMP+postfix+dhcp的步骤和配置方法
本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ...
[详细]
蜡笔小新 2023-12-14 17:13:20
ssh
树莓派Linux基础(一):查看文件系统的命令行操作
本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ...
[详细]
蜡笔小新 2023-12-14 13:33:39
server
Web学习历程记录(七)——Tomcat基本概念和配置
本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ...
[详细]
蜡笔小新 2023-12-13 17:08:24
ssh
SSH免密登录步骤及注意事项
本文介绍了使用SSH免密登录的步骤,包括生成公私钥、传递公钥给被登录机、修改文件权限的操作。同时提醒用户注意私钥的传递方式,建议使用U盘等离线方式传递。 ...
[详细]
蜡笔小新 2023-12-11 23:42:42
ssh
SpringBoot整合SpringSecurity+JWT实现单点登录
SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ...
[详细]
蜡笔小新 2023-12-11 08:21:41
server
LVS 实现负载均衡的原理
LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ...
[详细]
蜡笔小新 2023-12-10 12:10:22
ssh
GSIOpenSSH PAM_USER 安全绕过漏洞
漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ...
[详细]
蜡笔小新 2023-12-10 06:34:54
service
windows部署hadoop2.7.0
这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ...
[详细]
蜡笔小新 2023-10-17 21:04:04
用户r0t3utxyco
这个家伙很懒,什么也没留下!
Tags | 热门标签
stdout
devops
zsh
4层
ssh
colors
fabric
sudo
centos
sftp
jenkins
unix
cron
service
路由器
vagrant
syslog
grafana
nginx
压力测试
server
k8s
tengine
port
apache
touch
debian
grep
kubectl
交换机
RankList | 热门文章
1
HDU 1280 前m大的数 【整数Hash】
2
python3模块文档_6. 模块 — Python tutorial 3.6.3 documentation
3
安卓手机中微信语音没有声音详细解决步骤
4
日期控件控制两个日期相差7天
5
AttributeError: module 'yagmail' has no attribute 'SMTP',关于使用yagmail发邮件报错的解决方法...
6
centos6分辨率设置
7
Qt开发之路40QProcess启动控制台程序不显示窗口问题
8
c#数字图像处理图像处理中Stride和Width的关系
9
3dmax2014植树插件_【亲测能用】3dsMax种树插件:Forest Pack Pro v6.2.1 For 20152020+资源库下载羽兔网...
10
考大学计算机考试作文,机考作文
11
26类英语重点短语汇总,一张表慢慢记!
12
css CSS Layout.css动画插件
13
PPT打印怎么设置无间距?
14
三.k8s基本操作以及pod存活以及可用性验证钩子
15
DeepMind公司最新ai技术参加Codeforces击败大部分选手
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有