先讲个真事儿。前阵子一哥们儿找我,说他新买的服务器上搭了个网站,本机curl都正常,手机一访问就转圈,问我是不是被墙了。我说你八成是忘了安全组,他一脸懵:安全组?那是个啥?后来一查,果然是默认只放行了22和3389,80端口压根没开。这种事儿我遇到没有一百次也有八十次了,真的。

安全组到底是个啥,跟防火墙啥关系
简单说,安全组就是你云服务器门口的一道闸,流量进不进门,它说了算。它跟服务器里装的firewalld、iptables是两码事——安全组在云平台那层就先拦一道,系统防火墙是第二道。两道都得放行,你服务才通。很多人只改系统防火墙,忘了安全组,或者反过来,反正就是差一层,然后抓瞎半天。
入方向和出方向,先分清再动手
安全组分入方向和出方向。入方向管外面进来的流量,比如用户访问你的80端口网站;出方向管你服务器往外发,比如yum更新要连外网。绝大多数云厂商出方向默认全放,所以你平时折腾的其实主要就是入方向。记住这句:你只要记住给“别人访问你”放行就对了。
放行端口长这样,照着填就行
以主流云厂商控制台为例,路径差不多都是:实例列表→找到你的机器→安全组/防火墙→添加规则。要填的就三样:协议、端口、来源IP。做网站的话,这几条基本跑不掉:
入方向 TCP 80,来源 0.0.0.0/0,这是HTTP;开了HTTPS就再加一条443;SSH的22端口我劝你千万别也写0.0.0.0/0,把来源限制成你办公网的IP,不然天天有人拿脚本爆你密码,日志能刷好几页,看着都烦。
0.0.0.0/0 别乱用,内部服务更别开公网
0.0.0.0/0意思是对全世界开放。80、443这种网站端口没办法,必须开;但像MySQL的3306、Redis的6379,你要是也图省事写个0.0.0.0/0,那就等于把数据库钥匙挂门口了。我见过不止一个站,Redis没设密码还全公网开放,被人家扫到直接拖库,那叫一个惨。内部服务只放行应用服务器的内网IP,或者直接走内网别碰公网。
配完还是不通?按这个顺序查
安全组放行后还不通,先别急着重装系统。大概率是这么几个原因:规则加错实例了(尤其是账号里好几台机器的时候);默认拒绝的规则优先级更高,把放行顶掉了;或者改完忘了等几秒,有些平台规则生效是有那么一丁点延迟的。测试端口用telnet IP 端口或者nc,别老用ping——云服务器好多默认禁ping,ping不通不代表端口不通,这个坑我当年也踩过。
新手最容易犯的仨低级错误
第一个,规则加错机器。账号里好几台服务器的时候,一眼没看仔细,把规则加到隔壁那台上去了,然后在这台机器上折腾半天,能通才怪。加规则之前先对着实例ID和IP核一遍。第二个,放行了但是忘点保存或者提交,控制台里规则列表看着有,实际没生效,这毛病我见得太多了。第三个,改完不测试就甩手,第二天用户来问网站咋打不开,你还一脸无辜。改完马上telnet测一下端口,通了才算数。
对了,还有个小细节,安全组规则生效是有点延迟的,但也就几秒的事儿,别刚点完保存就急吼吼地说还是不通,给人家一点反应时间嘛,哈哈。
还有种情况得说一嘴,就是你改了安全组,但服务器里还装着宝塔之类的面板,面板自己的防火墙也得放行一遍,两道门都开了才算真通。之前帮人排查,安全组加了,系统防火墙也关了,结果面板里还拦着一道,你说气人不气人。反正记住:云平台安全组、系统防火墙、面板防火墙,三层都过一遍再下结论。
最后说点掏心窝的话
安全组这玩意儿,规则加多了以后记得写备注,不然三个月后你自己都看不懂哪条是干嘛的。原则就一句话:默认拒绝、最小开放、管理端口限来源。把这十二个字记牢,你踩安全组的坑的次数,能直接砍掉八成。行了,就说这么多,赶紧去控制台看看你的安全组吧,说不定网站早就通了,就差这一下。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!