很多朋友第一次在腾讯云上搭个人博客,最头疼的不是装环境,而是安全组怎么配:一不小心把 SSH 关了连不上,要么就是 80、443 没开,网站死活打不开。这篇文章就用“个人博客”这个具体项目,一步步带你把安全组配好,既安全,又不影响你自己访问。
如果你还没买云服务器,可以先通过 腾讯云优惠链接 看看活动机型,选好配置再跟着下面的步骤操作,会更省心。
一、先搞清楚:安全组到底管什么
你可以把安全组理解成“云上自带的防火墙”,它只管“谁能访问这台云服务器、能访问哪些端口”,不负责系统内部账号密码、网站程序漏洞这些事。
安全组规则分两种:
- 入方向:别人访问你服务器的流量,比如浏览器访问你的博客、你用 SSH 登录服务器。
- 出方向:你服务器访问外部的流量,比如服务器去下载软件、访问数据库。
默认情况下,腾讯云安全组的规则是:入方向全部拒绝,出方向全部允许。也就是说,刚买好的服务器,外面是访问不了的,但服务器自己可以访问外网。我们要做的,就是在“入方向”按需开放端口,同时避免把不该开放的端口暴露给所有人。
二、个人博客常见访问需求
为了不搞错,我们先把个人博客项目会用到的访问场景列出来:
- 你在自己电脑上用浏览器访问博客,比如
http://你的公网IP或https://你的域名。 - 你在自己电脑上用 SSH 登录服务器,部署代码、重启服务,默认是 22 端口。
- 你偶尔用
ping命令测试服务器网络是否通。 - 如果你的博客后台有管理入口,比如
/admin,希望只有你自己能访问。 - 服务器需要访问外部,比如从软件源下载更新、连接外部数据库等。
针对这些需求,我们只需要开放对应的端口,并限制访问来源即可。
三、规划安全组:一个博客项目用几个就够了
对于个人博客这种小项目,建议按“用途”来划分安全组,而不是所有服务器都用一个。比如:
- sg-web:专门给博客 Web 服务器用,负责 80、443 端口的入方向访问。
- sg-ssh:专门给运维管理用,只开放 22 端口,并且限制访问来源为你的固定 IP。
这样做的好处是,以后如果博客换了服务器,只需要把新服务器加入对应的安全组就行,规则不用重复配置。而且,当需要收紧权限时,比如关闭公网 SSH 访问,只需要修改 sg-ssh 的规则,不影响博客的正常访问。
在腾讯云控制台创建安全组时,可以选择“新建安全组”,然后填写名称和描述,比如“sg-web-个人博客”,选择对应的 VPC(一般默认会有一个),然后就可以添加规则了。
四、动手配置:一步步搭好博客安全组
假设你已经通过 腾讯云优惠链接 买了一台云服务器,并且已经安装好了博客程序(比如 WordPress、Typecho 等),现在开始配置安全组。
1. 配置 Web 访问规则(80、443 端口)
首先,我们需要让外部用户能通过浏览器访问你的博客。对于 HTTP 和 HTTPS 协议,默认端口是 80 和 443,所以我们需要在 sg-web 安全组中开放这两个端口的入方向规则。
在腾讯云安全组规则页面,点击“添加规则”,方向选择“入方向”,协议选择“TCP”,端口范围填写“80”,源地址选择“0.0.0.0/0”(表示允许所有 IP 访问)。同样的方法,再添加一条 443 端口的规则。这样,外部用户就可以通过 http://你的公网IP 或 https://你的域名 访问你的博客了。
这里需要注意,如果你的博客还没有配置 HTTPS,可以先只开放 80 端口,等配置好 HTTPS 证书后再开放 443 端口。另外,如果你希望通过域名访问博客,需要提前在域名解析服务商那里将域名解析到你的云服务器公网 IP。
2. 配置 SSH 登录规则(22 端口)
接下来,我们需要配置 SSH 登录规则,方便你在自己电脑上管理服务器。SSH 默认端口是 22,我们需要在 sg-ssh 安全组中开放这个端口的入方向规则。
但是,为了安全起见,不建议将 22 端口的访问来源设置为“0.0.0.0/0”(允许所有 IP 访问),因为这样会面临大量的恶意登录尝试。正确的做法是,只允许你自己的固定 IP 访问。你可以在“源地址”处填写你电脑的公网 IP,比如“123.45.67.89/32”(/32 表示单个 IP)。
如果你没有固定 IP(比如使用家庭宽带,IP 会经常变化),可以先暂时开放 22 端口的访问来源为“0.0.0.0/0”,但一定要设置一个复杂的 SSH 密码,并且定期更换。等你有了固定 IP 后,再修改规则,限制访问来源。
另外,为了进一步提高 SSH 登录的安全性,可以考虑修改 SSH 默认端口(比如改成 2222),或者使用密钥对登录代替密码登录。这些配置需要在服务器系统内部进行,这里就不详细展开了。
3. 配置 Ping 测试规则(ICMP 协议)
有时候,我们需要用 ping 命令测试服务器的网络是否通。默认情况下,腾讯云安全组可能不允许 ICMP 协议的入方向访问,所以你可能无法 ping 通你的服务器。
如果你需要通过 ping 命令测试服务器网络,可以在 sg-web 安全组中开放 ICMP 协议的入方向规则。在添加规则时,方向选择“入方向”,协议选择“ICMP”,源地址选择“0.0.0.0/0”(或者你自己的固定 IP)。这样,你就可以用 ping 命令测试服务器的网络连通性了。
不过,需要注意的是,ping 命令会暴露你的服务器 IP,可能会引来一些不必要的扫描和攻击。如果你不需要经常 ping 服务器,建议关闭 ICMP 协议的入方向规则,以提高安全性。
4. 配置后台管理入口规则(可选)
如果你的博客后台有管理入口,比如 /admin,并且你希望只有你自己能访问,可以单独配置一条规则,限制访问来源为你的固定 IP。
比如,假设你的博客后台使用 8080 端口,你可以在 sg-web 安全组中添加一条入方向规则,协议选择“TCP”,端口范围填写“8080”,源地址填写你自己的固定 IP。这样,只有你自己的电脑可以访问博客后台,其他人即使知道后台地址,也无法访问。
需要注意的是,如果你的博客后台和博客前台使用同一个端口(比如都是 80 端口),可以通过 Nginx 或者 Apache 配置虚拟主机,根据域名或者 URL 路径来区分前台和后台请求,然后只对后台请求限制访问来源。
5. 配置出方向规则(默认允许即可)
前面我们提到,腾讯云安全组的默认出方向规则是全部允许,也就是说,服务器可以访问外部的任何 IP 和端口。对于个人博客项目来说,这个默认配置已经足够,不需要额外修改。
不过,如果你需要限制服务器访问外部的资源(比如只允许访问特定的软件源,或者禁止访问某些网站),可以在安全组中添加出方向的拒绝规则。比如,你可以添加一条出方向规则,协议选择“TCP”,端口范围填写“80,443”,目的地址填写“0.0.0.0/0”,策略选择“拒绝”。这样,服务器就只能访问外部的 80 和 443 端口,无法访问其他端口。
需要注意的是,出方向规则的优先级比入方向规则低,所以如果有允许的规则,拒绝的规则不会生效。因此,在配置出方向规则时,需要仔细考虑规则的优先级和顺序。
五、常见问题排查:安全组配好了但访问不了
有时候,安全组规则配置好了,但还是无法访问博客,这时候需要排查一下问题。常见的原因有以下几种:
- 安全组规则配置错误:比如端口号填写错误、源地址设置不正确、协议选择错误等。可以仔细检查安全组规则,确保配置正确。
- 服务器内部服务未启动:比如博客程序没有启动、Nginx 或者 Apache 没有启动等。可以通过 SSH 登录服务器,使用
ps aux | grep nginx或者systemctl status nginx等命令检查服务状态。 - 域名解析问题:如果通过域名访问博客,需要检查域名解析是否正确,是否已经解析到你的云服务器公网 IP。可以在本地电脑上使用
nslookup 你的域名或者ping 你的域名命令检查域名解析结果。 - 服务器防火墙问题:除了安全组,服务器系统内部也可能有防火墙(比如 iptables、firewalld 等),需要检查系统防火墙规则是否允许对应的端口访问。
如果排查了以上原因,还是无法访问博客,可以在腾讯云控制台的安全组规则页面,使用“安全组规则检测”功能,检测一下安全组规则是否允许你的访问请求。
六、总结:安全组配置的核心原则
通过上面的步骤,我们已经完成了个人博客项目的安全组配置。总结一下,安全组配置的核心原则是:
- 按需开放端口:只开放需要的端口,比如博客的 80、443 端口,SSH 的 22 端口等,其他不必要的端口一律关闭。
- 限制访问来源:对于管理端口(比如 SSH 的 22 端口),尽量限制访问来源为你的固定 IP,避免被恶意登录。
- 按用途划分安全组:不同的用途使用不同的安全组,比如 Web 服务器使用
sg-web,SSH 管理使用sg-ssh,这样便于管理和维护。 - 定期检查和更新规则:随着业务的发展,可能需要调整安全组规则,比如添加新的服务端口,或者收紧访问来源。需要定期检查安全组规则,确保规则符合当前的安全需求。
如果你还没有买云服务器,可以先通过 腾讯云优惠链接 看看活动机型,选好配置再跟着上面的步骤操作,搭建一个安全、稳定的个人博客。