最近论坛里看到有人问"我的服务器天天被扫端口怎么办"、"网站访问日志里一堆奇怪的请求是怎么回事"之类的问题。作为一个同样被折磨过的人,我来分享下自己踩过的坑和总结的一些经验。
相信不少人和我一开始一样觉得:"我就一个小网站,谁会来攻击我啊?" 但现实是,现在的攻击基本都是自动化的,根本不在乎你是大站还是小站,反正扫一遍又不费什么事。
先说说我自己遇到的情况。
在 Cloudflare 上部署了个特别简单的展示站,就两个页面,结果上线第一天就被扫了。
我的 worker 只处理/
和/logs-collector
两类请求, 但仍然面临着持续的扫描攻击, 先来看看都是些什么奇怪的访问。
一开始其它的 URL 全部返回404
, 上线当天就有香港主机开始扫, 源 IP 天天换, 但大部分是香港的. 由于有些用户是香港 IP 访问, 也不能直接 ban 地区.
以上这些 URL 全都是怀有各种目的的尝试, 这些契而不舍的尝试基本上都是为了寻找漏洞.
但这样扫占用 CF 免费请求数, 污染我的日志, 也不是什么好事。
修改将所有其它请求都返回200
, 加上Host on Cloudflare Worker, don't waste your time
这样被扫的稍微少了点, 虽然我不知道是否有因果关系。
如果是运行在自己主机上的服务, 天天被这样扫, 而服务一直不做安全更新, 迟早有被扫到漏洞的一天。
对攻击者来说, 就是每天定时不停的尝试, 能攻破一个是一个, 基本都是自动化的, 设备和时间成本都不高。
说白了就是有人在用工具到处扫描,看看能不能碰到漏洞。一开始我还天真地觉得返回 404 就完事了,结果发现这帮人是机器人,根本不在乎你返回什么,该扫还是扫。
说实话,最安全的方式就是不要把服务直接暴露在公网上。你们肯定见过很多常用的子域名:
这些都是攻击者最爱尝试的。所以建议:
自己用的服务就别往外网放了
非要远程访问的话
赛博佛祖Cloudflare
就不多说了, 在个人折腾者找到真正有商业价值的项目之前, 它肯定一直都是免费的。
国内的的就是阿里云ESA
, 两个我都在用, 阿里云的免费用 3 个月, 正常是一个根域名 10 元一个月限 50G 流量, 在 CF 全免费面前我就不多做介绍了。
安全服务普遍比较贵, 不做保护的话, 被攻击了损失很大, 如果付费保护就是每天看着直接的"损失"。
边缘安全服务算是一种保险, 非常廉价, 性价比超高的安全服务, 典型的让专业的人做专业的事。
边缘安全主要目的是隐藏自己的真实 IP, 用户访问边缘节点, 边缘节点计算决策是否回源访问真实 IP 。
它的本质就是一个前置的反向代理, 集成了缓存, WAF, CDN, DDoS 防护等功能. 由于用户到服务中间插入第三者, 因此它有一定的概率会造成用户体验下降。
CF 和 ESA 我都在用, 总结来说就是让体验最好的一部分用户体验略微下降, 但是让更多地区的用户体验提升了, 整体来说仍然是非常值得.
这里所有 IP 都是边缘节点的 IP, 我可以放心的公开. 如果是刚起步的业务, 缺少安全方面的投入, 最好使用边缘安全服务, 本建议无广.
说两个我在用的:
Cloudflare:
国内的阿里云 ESA:
这些服务其实就是帮你挡在前面,别人访问的是他们的服务器,看不到你的真实 IP ,还能帮你防各种攻击,挺值的。
自己用的服务:
要给别人用的服务:
边缘安全服务我只知道 Cloudflare 和阿里云 ESA, 有其他推荐的欢迎补充。
最后,这些都是我的个人经验,欢迎各位大佬补充指正。
1
LnTrx 2 天前
境内加 CDN 还是应该慎重,刷流量导致钱包重创的风险难以根治。
搞好本地防火墙和应用安全设置,扫到也不是什么大事。实在想防止暴露,还可以考虑: 1. IPv6 。非常规后缀不太可能遭被动扫到。 2. 通配符证书+非常规子域名。单域名证书可能因为证书透明度被扫到,但通配符证书不可能枚举所有子域,非常规子域名不容易被发现。 |
2
jqknono OP @LnTrx 是的,CDN 风险就是被狂刷流量。我这里推荐的不是纯 CDN ,都是边缘安全计算,它们都号称可以防刷,承担了一部分安全能力,这样就不用自己来做安全了。
|
4
googlefans 2 天前
用虚拟主机,流量大就宕机就行了
|
5
jqknono OP @googlefans 被扫到漏洞就不好了
|
6
googlefans 2 天前
@jqknono 你关闭端口
|
7
kome 2 天前 via iPhone
我这套的 CF 和免费 WAF ,每天都在被扫*.php 、git 相关、wordpress ,一天千把次,而且基本都是微软的 IP ,少部分 amazon 的,还有一些商业 SEO 。我放行了爬虫,但是一些辣鸡商业爬虫们也进来了,在 robots.txt 里面拒绝了,鬼知道他们遵守不遵守。
菜鸡的辣鸡小站,也无所谓有没有人看,别打我就行。 |
8
Track13 2 天前 via Android
我一个 nextjs 的静态博客天天扫.php 路径。也是无语😒
|
9
aero99 1 天前
自己境外搭建了一个电子书服务,域名在 cf ,vps 上关闭了常用端口,但是有时要桌面 rdp 远程,那如何保证安全啊
|
11
JKOR 1 天前
我自用的服务都是双向 TLS 认证,client 端没有证书就打不开。
|
12
gearfox 1 天前
谢谢楼主分享
|
13
jqknono OP @JKOR 双向认证的话, 我理解是不是和 tailscale 有点相似?
是这个吗? https://www.cloudflare.com/zh-cn/learning/access-management/what-is-mutual-tls/ |
14
JKOR 1 天前
@jqknono #13 是 mTLS ,就是互相验证。客户端证书和网站的 SSL 证书原理相同,但过程相反。SSL 证书是客户端像服务器验证身份,这个是服务器也会向客户端验证证书,无证书则拒绝握手。
|
15
4grep 1 天前
www.yunaq.com 这家也有免费版本,免费 waf 和 cdn ,一直在用还不错
|