tcp - 源端口低于 1024 的 TCP/UDP IP 数据包是否可能

标签 tcp udp ip protocols

我正在分析一些针对运行未绑定(bind)的 dns 服务器的事件。在此调查过程中,我遇到了涉及对 dns 服务器的查询的流量,据报告,这些服务器在某些情况下具有 1 到 1024 之间的源端口。据我所知,这些是为服务保留的,因此永远不应该有流量从那些发起/发起到服务器。
由于我也知道这是一种实践,而不是法律,随着时间的推移而演变,我知道在数据包的源端口字段中放置任何数字没有技术限制。所以我的结论是,这些查询是由某个工具生成的,其中源端口填充了一个随机值(频率大约均匀分布在 0-65535 上,除了 32768 附近的峰值),这是故意攻击.
有人可以确认/否认源端口理论并证明我的结论是正确的,或者说我是个白痴并解释原因吗?
提前致谢。
编辑 1:添加更准确的信息来解决以下由于我的报告不完整而引起的一些争议。
这绝对不是端口扫描。它是到达端口 53 UDP 的流量,并且未绑定(bind)显然接受它作为(几乎)有效的 dns 查询,同时为每个数据包生成以下错误消息:

notice: remote address is <ipaddress> port <sourceport>
notice: sendmsg failed: Invalid argument

$ cat raw_daemonlog.txt | egrep -c 'notice: remote address is' 
256497
$ cat raw_daemonlog.txt | egrep 'notice: remote address is' | awk '{printf("%s\n",$NF)}' | sort -n | uniq -c > sourceportswithfrequency.txt
$ cat sourceportswithfrequency.txt | wc -l
56438
所以使用了 256497 条消息,56438 个唯一源端口
$ cat sourceportswithfrequency.txt | head 
   5 4
   3 5
   5 6
所以看到的最低源端口是 4,它被使用了 5 次
$ cat sourceportswithfrequency.txt | tail
  8 65524
  2 65525
 14 65526
  1 65527
  2 65528
  4 65529
  3 65530
  3 65531
  3 65532
  4 65534
所以看到的最高源端口是 65534,它被使用了 4 次。
$ cat sourceportswithfrequency.txt | sort -n | tail -n 25
  55 32786
  58 35850
  60 32781
  61 32785
  66 32788
  68 32793
  71 32784
  73 32783
  88 32780
  90 32791
  91 32778
 116 2050
 123 32779
 125 37637
 129 7077
 138 32774
 160 32777
 160 57349
 162 32776
 169 32775
 349 32772
 361 32773
 465 32769
 798 32771
1833 32768
所以 32768 附近的峰值是真实的。
我最初的问题仍然存在:这种流量模式是否暗示了攻击,或者是否有合理的解释,例如源端口 < 1024 的流量?

最佳答案

As far as my knowledge goes these are reserved for services so there should never be traffic originating / initiated from those to a server.


源端口号是什么并不重要,只要它在 1 到 65,535 之间即可。它不像源端口 53 意味着有一个 DNS 服务器在源机器上监听。
源端口只是为了允许从一台机器到同一目标端口上的另一台机器的多个连接/飞行中的数据报。
另见 Wiki: Ephemeral port :

The Internet Assigned Numbers Authority (IANA) suggests the range 49152 to 65535 [...] for dynamic or private ports.[1]

关于tcp - 源端口低于 1024 的 TCP/UDP IP 数据包是否可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62729247/

相关文章:

c# - 明确定义对象时的空引用异常

android - 单播发送 UDP 不起作用,但广播发送 UDP 可以

linux - Python 3 - 无法接收 IPv6 数据包(UDP - linux)

c - 在 C 中使用 UDP 通过套接字发送单个无符号字符

Java 邮件 API 生成分段 IP 数据包,避免 EHLO 到 SMTP

c - 查找所有连接到网络的计算机并获取它们的 IP 地址 - Windows C

php - 仅在固定时间执行 PHP 脚本

java - java套接字连接被拒绝?

windows - 作为 Windows Docker Desktop 的一部分运行的 Kubernetes 集群是否有等效的 host.docker.internal

java - TCP 客户端套接字。连接并等待输入流