买了云服务器,安全组和防火墙这两个概念经常让人犯晕:一个是云平台控制台里的,一个是服务器系统里的,到底用哪个,两个都要用吗?
先搞清楚两个东西的区别
云平台安全组(Security Group):在云控制台里配置,相当于在数据中心入口就做了过滤,流量根本到不了你的服务器。几乎所有云厂商都有这个功能,也是最推荐的方式。
系统防火墙(iptables / firewalld / ufw):在服务器操作系统里配置,是在系统层面拦截流量。
两者可以叠加使用,也可以只用其中一个。对于大多数普通用户来说,只用云平台安全组就够了,简单直观,不容易出错。
安全组的基本配置思路
安全组的核心原则:默认拒绝,按需开放。
一台Web服务器的基础配置通常是这样的:
| 方向 | 协议 | 端口 | 来源 | 用途 |
|---|---|---|---|---|
| 入站 | TCP | 80 | 0.0.0.0/0 | HTTP |
| 入站 | TCP | 443 | 0.0.0.0/0 | HTTPS |
| 入站 | TCP | 22 | 你的IP | SSH管理 |
| 出站 | 全部 | 全部 | 0.0.0.0/0 | 允许出站 |
注意几个点:
- SSH端口(22)强烈建议只允许你自己的IP访问,不要对全网开放。如果IP不固定,至少也要用密钥认证代替密码
- 数据库端口(3306、5432等)千万不要对公网开放,只允许内网访问
- 不用的端口一个都不要开,能减少攻击面
系统防火墙还要不要开
如果你已经在安全组里做了限制,系统防火墙是锦上添花,不是必须。但有几种情况建议再加一层:
- 服务器上跑着多个应用,想对不同应用做精细化控制
- 需要做端口转发或NAT
- 安全要求比较高,想要双重防护
如果你是Linux新手,建议用ufw(Ubuntu/Debian)或者firewalld(CentOS/RHEL),比直接操作iptables友好很多。
ufw基础用法:
# 开启ufw
ufw enable
# 允许SSH(避免把自己锁在外面)
ufw allow 22/tcp
# 允许HTTP/HTTPS
ufw allow 80/tcp
ufw allow 443/tcp
# 查看当前规则
ufw status verbose
几个常见误区
误区一:开了防火墙网站就访问不了
这是因为忘了开80/443端口。防火墙默认拒绝所有入站,你必须明确允许需要的端口。
误区二:把自己SSH锁在外面了
在云服务器上改防火墙规则要特别小心,如果不小心把22端口封了,就连不上去了。这时候需要用云平台的VNC或串行控制台去修复。预防措施:改规则前先确认22端口的允许规则不会被误删。
误区三:安全组和系统防火墙规则冲突
两者是串联关系,流量要同时通过两层。如果安全组放行了80端口但系统防火墙没放行,一样访问不了。
结论
云服务器必须开防火墙(安全组),这没什么好纠结的。真正需要花心思的是配置要合理:该开的开,不该开的绝对别开,SSH管理口限制来源IP。这几点做到了,安全性就上了一个台阶。