我确实在GCP堆栈驱动程序上设置了正常运行时间检查以监视TCP端口3306,并且如果我通过在IP地址范围为0.0.0.0/0的端口3306中打开防火墙来设置GCP中的防火墙规则,则可以正常工作的机器人程序尝试攻击我们的MySQL服务器。
有人知道堆栈驱动程序运行正常运行时间检查的IP范围是什么吗?这样我就可以加入防火墙规则了。
谢谢
答案 0 :(得分:2)
Google Cloud通过TXT DNS资源记录发布IP地址范围。
[2018年12月18日更新]。 Google现在发布一种获取StackDriver IP地址的方法:
client = monitoring_v3.UptimeCheckServiceClient()
ips = client.list_uptime_check_ips()
print(tabulate.tabulate(
[(ip.region, ip.location, ip.ip_address) for ip in ips],
('region', 'location', 'ip_address')
))
Getting uptime-check IP addresses
[结束更新]
Google更改了IP地址,因此您将需要一个自动化的工具来处理更新。下面我展示了获取CIDR块的手动方法。在实践中,我将用Python编写一个Cloud Function来处理此列表,然后更新防火墙规则集。
我的信息来源是Google Qwiklabs。我是从其中一个实验室记录下来的-我不记得是哪个实验室的。
nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8
这将返回TXT记录:
usercontent.com 8.8.8.8
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
_cloud-netblocks.googleusercontent.com text =
"v=spf1 include:_cloud-netblocks1.googleusercontent.com include:_cloud-netblocks2.googleusercontent.com include:_cloud-netblocks3.googleusercontent.com include:_cloud-netblocks4.googleusercontent.com include:_cloud-netblocks5.googleusercontent.com ?all"
最后一行包括许多其他记录,以_cloud-netblocks1.googleusercontent.com
nslookup -q=TXT _cloud-netblocks1.googleusercontent.com 8.8.8.8
这将返回您感兴趣的信息块。请注意,您需要对上面返回的每个_cloud-xxxx
记录重复此操作。
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
_cloud-netblocks1.googleusercontent.com text =
"v=spf1 include:_cloud-netblocks6.googleusercontent.com include:_cloud-netblocks7.googleusercontent.com ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21 ?all"
注意上面的最后一行。它包含多个CIDR块。重复上述操作。
ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:108.59.80.0/20 ip4:108.170.192.0/20 ip4:108.170.208.0/21