三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

腾讯云轻量服务器安全加固指南:从SSH密钥到防火墙配置

腾讯云轻量服务器安全加固指南:从SSH密钥到防火墙配置

1. 项目缘起:为什么轻量应用服务器需要“二次加固”?

最近在帮几个初创团队做上云迁移和运维托管,发现一个挺普遍的现象:很多朋友在腾讯云上购买了轻量应用服务器(Lighthouse)后,尤其是通过代理商渠道拿到的机器,就直接开始部署应用了。他们普遍认为,既然是从腾讯云官方或正规代理商那里买的,系统镜像应该是“开箱即用”且安全的。这个想法其实存在一个不小的误区。

轻量应用服务器提供的系统镜像,无论是 CentOS、Ubuntu 还是 OpenCloud OS,确实是一个干净、标准的操作系统。但“干净”不等于“安全”,更不等于“配置优化”。它就像一套精装修的毛坯房,水电通了,墙面刷白了,但你要住得舒服、安全,还得自己装防盗门、调整灯光布局、检查水管接口。同样,服务器拿到手,默认的 SSH 端口、弱密码策略(如果使用密码登录)、未配置的防火墙、不必要的服务进程,都是潜在的风险点。尤其是通过代理商购买的服务器,有时会预装一些“方便管理”但来源不明的脚本或监控工具,这些反而可能引入新的安全漏洞。

因此,无论你是个人开发者、小团队运维,还是企业IT,在服务器初始化后,进行一轮系统性的基础配置与安全加固,是必不可少的上云“第一课”。这不仅能堵上最明显的安全漏洞,更能为后续应用的稳定运行打下坚实基础。今天,我就结合最近处理的一台预装了“OpenClaw”管理面板(部分代理商喜欢预装)的腾讯云轻量服务器,来详细拆解从拿到IP地址到完成基础加固的全过程。你会发现,很多操作并不复杂,但每一步都至关重要。

2. 登录前准备:理清入口与认证方式

在开始任何操作之前,我们必须先明确如何登录服务器。腾讯云轻量服务器主要提供两种登录方式:SSH密钥对密码。我强烈建议,并且本文将基于SSH密钥对的方式进行,这是安全性的基石。

2.1 密钥对与密码的抉择

为什么首选密钥对?原因很简单:它比密码安全几个数量级。密码可能被暴力破解、被键盘记录器窃取、或因复杂度不够而被猜出。而SSH密钥对采用非对称加密,私钥存放在你的本地电脑,从不通过网络传输;公钥放在服务器上。登录时,服务器用公钥挑战你的本地私钥,验证通过即可登录。只要你的私钥文件不泄露,服务器几乎不可能被非法登录。

很多通过代理商购买的服务器,对方可能会直接给你一个随机生成的密码。我的建议是:立即禁用密码登录,并改用密钥对。这是加固的第一步,也是最重要的一步。

2.2 本地环境与工具准备

你需要在本地准备好两样东西:

  1. 一个SSH客户端:如果你是 macOS 或 Linux 用户,系统终端自带ssh命令。Windows 用户我推荐使用PowerShell(Win10及以上自带)或安装Git Bash,它们都包含了完整的 SSH 工具链。图形化工具如PuTTYXshell也可用,但本文以命令行操作为主,因为更通用、可脚本化。

  2. 你的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密钥登录并禁用密码

这是本次加固的重中之重

  1. 上传公钥到服务器: 在本地电脑上,将之前生成的公钥内容上传到服务器的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
  2. 测试密钥登录: 新开一个本地终端窗口,尝试用私钥登录:

    ssh -i ~/.ssh/tencent_lighthouse_key root@123.123.123.123

    如果首次使用设置了通行短语,此时会提示输入。登录成功,说明密钥配置正确。

  3. 禁用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,回车)。

  4. 重启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直接登录。

  1. 创建新用户

    adduser your_username # 按照提示设置密码等信息 usermod -aG sudo your_username # 将用户加入sudo组(Ubuntu) # 对于CentOS,通常是 wheel 组: usermod -aG wheel your_username
  2. 将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
  3. 测试新用户登录: 在本地用新用户的私钥(可以和root用同一个)登录测试:

    ssh -i ~/.ssh/tencent_lighthouse_key your_username@123.123.123.123

    登录后测试sudo权限:

    sudo whoami

    应该返回root

  4. 禁用Root SSH登录: 确认新用户可以正常sudo后,再次编辑/etc/ssh/sshd_config,将PermitRootLogin改为no

    PermitRootLogin no

    重启SSH服务:systemctl restart sshd。此后,只能先用普通用户登录,再用sudo -isudo 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 的配置。
  • 时间同步:服务器时间不准会导致日志时间错乱、证书验证失败等问题。使用chronydntpd同步。
    # 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 -y
    使用ncdu /可以快速扫描根目录,找出占用空间最大的文件夹。

6. 应用层安全与后续维护建议

完成系统层加固后,你的服务器已经比90%的默认安装要安全了。但安全是一个持续的过程,特别是当你开始部署应用时。

6.1 部署应用时的安全原则

  1. 最小权限原则:运行应用(如Web服务器、数据库)时,尽量使用专用、非root用户。例如,为Nginx创建www-datanginx用户。
  2. 及时更新:不仅更新系统,更要更新你安装的每一个应用软件(如Nginx, MySQL, Redis, PHP等)。订阅其安全公告。
  3. 限制网络暴露:数据库(如MySQL、Redis)默认只监听本地回环地址127.0.0.1,不要轻易绑定到0.0.0.0。如果必须远程访问,则必须设置强密码并通过防火墙严格限制来源IP。
  4. 使用HTTPS:对外提供Web服务,务必使用SSL/TLS证书(Let‘s Encrypt提供免费证书),强制HTTP跳转到HTTPS。

6.2 建立简单的入侵检测与备份习惯

  • 文件完整性检查:定期检查关键系统文件(如/etc/passwd,/etc/shadow,/bin/ls等)的哈希值或修改时间,可以使用aidetripwire等工具,但对于轻量服务器,一个简单的定时脚本对比ls -la输出也可能发现异常。
  • 登录审计:经常查看/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS),关注失败的登录尝试。
    grep “Failed password” /var/log/auth.log | tail -20
  • 定期备份:腾讯云控制台提供轻量服务器的快照功能,这是最简单有效的系统级备份。建议在重大变更前手动创建快照,并设置定期自动快照策略(会产生费用)。应用数据(如网站文件、数据库)应另外进行异地备份。

6.3 针对“OpenClaw”等预装面板的特别处理

如果你决定保留类似OpenClaw的面板,请务必做到以下几点:

  1. 修改默认访问端口和路径:如果面板有管理后台,绝不要使用默认的8080、8888等端口和/admin这类路径。
  2. 设置强密码和二次验证:为面板管理员账户设置独一无二的强密码,并启用任何可用的二次验证(2FA)功能。
  3. 限制访问来源:在面板自身的防火墙设置或服务器防火墙(firewalld/ufw)中,将管理后台的访问权限限制为你自己的公网IP地址。
  4. 保持面板更新:关注面板官方的更新通知,及时修补安全漏洞。

经过以上从系统登录到应用部署的全流程加固,你的腾讯云轻量应用服务器已经从一个“裸奔”的状态,变成了一个具备基本防御能力的堡垒。这套流程看似步骤不少,但大部分是一次性配置,完成后能极大降低被自动化脚本攻击和入侵的风险。记住,服务器安全没有一劳永逸,保持更新的习惯和警惕的心态,才是最好的防护。

← 返回列表