文章资讯 / 云服务器 / 服务器安全组配置:阿里云安全组只开放80/443/22端口的最小权限策略

服务器安全组配置:阿里云安全组只开放80/443/22端口的最小权限策略

发布时间: 分类:云服务器 作者:188mi 来源:互联网 阅读:164

阿里云安全组的最小权限策略,本质是把入方向规则收敛到 80、443、22 三个端口,其余一律拒绝,再用授权对象和优先级把风险压到最低。下面按操作顺序拆解整个配置过程。

先搞清楚安全组在拦谁

安全组是绑在 ECS 实例上的虚拟防火墙,工作在实例外层,流量还没进到操作系统就先被过滤一遍。它有两个方向:入方向管外面进来的请求,出方向管实例主动发出去的请求。每条规则由四要素决定——协议类型(TCP/UDP/ICMP/GRE)、端口范围、授权对象(CIDR 网段或另一个安全组 ID)、优先级(1–100,数字越小越优先)。

关键点是默认拒绝:没有匹配到任何允许规则的流量直接丢弃,不需要你写"拒绝所有"这条兜底规则。所以最小权限的做法不是去加拒绝规则,而是把允许规则压到最少。写一条"拒绝 0.0.0.0/0"反而容易和后面的允许规则打架。

另外要分清安全组和系统防火墙。安全组在云平台侧,firewalld、ufw、iptables 在操作系统侧,两层是串联关系。安全组放行了 80,系统里 ufw 没放行,请求照样进不来。排查"端口不通"时,两边都要看。

先规划:哪些端口真的需要开

在动手点控制台之前,先把这张表列出来,比开着控制台边想边加效率高得多:

  • 80(HTTP)、443(HTTPS):面向公网提供网站服务,授权对象填 0.0.0.0/0;
  • 22(SSH):只给运维入口,授权对象填自己办公网的固定公网 IP,写成 203.0.113.7/32 这种精确到单 IP 的形式;
  • 数据库端口(3306、5432、6379、27017):默认不对公网开放,需要时只授权给应用服务器的内网 IP 或安全组 ID;
  • 其他业务端口:能在内网解决的就不走公网,必须走公网的用非默认端口加 IP 白名单。

原则一句话:能不开就不开,能只对内网开就不对公网开,能限定来源就不写 0.0.0.0/0。被挖矿、被爆破的实例,问题大多出在 22、3306、6379 这几个端口对全网开放。

流程节点:在控制台落地这套规则

登录阿里云控制台后,路径是 云服务器 ECS → 网络与安全 → 安全组 → 创建安全组。选择实例所在的专有网络 VPC。安全组类型可以选"普通安全组"或"企业安全组",企业安全组规则容量更大、支持组内互通,中小站群用普通安全组通常就够。

创建完进入"配置规则",先看入方向。默认可能带一条放行 22 的模板规则,来源往往是 0.0.0.0/0,这条必须改。逐条添加:

  1. 协议类型选自定义 TCP,端口范围 80/80,授权对象 0.0.0.0/0,优先级 100;
  2. 协议类型选自定义 TCP,端口范围 443/443,授权对象 0.0.0.0/0,优先级 100;
  3. 协议类型选自定义 TCP,端口范围 22/22,授权对象改成自己的固定公网 IP(写成 你的公网IP/32),优先级 100。

端口范围字段可以填单端口,也可以填区间,比如 8000/8010 表示这一段全开,但不要用"全部端口"那种选项。ICMP 也建议只对运维 IP 放开,否则容易被人拿来探测存活主机。

如果实例绑定了多个安全组,规则是取并集:只要任一安全组放行了某个端口,流量就能进来。所以别图省事挂一堆安全组,挂一个精确定义好的更可控。

高危口的额外处理

22 端口是最容易被扫的,光做 IP 白名单还不够,建议再叠几层:

  • 改用密钥对登录,在控制台"密钥对"里创建并绑定实例,同时在 sshd_config 里设 PasswordAuthentication no 关掉密码登录;
  • 改默认端口,把 Port 22 换成高位端口,安全组同步放行新端口;
  • 只允许跳板机访问,生产实例的安全组来源填跳板机的安全组 ID,而不是某个固定 IP;
  • 机器数量超过几台就上堡垒机,统一收口比逐个维护白名单靠谱。

这些做完后,22 的入方向规则可以收得比标题说的更紧——只对跳板机或运维网段开放。

出方向与优先级:容易漏的两块

出方向默认允许全部,对大多数业务保持默认即可。但如果担心实例被入侵后往外发数据,可以收紧出方向。收紧时注意别把必要流量一并堵死:DNS 的 53、NTP 的 123、系统更新的 80/443、以及业务要连的数据库端口,都可能被出方向规则拦住。

优先级方面,数字越小越优先,取值 1–100。同一方向、协议相同且端口有重叠时,按优先级决定哪条先生效。一般把放行规则统一设 100 就行,除非有明确的拒绝规则要插在前面。注意拒绝规则里如果写了 0.0.0.0/0,会把后面的允许规则全覆盖掉,这是新手最容易踩的坑。

改完之后怎么验证

配置改完别急着关页面,按顺序验一遍:

  1. 从外网用 nc -zv 目标IP 80 或 telnet 目标IP 443 测端口是否可达;
  2. 从自己办公网 SSH 连一次,确认白名单生效,再切到手机热点(不同出口 IP)连一次,应当被拒绝;
  3. 在实例里执行 ss -tlnp,确认服务真的在监听对应端口,避免"安全组开了但服务没起";
  4. 翻一遍安全组规则和变更记录,确认没有残留的 0.0.0.0/0 入方向规则。

日常维护上,可以配合云安全中心或 VPC 流日志做异常流量告警;新增业务时先想清楚端口归属,别临时开一条大范围规则转头就忘了删。安全组是长期演进的,定期回头审一遍规则列表,比一次性配完再也不看有用得多。

相关工具与阅读

  • DNS解析查询:确认域名解析是否指向这台 ECS 的公网 IP,排查"安全组放行了但访问不到"的第一站。
  • 百度收录批量查询:站点上线后跟进收录情况,判断 80/443 是否真的对公网可用。
  • WHOIS查询:核对域名状态与到期时间,避免服务器配好了域名却掉了。
  • 188CMS 站群程序:多站部署场景下,安全组与站群目录权限需要一起规划。