腾讯云轻量服务器安全加固指南:从SSH密钥到防火墙配置
1. 项目缘起:为什么轻量应用服务器需要“二次加固”?
最近在帮几个初创团队做上云迁移和运维托管,发现一个挺普遍的现象:很多朋友在腾讯云上购买了轻量应用服务器(Lighthouse)后,尤其是通过代理商渠道拿到的机器,就直接开始部署应用了。他们普遍认为,既然是从腾讯云官方或正规代理商那里买的,系统镜像应该是“开箱即用”且安全的。这个想法其实存在一个不小的误区。
轻量应用服务器提供的系统镜像,无论是 CentOS、Ubuntu 还是 OpenCloud OS,确实是一个干净、标准的操作系统。但“干净”不等于“安全”,更不等于“配置优化”。它就像一套精装修的毛坯房,水电通了,墙面刷白了,但你要住得舒服、安全,还得自己装防盗门、调整灯光布局、检查水管接口。同样,服务器拿到手,默认的 SSH 端口、弱密码策略(如果使用密码登录)、未配置的防火墙、不必要的服务进程,都是潜在的风险点。尤其是通过代理商购买的服务器,有时会预装一些“方便管理”但来源不明的脚本或监控工具,这些反而可能引入新的安全漏洞。
因此,无论你是个人开发者、小团队运维,还是企业IT,在服务器初始化后,进行一轮系统性的基础配置与安全加固,是必不可少的上云“第一课”。这不仅能堵上最明显的安全漏洞,更能为后续应用的稳定运行打下坚实基础。今天,我就结合最近处理的一台预装了“OpenClaw”管理面板(部分代理商喜欢预装)的腾讯云轻量服务器,来详细拆解从拿到IP地址到完成基础加固的全过程。你会发现,很多操作并不复杂,但每一步都至关重要。
2. 登录前准备:理清入口与认证方式
在开始任何操作之前,我们必须先明确如何登录服务器。腾讯云轻量服务器主要提供两种登录方式:SSH密钥对和密码。我强烈建议,并且本文将基于SSH密钥对的方式进行,这是安全性的基石。
2.1 密钥对与密码的抉择
为什么首选密钥对?原因很简单:它比密码安全几个数量级。密码可能被暴力破解、被键盘记录器窃取、或因复杂度不够而被猜出。而SSH密钥对采用非对称加密,私钥存放在你的本地电脑,从不通过网络传输;公钥放在服务器上。登录时,服务器用公钥挑战你的本地私钥,验证通过即可登录。只要你的私钥文件不泄露,服务器几乎不可能被非法登录。
很多通过代理商购买的服务器,对方可能会直接给你一个随机生成的密码。我的建议是:立即禁用密码登录,并改用密钥对。这是加固的第一步,也是最重要的一步。
2.2 本地环境与工具准备
你需要在本地准备好两样东西:
一个SSH客户端:如果你是 macOS 或 Linux 用户,系统终端自带
ssh命令。Windows 用户我推荐使用PowerShell(Win10及以上自带)或安装Git Bash,它们都包含了完整的 SSH 工具链。图形化工具如PuTTY、Xshell也可用,但本文以命令行操作为主,因为更通用、可脚本化。你的SSH私钥文件:如果你还没有密钥对,可以通过以下命令生成(在本地终端执行):
ssh-keygen -t rsa -b 4096 -C “your_email@example.com” -f ~/.ssh/tencent_lighthouse_key-t rsa: 指定密钥类型为 RSA。-b 4096: 指定密钥长度为 4096 位,安全性更高。-C: 添加一个注释,通常用你的邮箱,方便标识。-f: 指定生成私钥文件的路径和名称。这里示例为在用户目录下的.ssh文件夹中生成名为tencent_lighthouse_key的私钥,对应的公钥文件为tencent_lighthouse_key.pub。
生成过程中会提示你输入一个“通行短语”(passphrase),这是一个额外的保护层,即使私钥文件被盗,没有通行短语也无法使用。建议设置一个强密码并牢记。
生成后,你会得到两个文件:tencent_lighthouse_key(私钥,必须严格保密)和tencent_lighthouse_key.pub(公钥,需要上传到服务器)。
2.3 获取服务器连接信息
从腾讯云控制台或代理商那里,你会获得以下关键信息:
- 服务器公网IP地址:例如
123.123.123.123。 - 默认用户名:通常是
root(Linux系统)或ubuntu(Ubuntu系统镜像)。 - 初始密码或密钥对:如果是密码,记下来用于第一次登录;如果代理商已为你绑定了密钥对,你需要获取对应的私钥文件。
假设我们拿到的是一台IP为123.123.123.123,用户名为root,并已有一个初始密码的服务器。我们的第一个任务就是用这个密码登录,然后上传我们的公钥并禁用密码登录。
3. 首次登录与“OpenClaw”探秘
使用初始密码进行第一次登录:
ssh root@123.123.123.123系统会提示你输入密码,输入代理商提供的密码即可登录。
登录成功后,我建议先做两件快速检查:
第一,检查系统基础信息:
cat /etc/os-release # 查看操作系统版本 free -h # 查看内存使用情况 df -h # 查看磁盘使用情况 top # 查看实时进程(按q退出)第二,检查是否有预装软件(特别是“OpenClaw”):
ps aux | grep -i claw # 查看是否有名为claw的进程 systemctl list-unit-files | grep -i claw # 查看是否有相关服务 find / -name “*claw*” 2>/dev/null | head -20 # 查找相关文件“OpenClaw”并非腾讯云官方组件,而是一些代理商为了方便用户进行可视化运维(如一键安装LNMP、网站备份、安全扫描等)而预装的三方管理面板。它的存在本身不是问题,但你需要知道它是什么、是否在运行、以及它是否打开了额外的端口(如8080、8888等管理后台端口)。
如果发现它在运行,你需要决定是否保留它。对于追求极致控制和安全的用户,我建议卸载这些非必需的三方面板,因为你无法完全审计其代码和安全状况。使用命令行或自己编写脚本管理,是更专业和安全的方式。如果决定卸载,请根据其提供的官方文档或安装脚本中的卸载指令进行操作,通常可以在其安装目录找到uninstall.sh之类的脚本。
注意:在卸载任何预装软件前,最好先通过代理商了解其具体功能,避免误删团队其他成员依赖的工具。
4. 安全加固核心四步曲
确认环境后,我们开始进行核心的安全加固操作。请按顺序执行。
4.1 第一步:更新系统与关键软件
一个过时的系统是漏洞的温床。第一步永远是更新。
# 对于 Ubuntu/Debian 系统 apt update && apt upgrade -y # 对于 CentOS/Rocky Linux/AlmaLinux 系统 yum update -y # 对于 OpenCloud OS(腾讯云定制) yum makecache && yum update -y更新完成后,建议重启服务器以使内核更新生效:
reboot等待1-2分钟后再重新登录。
4.2 第二步:配置SSH密钥登录并禁用密码
这是本次加固的重中之重。
上传公钥到服务器: 在本地电脑上,将之前生成的公钥内容上传到服务器的
authorized_keys文件中。# 在本地终端执行,不要登录到服务器 ssh-copy-id -i ~/.ssh/tencent_lighthouse_key.pub root@123.123.123.123这个命令会自动将你的公钥追加到服务器
~/.ssh/authorized_keys文件末尾。如果ssh-copy-id不可用,也可以手动操作:- 先在本地查看公钥内容:
cat ~/.ssh/tencent_lighthouse_key.pub - 复制输出的一长串内容。
- 登录服务器,执行:
mkdir -p ~/.ssh && echo “你复制的公钥内容” >> ~/.ssh/authorized_keys - 设置正确的权限:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
- 先在本地查看公钥内容:
测试密钥登录: 新开一个本地终端窗口,尝试用私钥登录:
ssh -i ~/.ssh/tencent_lighthouse_key root@123.123.123.123如果首次使用设置了通行短语,此时会提示输入。登录成功,说明密钥配置正确。
禁用SSH密码登录: 密钥登录测试成功后,我们开始修改SSH服务端配置,彻底关闭密码登录。
vim /etc/ssh/sshd_config找到并修改以下几项关键配置:
Port 22 # 可以考虑改为一个非标准端口,如 2222,能减少大量自动化扫描(修改后需在防火墙放行) PermitRootLogin yes # 是否允许root登录。建议改为 `prohibit-password` 或 `no`,然后通过普通用户sudo提权。 PubkeyAuthentication yes # 启用公钥认证,确保是yes PasswordAuthentication no # 将此项改为 no,禁用密码认证! ChallengeResponseAuthentication no # 禁用挑战应答认证修改完成后,保存退出(在vim中按
Esc,输入:wq,回车)。重启SSH服务并验证:
systemctl restart sshd # Ubuntu/Debian # 或 systemctl restart sshd.service # CentOS/Rocky重要:在重启sshd服务后,不要关闭当前的登录会话!新开一个终端窗口,再次尝试用密钥登录,确认无误。然后再尝试用密码登录(
ssh root@123.123.123.123),此时应该被拒绝。验证无误后,你的服务器就拥有了第一道坚固的防线。
4.3 第三步:配置防火墙(Firewalld/UFW/Iptables)
腾讯云轻量服务器在控制台有“防火墙”功能,但那是在云平台层面的安全组,作用于服务器外部网络入口。我们还需要在操作系统内部配置主机防火墙,形成纵深防御。
CentOS/Rocky/OpenCloud OS 推荐使用 firewalld:
systemctl start firewalld systemctl enable firewalld firewall-cmd --permanent --add-service=ssh # 放行SSH,如果你改了SSH端口,要用 --add-port=2222/tcp firewall-cmd --permanent --add-service=http # 放行HTTP (80端口) firewall-cmd --permanent --add-service=https # 放行HTTPS (443端口) # 如果你运行了其他服务,如MySQL(3306),也需要相应放行 # firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload # 重载配置 firewall-cmd --list-all # 查看所有规则Ubuntu/Debian 推荐使用 ufw:
ufw allow OpenSSH # 放行SSH,如果改了端口: ufw allow 2222/tcp ufw allow 80/tcp ufw allow 443/tcp ufw --force enable # 启用UFW ufw status verbose # 查看状态
配置防火墙后,所有未明确允许的入站连接都会被拒绝。请务必在启用前放行SSH端口,否则你会把自己关在门外。
4.4 第四步:创建普通用户并禁用Root直接登录(可选但推荐)
长期使用root用户操作是危险的,一次误操作就可能毁掉整个系统。最佳实践是创建一个拥有sudo权限的普通用户,然后禁止root用户通过SSH直接登录。
创建新用户:
adduser your_username # 按照提示设置密码等信息 usermod -aG sudo your_username # 将用户加入sudo组(Ubuntu) # 对于CentOS,通常是 wheel 组: usermod -aG wheel your_username将SSH公钥复制到新用户家目录:
mkdir -p /home/your_username/.ssh cp ~/.ssh/authorized_keys /home/your_username/.ssh/ chown -R your_username:your_username /home/your_username/.ssh chmod 700 /home/your_username/.ssh chmod 600 /home/your_username/.ssh/authorized_keys测试新用户登录: 在本地用新用户的私钥(可以和root用同一个)登录测试:
ssh -i ~/.ssh/tencent_lighthouse_key your_username@123.123.123.123登录后测试
sudo权限:sudo whoami应该返回
root。禁用Root SSH登录: 确认新用户可以正常
sudo后,再次编辑/etc/ssh/sshd_config,将PermitRootLogin改为no。PermitRootLogin no重启SSH服务:
systemctl restart sshd。此后,只能先用普通用户登录,再用sudo -i或sudo su切换为root权限。
5. 系统优化与监控基线配置
安全加固后,我们可以进行一些性能优化和监控配置,让服务器运行得更顺畅、更透明。
5.1 配置Swap交换分区(如果内存较小)
轻量服务器入门配置可能只有1G或2G内存,在内存耗尽时容易触发OOM(Out-Of-Memory)导致进程被杀死。添加Swap分区可以提供一个缓冲。
# 检查当前Swap情况 free -h swapon --show # 如果没有任何Swap,可以创建一个(例如2GB) fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 使其永久生效 echo ‘/swapfile none swap sw 0 0’ >> /etc/fstab # 调整Swappiness参数(值越低,越倾向使用物理内存) echo ‘vm.swappiness=10’ >> /etc/sysctl.conf sysctl -p注意:Swap使用磁盘空间,频繁读写可能影响性能,但对于小内存服务器防止崩溃来说是必要的牺牲。
5.2 配置日志轮转与时间同步
- 日志管理:确保日志不会无限增长占满磁盘。Linux 默认通过
logrotate管理,通常无需额外配置,但可以检查关键日志如 Nginx/Apache 的配置。 - 时间同步:服务器时间不准会导致日志时间错乱、证书验证失败等问题。使用
chronyd或ntpd同步。# CentOS/Rocky systemctl start chronyd systemctl enable chronyd chronyc sources -v # Ubuntu systemctl start systemd-timesyncd systemctl enable systemd-timesyncd timedatectl status
5.3 安装基础监控工具
至少安装一个简单的系统监控工具,以便快速查看状态。
- htop: 一个增强版的
top,界面更友好。# Ubuntu/Debian apt install htop -y # CentOS/Rocky yum install epel-release -y yum install htop -y - ncdu: 用于分析磁盘空间占用。
使用# Ubuntu/Debian apt install ncdu -y # CentOS/Rocky yum install ncdu -yncdu /可以快速扫描根目录,找出占用空间最大的文件夹。
6. 应用层安全与后续维护建议
完成系统层加固后,你的服务器已经比90%的默认安装要安全了。但安全是一个持续的过程,特别是当你开始部署应用时。
6.1 部署应用时的安全原则
- 最小权限原则:运行应用(如Web服务器、数据库)时,尽量使用专用、非root用户。例如,为Nginx创建
www-data或nginx用户。 - 及时更新:不仅更新系统,更要更新你安装的每一个应用软件(如Nginx, MySQL, Redis, PHP等)。订阅其安全公告。
- 限制网络暴露:数据库(如MySQL、Redis)默认只监听本地回环地址
127.0.0.1,不要轻易绑定到0.0.0.0。如果必须远程访问,则必须设置强密码并通过防火墙严格限制来源IP。 - 使用HTTPS:对外提供Web服务,务必使用SSL/TLS证书(Let‘s Encrypt提供免费证书),强制HTTP跳转到HTTPS。
6.2 建立简单的入侵检测与备份习惯
- 文件完整性检查:定期检查关键系统文件(如
/etc/passwd,/etc/shadow,/bin/ls等)的哈希值或修改时间,可以使用aide或tripwire等工具,但对于轻量服务器,一个简单的定时脚本对比ls -la输出也可能发现异常。 - 登录审计:经常查看
/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS),关注失败的登录尝试。grep “Failed password” /var/log/auth.log | tail -20 - 定期备份:腾讯云控制台提供轻量服务器的快照功能,这是最简单有效的系统级备份。建议在重大变更前手动创建快照,并设置定期自动快照策略(会产生费用)。应用数据(如网站文件、数据库)应另外进行异地备份。
6.3 针对“OpenClaw”等预装面板的特别处理
如果你决定保留类似OpenClaw的面板,请务必做到以下几点:
- 修改默认访问端口和路径:如果面板有管理后台,绝不要使用默认的8080、8888等端口和
/admin这类路径。 - 设置强密码和二次验证:为面板管理员账户设置独一无二的强密码,并启用任何可用的二次验证(2FA)功能。
- 限制访问来源:在面板自身的防火墙设置或服务器防火墙(firewalld/ufw)中,将管理后台的访问权限限制为你自己的公网IP地址。
- 保持面板更新:关注面板官方的更新通知,及时修补安全漏洞。
经过以上从系统登录到应用部署的全流程加固,你的腾讯云轻量应用服务器已经从一个“裸奔”的状态,变成了一个具备基本防御能力的堡垒。这套流程看似步骤不少,但大部分是一次性配置,完成后能极大降低被自动化脚本攻击和入侵的风险。记住,服务器安全没有一劳永逸,保持更新的习惯和警惕的心态,才是最好的防护。