第一次配华为云安全组
我的小网站第一次在华为云上跑起来那天,我高兴得有点飘。页面能打开了,接口能通了,同学在群里发了个链接说能访问,我立刻觉得,这事成了。可是当晚调试的时候出了个小插曲:我换了台电脑,死活连不上服务器,查了半天,才发现是防火墙规则把我的新连接拦住了。我当时脑子一热,做了一个后来想起来都后怕的决定——干脆把端口全放开,先让它能用再说。
于是那一晚,我的服务器就像一间大门敞开的宿舍,任何人路过都能推门进来试试。我自己是睡了个安稳觉,第二天早上打开登录日志一看,心一下子凉了半截:密密麻麻的陌生登录尝试,来自世界各地的地址,一遍遍地试 root、试 admin、试各种常见的用户名和密码。它们没有成功,因为我设置的密码还算复杂,但那种感觉很不好,就像你早上起床发现,昨晚有几百个人轮流拧过你家的门把手,虽然门没被拧开,可你再也不敢不锁门了。
那天我才认真去查,云服务器的这道“门”到底该怎么管。在华为云上,管这件事的东西叫安全组。说得直白一点,安全组就是给你的服务器请的一个门卫,它站在服务器前面,先看一眼每个想进来的人:你走的是哪扇门,也就是哪个端口;你是从哪里来的,也就是哪个地址;这两样对得上规则,才放行,对不上,就直接拦在门外。服务器自己装的防火墙也很重要,但安全组是更靠外的一层,先过它这一关,再谈别的。
明白了这个道理,我就动手给自己的服务器重新立规矩。第一步是先搞清楚,我的小网站到底需要开哪几扇门。说实话,数下来少得可怜:80 端口是给普通网页访问的,443 是给 HTTPS 的,这两个是给所有访客准备的,必须对外开着;22 端口是给我自己远程登录用的,只应该给我一个人开;除此之外,我的网站暂时什么都不需要了。就这么几扇门,之前我却把整面墙都拆了,想想真是后怕。
第二步是进控制台找到安全组。在华为云控制台里找到我的那台云服务器,点进它的安全组设置,就能看到一张入方向规则表。每一行就是一条规矩,写着协议、端口和来源地址。我先把之前那条“全部放行”的规则删掉,然后一条一条重新加:80 和 443 放给所有人,来源写 0.0.0.0/0;22 只放给我自己的地址。写到这里我还学到一个小细节:来源地址不是写得越宽越好,写自己的公网地址才是最稳的,虽然宿舍和学校的网络地址偶尔会变,变了就回来改一下,麻烦一点,但比把登录口敞给全世界强得多。
最让我出冷汗的,是数据库那条。我的数据库端口之前也跟着一起放开了,虽然数据库账号密码别人不知道,可这就等于把保险柜放在了大门口旁边,还贴了张纸条说“里面有东西”。正确的做法是根本不给数据库开对外端口,网站程序和数据库都在同一台服务器或者同一个内网里,它们自己内部说话,不需要经过外面的大门。我把数据库的对外规则删掉之后,网站一点影响都没有,因为访客从来就不需要直接连数据库,他们只需要通过网页和接口拿结果。这一条改完,我才算真正松了口气。
改完规则,我没有立刻关掉页面去睡觉,而是老老实实做了几轮测试。先在浏览器里打开网站,确认页面和接口都正常;再从自己的电脑上远程登录一次,确认 22 端口只对我放行;然后请同学从他的网络帮我打开网站,确认访客不受影响。测试都通过了,我才敢说这套规则是能用的。后来我又养成了一个习惯:每次改完安全组,都顺手把规则截图或者记下来,写清楚这条是干什么的、为什么要开,免得一个月后自己回来看,像看别人的配置一样一脸茫然。
还有几个小坑,也是我踩过或者差点踩过的,顺手分享一下。第一,改完规则如果发现网站打不开了,别急着把全部端口再放开,先检查是不是自己把 80 或者 443 误伤了,一条一条对,往往就是一处手滑。第二,远程登录的端口和密码登录这两件事要分开看,安全组管的是“谁能敲门”,密码强度管的是“门被敲开之后能不能进来”,两道防线都要有,不能只靠一道。后来我还把密码登录换成了密钥登录,相当于把门锁从普通钥匙换成了更难配的锁芯,这一步不难,却安心很多。第三,安全组是可以复用的,一台服务器一套规矩,网站服务器和数据库服务器不应该共用同一套,访客能进的地方和只放自己人的地方,本来就该分开。
这件事之后,我对“上云”这件事的理解也变了一点。以前我觉得上云就是把代码丢到服务器上,能跑起来就行;现在我觉得,能跑起来只是第一步,让它安安稳稳地跑,才是真正要学的东西。安全组听起来像个很专业的名词,实际做起来就是几条规则,花不了十分钟,但它决定的是,你的服务器是夜夜有人试着拧门把手,还是安安静静地只接待你想接待的人。
- 点赞
- 收藏
- 关注作者
评论(0)