我有一个 Ubuntu 19.10 VPS 服务器,它为一些用户提供一定的监控流量。用户连接、读取文件并断开连接。最近,我注意到上述服务器通过简单地回复来自僵尸网络或害虫的 DNS 请求而被用于 DNS DDoS 放大攻击,因此我尝试定义一些 IPTABLES 规则,例如:
root@brohams ~# iptables-save -c
# Generated by iptables-save v1.6.1 on Mon Oct 14 09:26:44 2019
*filter
:INPUT ACCEPT [5748921:3396057055]
:FORWARD ACCEPT [2209544:2701483932]
:OUTPUT ACCEPT [6194165:6573791719]
[0:0] -A INPUT -i eth0 -p udp -m udp --dport 53 -j DROP
[182468:7298720] -A INPUT -i eth0 -p tcp -m tcp --dport 53 -j DROP
[40:1692] -A INPUT -i eth0 -p tcp -m tcp --dport 25 -j DROP
[2398:136716] -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP
[0:0] -A INPUT -i eth0 -p udp -m udp --dport 53 -j DROP
[0:0] -A INPUT -p udp -m udp --dport 53 -j DROP
COMMIT
# Completed on Mon Oct 14 09:26:44 2019
# Generated by iptables-save v1.6.1 on Mon Oct 14 09:26:44 2019
*nat
:PREROUTING ACCEPT [892666:157568071]
:INPUT ACCEPT [144360:14788753]
:OUTPUT ACCEPT [6862:425179]
:POSTROUTING ACCEPT [1:78]
[59:3020] -A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 8.8.8.8
[339793:21781969] -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 8.8.8.8
[0:0] -A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 8.8.8.8
[0:0] -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 8.8.8.8
[27192:4136927] -A POSTROUTING -s X.X.X.0/24 -o eth0 -j MASQUERADE
[336369:21533218] -A POSTROUTING -o eth0 -j MASQUERADE
[0:0] -A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Oct 14 09:26:45 2019
这是输出iptables -Lnv
:
root@brohams ~# iptables -L -n -v
Chain INPUT (policy ACCEPT 9417K packets, 5055M bytes)
pkts bytes target prot opt in out source destination
0 0 DROP udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
287K 11M DROP tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
62 2668 DROP tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
686 31144 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 DROP udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain FORWARD (policy ACCEPT 5106K packets, 5409M bytes)
pkts bytes target prot opt in out source destination
857K 61M ACCEPT all -- xx0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 10M packets, 11G bytes)
pkts bytes target prot opt in out source destination
有趣的是,传入的 UDP DNS 请求数据包不会被丢弃,我的服务器仍在应答它们。如您所见,TCP DNS 请求正在被丢弃。我的操作系统版本是:
root@brohams ~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.04
Release: 19.04
Codename: disco
root@brohams ~# uname -romi
5.0.0-31-generic x86_64 x86_64 GNU/Linux
我的IPTABLES版本是:
root@brohams ~# iptables -V
iptables v1.6.1
更新
我注意到很多 DNS 查询到达我的机器,它们的目标 IP 地址与我的 VPS 不同。
root@brohams ~# tcpdump -s0 -vvvvni eth0 port 53 | grep -i ddosvictim
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
172.217.40.8.36059 > x.x.179.4.53: [udp sum ok] 10363% [1au] A? victim.com. ar: . OPT UDPsize=4096 DO (57)
74.125.190.150.65259 > x.x.179.4.53: [udp sum ok] 4809% [1au] SOA? victim.com. ar: . OPT UDPsize=4096 DO (57)
141.101.70.60.59972 > x.x.179.4.53: [udp sum ok] 4272 [1au] A? victim.com. ar: . OPT UDPsize=1452 (46)
76.96.47.215.6328 > x.x.179.4.53: [udp sum ok] 38615 [1au] ANY? www.victim.com. ar: . OPT UDPsize=4096 DO (50)
64.135.1.20.28270 > x.x.179.4.53: [udp sum ok] 38218% [1au] AAAA? ns1.victim.com. ar: . OPT UDPsize=4096 DO (50)
正如您所看到的,有大量的各种请求,数千个(为简洁起见,省略了输出)。这些数据包甚至最终出现在我的 VPS 上,这一事实确实令人心烦意乱。为什么会发生这种情况?
这是当我查询我自己的服务器时,我们可以看到我的PREROUTING
NAT 正在执行它所告诉的操作:
root@brohams ~# tcpdump -s0 -vvvvni eth0 port 53 | grep -i distro
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
My.PC.83.162.36180 > My.VPS.183.141.53: [udp sum ok] 6595+ [1au] A? distrowatch.com. ar: . OPT UDPsize=4096 (56)
My.VPS.183.141.36180 > 8.8.8.8.53: [udp sum ok] 6595+ [1au] A? distrowatch.com. ar: . OPT UDPsize=4096 (56)
8.8.8.8.53 > My.VPS.183.141.36180: [udp sum ok] 6595 q: A? distrowatch.com. 1/0/1 distrowatch.com. [2h28m26s] A 82.103.136.226 ar: . OPT UDPsize=512 (60)
My.VPS.183.141.53 > My.PC.83.162.36180: [udp sum ok] 6595 q: A? distrowatch.com. 1/0/1 distrowatch.com. [2h28m26s] A 82.103.136.226 ar: . OPT UDPsize=512 (60)
该计算机尚未配置为任何类型的 DNS 服务器。它只是为很少连接到它的 VPN 用户充当递归 DNS 服务器,但拥有此功能对他们来说至关重要。而且它只有一个接口(Eth0)。
我找不到此版本的 IPTABLES 报告的任何错误。知道为什么这种类型的流量仍然通过以及如何阻止它吗?
PS 我尝试过重新添加规则或移动它,但它仍然是相同的。
提前致谢
答案1
因此,输出iptables -t nat -L
显示:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:domain to:8.8.8.8
DNAT udp -- anywhere anywhere udp dpt:domain to:8.8.8.8
DNAT tcp -- anywhere anywhere tcp dpt:domain to:8.8.8.8
DNAT udp -- anywhere anywhere udp dpt:domain to:8.8.8.8
这真的很奇怪。我通过发布删除了这些规则iptables -t nat -D #
,现在 DNS 查询被阻止。感谢所有试图提供帮助的人。真的很感激。