录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

[教程] 给论坛的一些技术性建议

( 38 )
 
[收藏]
-  第 1 页  -

给论坛的一些技术性建议


18
前言

各位音频应用的朋友们,我是2021-3-4加入咱们论坛的。虽然时间不长,总在线时长也才20多个小时,但是还是十分佩服与喜欢这样的圈子。现在的流量基本被微博、抖音等平台圈住了,论坛、个人博客相对式微,也不像10~16年左右的黄金时期了,可是我还是热爱着论坛这样的圈子。我14年第一次真正意义上的加入一个论坛,就是52pojie。当时除了最喜欢去的精品/原创软件区,就属音乐版块了,在音乐版块认识了有才华的时光版主、凝妹子等小伙伴。可惜后来版块关闭了,52选择了关闭这个版块分担一部分压力。然后我又私信原来在音乐版块比较活跃的那些人,问他们还在哪里发歌,得到清风音乐论坛的回复,我又去清风注册了帐号。好景不长,老清风由于一些因素,在一次意外,数据库丢失了还是怎么样,好多用户的帐号没了,上的人也少了。清风转入微信群了,同时运营公众号去了,网站随后也关了。
这几年经常玩VPS,以及看各种教程,也学会了怎么搭建网站程序和一些运维知识。18年的时候建了自己的个人博客,在去年年底,我用phpbb建了个论坛,也邀请了一些以前在52的朋友和自己的同学加入进来,总体来说对服务器的运维也有一点点心得,希望下面的分享能给坛子里的管理们一点帮助。


最近论坛发生了什么?
在早几天论坛无法访问,我想打开网站,出现超时,然后我用ping.pe和ping.chinaz.com等在线工具对论坛ping,发现都是链路超时。为了再次确认,我在本地又用tcpping测试了下,也是无法连通,由此可以推测论坛应该是被DD了,然后被服务器供应商拉进黑洞了。
前天还是什么时候,打开论坛比较卡,有时候会出现500错误,上面写着max_connection什么的东西,应该是超出最大连接数了,由此可以推测论坛应该是被CC了

DD是指ddos,即打网站服务器,一般作用在OSI的L3/L4这两层,一般可以通过UDP等暴力发包方式在短时间内大量消耗目标服务器及其周围的基础设施的网络资源,从而破坏正常的网络服务
CC一般指打网站,作用在OSI的L7层,即应用层。CC可以通过找到网站比较消耗服务器资源的界面,短时间内对其发送大量请求,使目标服务器资源耗尽,从而返回503等错误

论坛的一些不足之处
1. 服务器的选择上
最开始我用在线工具ping论坛的时候,发现论坛的服务器在马来西亚?,然后我查了查这个供应商,推测论坛的管理们为了让大家能够流畅的访问论坛,用的应该是CN2 GIA服务器,但是服务器供应商应该没提供ddos的清洗服务,所以被攻击就拉入黑洞了,这和国内的很多大厂一样。我原来用阿里云的学生机搭建了个求生之路的服务端,忘记隐藏了,直接散播到公网,我从食堂吃完饭回来就收到阿里云短信,服务器被拉入黑洞,解封要24小时。。。

但是国内大厂的高防服务贵啊,而且放国内要备案,很麻烦且缺乏自由度。

站长应该在早几天换了服务器或者加了CDN,我用前面提到的ping工具看到有显示华为云香港等地区,都是离大陆教近的地方,我这里提一句,延迟不代表一切
我曾经用过阿里云的轻量香港,ping基本都在50以下,但是到了晚上丢包75%,打开网站加载很慢,主要是响应要好久

坛子里经常玩服务器的老哥们应该经常会看到vps线路相关的讨论,时不时看到某某vps又绕路了等等。现实情况是运营商不会因为你与某地的物理距离近,就给你就近直连过去。比如,早段时间Azure香港被大量攻击,AZ调整路由,将中国过去的线路调整为绕美,去美国清洗。又比如,我这电信白天直连aws新加坡,下午或晚上就走日本NTT过去了

我用浏览器开发者控制台看了看,感觉音频应用的论坛程序本身就很轻量,感觉对延迟不会非常的敏感,可以考虑美国和欧洲的服务器
美国和欧洲的服务器相对香港、日本等地会便宜很多,而且给的带宽和配置会更给力,因为他们那成本低一些。

我看好多站长搭建Mastodon联邦实例,会用到欧洲的服务器,通常是HZ或者OVH的独服
Hostloc网站是用美国的Cera独服,电信CN2-GIA, 不过独服不便宜,官网最便宜的要150刀每月左右
52的爱盘放在欧洲的OVH存储服务器上,然后用国内CDN缓存

基本上Cera、OVH都是抗D的大厂,提供免费的清洗服务
比如最近几个月大火的斯巴达主机(SpartanHost),回程接的是Cera的Peer, 服务器自带提供20Gb/s的ddos防御

光有防御还不能成为众多国内站长选择的原因,往往还会考虑服务器的线路,以及如何改善国内用户的使用体验
基本回程走电信CN2 GIA、联通AS9929等线路的是比较受欢迎的

总之我给站长的意见就是,服务器选择带防御的(尽量欧洲或美国),然后应用层L7,在nginx上配置WAF, 我后面会说

2. 服务器版本
我怀疑目前网站的服务器版本比较低,还在不在LTS维护期不得而知,而且nginx版本是1.10.2,nginx目前官方的稳定版是1.18.0, 主线版本1.19.9
所以服务器的bug会不会及时修复呢?

3. 没有上SSL
有了h2后,https对网站的访问速度影响不大,而且谷歌开发的http3,也已经提上日程了,部分站点已经支持了。
我看论坛公告有写,近来很多人帐号被盗,都没有可靠的加密层保护数据如何保证论坛用户的隐私以及帐号安全呢?
假设某用户暴露在不安全的网络环境,攻击者分析用户的网络流量,因为http是明文传输,搞不好直接就可以获取到用户帐号密码了

www.audiobar.cn还没上https,我看audiobar.cn貌似已经装了SSL证书了,不过这里要提醒一下,最近openssl爆出了CVE漏洞,如果没有使用openssl 1.1.1k及其以上版本
说人话:不升级 openssl 到 1.1.1-k,默认配置下使用 openssl 的软件(包括 nginx ),恶意构造的请求可以轻松让服务端崩溃。
摘自: Epics of Anti-Censorship

这里又回到了第二点,nginx版本,建议赶紧升级一下或者手动编译最新版本,在服务器终端输入nginx -V,得有这样字样`built with OpenSSL 1.1.1k` 才算安全
建议去官网: https://www.openssl.org/ 下最新版本(目前是1.1.1K)

4. 关闭不必要的端口
https://fofa.so/检测论坛的时候发现3306、3389等端口是开放的一般我们建博客数据库都放在服务器本地的,也不会开放外网访问的,不然可能有爆破和“脱裤”的风险,我查了一下3389 是Remote Desktop,所以咱论坛不会用的是windows服务器吧~(再结合第2点,我有点小担忧)

对攻击防御的一点经验
我主要讲一下我是怎么防ddos和cc的

1. 防ddos
这个得靠服务器供应商,至少不能因为你服务器被打就屏蔽服务器的入口/出口流量。我还在读书,也没什么钱,所以我也买不起上面提及的Cera、HZ、OVH等的独服
我给自己的论坛用的是德国一家口碑还不错的商家-Contabo, 一个月7美元,配置是4 vCores, 8 GB RAM & 200 GB SSD款,unixbench单核跑分800, 算是还行
提供免费的ddos,服务器被D会发邮件给你,我论坛3月37被D过一次





毕竟价钱在这里,被D后,商家会屏蔽大陆访问,得开代**理才打得开,我讲CC之后会用一个配合的方案解决此问题

2.防CC
防CC这也算是最麻烦的,套一般的CDN用处不会很大,假设没有在CDN那一端点拦截的话。
早几个月,腾讯QQ微信因为被看雪论坛大佬逆向发现其会扫描你的AppData下的文件,chrome等浏览器的历史记录也在里面
进一步分析你会发现
腾讯收集的这么多网址都去哪里了呢?原来是用MD5把关键词的内容哈希之后,结合长度做匹配,然后把用户的浏览记录报上去。


当天,看雪论坛就被CC把网站C挂了。有一些网站程序,比如phpbb,(由于设计的原因,得显示实时消息,不会缓存),你访问首页都会查询数据库,这样哪怕你上CDN,由于是动态请求并发GET就可以将你服务器C挂,直接返回503。哪怕上面那样不行,用POST请求即可,只要CDN端不拦截,都会回源,然后还是相当于打在了源服务器上。
有的人可能会问?nginx不是号称百万并发吗?你如果用apache的ab或者wrk或者https://loader.io/这个在线工具来给自己网站(如论坛)测测压什么的,你观察进程,会发现高占用的是数据库查询或者php-fpm, 而nginx worker占用并不高或相对不高
所以防CC一个是源站服务器性能要好,一般指CPU,另一个得在web服务器如nginx上做waf,比如对超出某个请求上线的ip屏蔽一定时间(返回403或503等),拉黑后继续cc你,这时才是nginx百万并发上场的时候

以前也用过nginx的limit_conn和limit_req等命令,但是不是特别好用,由于技术不行,我不知道如何实现自动拉黑ip, 好在前天逛github发现了一个模块,ngx_waf,有自动拉黑cc ip的功能,使用十分的简单且对我这种没啥技术的站长很友好。
至于CC阈值的设定,站长可以用浏览器开发者工具,测试得到1分钟内,访客需要的请求数的一个合理的数值(我推测音频应用论坛请求数200左右足够)
我还写了篇博文记录了一下自己安装和实践的过程:  https://blog.hibobmaster.com/ngx_waf/

综合方案
1. 源站服务器带防御+源站waf
如果不想用CDN的话,可以考虑这样的方案
2. 源站服务器带防御+源站waf+普通CDN
如果CDN没有攻击识别功能,那上不上可能对防御影响不大,可能就是提升点访问速度吧
3. 源站服务器带防御+源站waf+高级CDN
这种情况最好要避免源站ip的泄露,不然效果不会特别好,这里有一篇别人写的文章,关于寻找源站IP以及接入Cloudflare CDN网络后如何防止泄露
52pojie背靠360, 用的是360家的CDN,有waf, 自动识别各种攻击,如果在不知道源站ip的情况,很难打死,除非360顶不住
假设知道了源站ip, 这个时候攻击可能就变成了源站服务器抗D的清洗能力,以及源站的性能能否抵挡住CC了

还有一点,有些论坛备案了的,服务器在国内,我看到好像有个冒牌的音频应用论坛叫audioapp,由于你懂的“墙墙”,海外链路到国内会受影响没那么畅通,此外一般黑产大多用的也是国外的肉鸡来搞事的,国内管得相对严,因此服务器在国内的论坛抗海外的流量攻击“天生”就有优势。

结合我自己论坛的情况说说我用的是什么-源站服务器带防御+源站waf+cloudflare CDN
cloudflare是全球CDN TOP1供应商,也只有这样的大哥才能提供的起免费好用的CDN套餐,算是业界良心,经常玩服务器的兄弟应该知道,假设用户不是面向国内,那真是比较完美的CDN产品。cloudflare提供各种防火墙,网页优化,5s盾,验证码等服务,而且免费套餐也可以用(适合我这种学生党~),海外速度非常的快。
像国内比较知名的站点v2ex.com完全就是用的这个CDN服务。

由于cloudflare与各IDC基本都有合作,基本会有一个ip评分表,即给ip打分,然后根据你在后台设置的security level,是否进行js challenge或验证码challenge。
所以黑产的ip可能一访问你的网站就被CDN先给挡住了, 自然对源站不会有啥影响,在不知道源站ip的情况下更不可能dd了,cloudflare是不可能d死的...

假设你发现源站好卡,看服务器进程发现应该是被人CC了,这个时候你可以手动开启cloudflare 5s盾(i'm under attack),所有通过cloudflare访问你网站的用户都得等5s钟,评分差的用户可能还需要输入验证码。当然也可以写一个脚步,定时检测服务器负载,当超过某一个值时,通过cloudflare api自动开启5s盾

有人说5s盾也可以破,确实,对于这种情况,建议在cloudflare后台设置一个防火墙规则,非中国用户访问一律需要验证码,当网站被攻击时开启这个规则即可。

当然cloudflare CDN在中国大陆访问因地区差异,不是所有地区都能得到较好的使用体验,因此我也只是在被攻击的时候才点亮cloudflare的云朵(国内用户也可以访问了,解决了上面抗d时,服务器供应商清洗屏蔽中国的问题)。
或者通过cloudflare partner以cname的方式接入,然后在alidns或dnspod配置海外DNS解析走cloudflare,国内直连源站

由于我资金有限,选的德国服务器国内用户晚Shang-访问可能速度不理想,我是这样解决的
因为访问速度主要看回程
一些服务商提供GRE TUNNEL服务,我使用了Olink的德国GRE TUNNEL,国内用户访问论坛时回程走的是联通AS9929,速度比较快。
因此如果站长因为预算问题将服务器选在欧洲或者美国且不是什么特殊线路,可以考虑上这样实惠的GRE TUNNEL
我的套餐是一个月1.6美元,100G的GRE隧道流量,国内用户访问才走隧道,海外用户直接通过源站回程,这样算是一个比较好的折中方案了~
预算充足的话直接上有特殊线路加成的服务器即可,不用像我这样麻烦

有人可能会问你这样做不是暴露源站ip了吗?以及有没有可能服务器端waf的cc检测把cloudflare ip屏蔽了?
服务器端正确配置后
比如坏人A的ip是173.82.xxx.xxx, 那个ip做坏事,cloudflare的回源ip是 1.1.1.1
有一个好人B的ip是119.29.xxx.xxx,cloudflare的回源ip也是 1.1.1.1
那么A会返回503,而B则是正常的2xx或3xx响应
我在和开发者讨论的过程中实践了一下,请参考这个issue: https://github.com/ADD-SP/ngx_waf/issues/29

就算暴露了源站ip, 你要知道cloudflare很大度的将它的全部ip告诉了你
https://www.cloudflare.com/ips/

假设情景如下
极端情况下,攻击者拿了很多肉鸡去cc你,服务器端waf拉黑的速度赶不上攻击的速度,网站还是挂了,这时cloudflare ip地址就派上用场了
我要把非cloudflare ip的访问全部ban掉,即直接返回403,这个时候继续CC你,就是nginx那号称"百万并发"大展身手的时候了
这个时候可以参考这个issue来配置:  https://github.com/ergin/nginx-cloudflare-real-ip/issues/3
我测试过是有效的,非cloudflare ip直接请求你的网站会返回403,而正常用户通过的是cloudflare访问所以不受影响

即:
clients - > cloudflare -> 音频应用 (okay)
attackers |=> cloudflare
attackers -> 音频应用(403 forbidden)


希望我上面分享的内容能给论坛的管理们一些帮助,本人才疏学浅,有不足的地方是肯定的,希望大家多多指正
希望音频应用能越来越好!




本帖最后由 BobMaster 于 21-4-2 12:40 编辑
观众反应
:根本看不懂 居然还认真看完了
:卧槽,不明觉厉啊,虽然看不懂!但是还是要.
:牛逼 专业
:666 认真
:假装看懂了~~
:天书
:看不懂 不过感谢

235
论坛各路大神出动~

207
感谢楼主这么详细的科普。本人大学专业是计算机网络技术方面的,楼主科普得非常详细,很多都说过了。我想补充一些自己的看法:学过网络维护的朋友们都知道,防御是建立在进攻上面的(当然不是主张大家去攻击别人),通过学习,可以知道对方的手段,从而达到更好的维护。CDN可以挡掉约90%的流量攻击,防CC不是它的强项,CC是打页面的,服务商的硬防也十分重要。总之防D,防C都很重要。
一百分不建议开放使用真实IP,因为真的很危险。
经常备份数据是好习惯,遇到对方攻击,第一时间可以去检查日志,看看对方都是用什么手段进行攻击,如此进行防御/反击。遇到顶不住的时候,临时堆资源,对方的攻击都是需要成本,堆到情况稳定下来,立马报警。因为,如果服务器被不法分子控制闹出事情,那么服务器的主人可能会被带走调查。对方一次攻击不容易被抓到现行,需要多次攻击,这样容易留下证据。
PS1:
Windows服务器也没有那么不堪,碰到硬茬绝对是Linux服务器先挂。
PSP:
有的CDN提供商会检测当攻击超过一定量时会直接回源给服务器,害死服务器,至于b哪家的服务d这么坑,我就不敢说了,怕被拉黑。

本帖最后由 爱吃萝卜兔子君 于 21-4-2 13:11 编辑
观众反应

187
Audiobar依然有網路安全的疑慮,臭蟲與攻擊仍在,伺服器的安全必須升級!加油!

1565
我加一个,做一下重定向吧。

有些会员表示改不了头像,可能是论坛做了禁止跨域,即会员用其他指向的域名访问和改头像。而论坛也没有做重定向。

11568
感谢!认真拜读一下,过了这段会整体改变改善一下。
观众反应
:TT还在啊!好熟悉的感觉

308
只要ddos的攻击流量超过了网站的带宽,就不存在防御这个说法。
如果ddos的流量足够大,世界上任何一个联网的服务器都会被攻击到瘫痪。
一个月前,全球知名的几个MMORPG网游遭受大量的ddos攻击,导致玩家掉线、无法登陆游戏等情况。
有的人,不管出于什么样的目的,就是想搞破坏。
升级“防御”需要金钱的投入,也不能将攻击完全杜绝。
一个小建议,如果站长收到某些骇客的私信,要求站长给其所谓的保护费,请不要理会。

18
Tee 发表于 21-4-2 13:49
我加一个,做一下重定向吧。

有些会员表示改不了头像,可能是论坛做了禁止跨域,即会员用其他指向的域名 ...

有其他问题,打开 https://audiobar.cn ,会出现混合内容,即图片以及一些网页样式没有正确的使用https,这可能跟服务器的设置有关,我使用firefox或者chromium连登陆都做不到~~~(已装https everywhere解决了)

不知道源站web服务器有没有正确的配置SSL呢?
如果配置了,我推测和论坛程序有关
站长最好检查一下discuz的后台,看看有没有http的字样
有的话,将http->https
毕竟样式还是用的http,我估计就是网站程序的问题
phpbb也必须手动在程序后台设置好是否用的是https


记住如果配置了SSL且决定好域名后,最好做下跳转
假设是给audiobar.cn上SSL,那么最好将www.audiobar.cn跳转到https://audiobar.cn
我看谷歌首页目前收录的是 http://www.audiobar.cn

总之合理设置,不要让权重丢了~ 本帖最后由 BobMaster 于 21-4-2 17:49 编辑

18
爱吃萝卜兔子君 发表于 21-4-2 13:07
感谢楼主这么详细的科普。本人大学专业是计算机网络技术方面的,楼主科普得非常详细,很多都说过了。我想补 ...

如果可以我也不想使用源站ip裸奔,毕竟服务器配置说不上很高。
可是没钱。。。
而且通常情况下CDN的流量要钱,万一有人想恶心一下,专门刷流量这不得哭。。。

虽然cloudflare CDN可以免费用(一般只要你不超过10T流量就没事)
又想给国内用户比较好的访问体验,只能做取舍

此外并不是用上了CDN别人就拿不到源站的ip了,假设论坛的服务器了邮局,开了一些特征明显的端口如25、465,以及有些论坛支持远程头像等这些也可能导致源站ip泄露。
所以要保护源站ip从最开始就要考虑很多方面以及细节。

windows服务器确实在市场上有很多份额,可是大部分漏洞的维护是靠微软工程师,而Linux大多是靠社区维护,首先攻击面上windows服务器大一些。
我还记得永恒之蓝爆发的时候,我们学校直接屏蔽相关端口,等微软的补丁下来。
所以我才希望站长关注一下windows系统版本还在微软的支持范围吗?(LTS)
同时有没有打补丁之类的,以及相关的web软件是否修复了漏洞等

这里并没有说windows server不好的意思哈,像masuit.com的站长他就用的windows服务器

------
报警一说,这个主要是没有备案,比较麻烦。
总之还是要第一时间截图保留证据,同时将日志之类的保存到本地用于分析
第二在后台将服务器关机







14159
楼主太强了。

3446
虽然看不懂,但是牛逼

207
哈哈

207
BobMaster 发表于 21-4-2 16:17
如果可以我也不想使用源站ip裸奔,毕竟服务器配置说不上很高。
可是没钱。。。
而且通常情况下CDN的流 ...

CDN烧钱是真的,条件有限的情况就是钱和速度的抉择。不过CDN配一下,确实能阻止不少简单的破坏。确实,总之碰到不怀好意的人,还真难搞。没有完美的代码,防君子,不防小人。win和linux各有优劣。一般人会选择攻击win服务器,不过大手子一般更注重研究Linux漏洞,惹了大佬,一般情况是Linux先倒下。那些脚本小子就算了。1202年了,只要管理员善于维护,经常升级打补丁的情况下,他们已经没有什么胜算了。

839
太强了

675
论坛里藏龙卧虎啊。指不定是哪方面的大神现身。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索