服务器安全组教程:从零配置云服务器入站出站规则
安全组是云服务器最外层的一道虚拟防火墙,用来控制哪些流量能进入服务器、哪些流量能从服务器出去。
如果你刚买完云服务器却发现网站打不开、SSH 连不上,或者数据库端口暴露在公网,问题大概率就出在安全组规则上。
这篇服务器安全组教程按入站、出站两个方向拆解配置步骤,并给出验证命令和排错清单,零基础也能直接照做。
先分清入站规则和出站规则
安全组规则分成两个方向,理解它们才能配得对:
- 入站规则:控制外部访问服务器的流量。比如你从本地电脑 SSH 登录服务器、用户访问网站 80 端口,都属于入站。
- 出站规则:控制服务器主动访问外部的流量。比如服务器下载软件包、调用第三方 API、发送邮件的 SMTP 请求。
大多数云平台默认出站是全放行的,入站只放行少量端口。
配置服务器安全组时,先想清楚“谁要访问谁”,再决定加在哪个方向。
配置前的准备
动手改规则前,确认三件事:
- 你已经知道服务器的公网 IP 和要放行的端口号。
- 你清楚自己当前的公网出口 IP。在本地终端执行:
curl ifconfig.me
记下返回的 IP,后面限制 SSH 来源会用到。
- 如果服务器上装了宝塔面板或 iptables、firewalld,先确认系统内部防火墙状态,避免和安全组规则互相打架:
sudo systemctl status firewalld
sudo iptables -L -n
云安全组和系统防火墙是两层独立过滤,任何一层拦截都会导致连接失败,排错时要一起看。
分场景添加安全组规则
不同云厂商控制台入口名称略有差异,通常在“云服务器 ECS / 轻量应用服务器 → 安全组 → 配置规则”路径下。
以下按常见建站场景说明。
放行 Web 服务端口
要让外部访问网站,需要放行入站 80(HTTP)和 443(HTTPS):
- 方向:入站
- 协议类型:TCP
- 端口范围:80/80 和 443/443
- 授权对象(源):0.0.0.0/0
0.0.0.0/0 表示允许所有 IPv4 地址访问,公网站点通常这么配。
如果只想让公司内网访问,就填内网网段。
限制 SSH 来源 IP
SSH 默认 22 端口如果对全网开放,容易被暴力破解。
更稳妥的做法是只允许自己的固定 IP:
- 方向:入站
- 协议类型:TCP
- 端口范围:22/22
- 授权对象:你的公网 IP,写成
1.2.3.4/32
/32 代表只匹配这一个 IP。
如果你家里是动态 IP,可以退一步放行一个运营商网段,或者改用密钥登录加改端口来降低风险。
关闭数据库公网端口
MySQL 3306、Redis 6379 这类端口不建议对公网开放。
正确做法是只允许应用服务器所在的内网 IP 访问:
- 方向:入站
- 协议类型:TCP
- 端口范围:3306/3306
- 授权对象:应用服务器的内网 IP,如
172.16.0.10/32
如果数据库和网站跑在同一台机器上,这些端口根本不需要出现在安全组里,本地回环访问不走安全组。
避坑指南
改安全组时最容易踩的几个坑:
- 规则顺序:部分平台按优先级匹配,拒绝规则可能覆盖允许规则。加规则前先看有没有冲突的拒绝项。
- 授权对象写错:把
0.0.0.0/0当成“只允许本机”,它其实是允许所有 IP。 - 改完不生效:安全组规则通常即时生效,但如果你改的是系统内 firewalld,需要
sudo firewall-cmd --reload重载。 - 把自己锁在外面:限制 SSH 来源前,务必确认新 IP 能连上再保存,否则可能失去远程登录能力。
- 只放行 TCP 忘了 UDP:DNS、部分游戏或 VPN 服务需要 UDP,按业务实际协议选择。
验证规则是否生效
配好规则后,用下面两种方式确认。
在本地电脑测试端口连通性(把 IP 换成你的服务器公网 IP):
nc -zv 1.2.3.4 80
nc -zv 1.2.3.4 443
返回 succeeded 说明端口可达。
如果超时,先检查安全组入站规则,再登录服务器看服务是否在监听:
sudo ss -tlnp | grep -E ':80|:443|:22'
输出里能看到对应端口和进程,说明服务正常;
如果服务没起来,问题在应用层而不在安全组。
常见问题
网站打不开但 SSH 正常,
先查什么? 先确认 80、
443 是否在安全组入站规则里放行,
再用 ss -tlnp 看 Web 服务是否监听在 0.0.0.0 而不是仅 127.0.0.1。
安全组放行了还是连不上,可能是什么原因? 检查服务器系统防火墙(firewalld/iptables)是否也放行,以及云平台是否有独立的网络 ACL。
多层过滤中任意一层拦截都会失败。
出站规则需不需要限制? 一般保持默认全放行即可。
如果出于合规要求收紧,至少要放行 DNS 的 53 端口和系统更新的 HTTP/HTTPS,否则服务器可能无法解析域名或安装软件。
安全组配置的核心思路是最小放行:只开业务真正需要的端口,来源尽量限定到具体 IP 或网段,数据库等敏感服务不对公网暴露。
按本文场景配完规则后,用 nc 和 ss 两条命令做一次验证,基本就能覆盖建站和日常运维的常见需求。
后续如果调整服务端口,记得同步更新安全组,避免出现“服务正常但外部访问不了”的情况。