VPS安全设置指南:新购服务器后必做的5个步骤 (SSH/防火墙)

VPS安全设置指南:新购服务器后必做的5个步骤 (SSH/防火墙)

你刚刚拿到了你第一台VPS的root密码和IP地址,感觉就像拿到了一辆崭新跑车的钥匙,对吗?CPU、内存、硬盘、带宽……所有的资源都属于你,那种“我的地盘我做主”的掌控感,简直让人沉醉。你可以随心所欲地在上面搭建网站、部署应用、运行代码,一个全新的数字世界正在你面前展开。

但是,朋友,先别急着踩下油门。我得告诉你一个残酷的现实:这辆崭新的跑车,现在正停在一条没有门禁、没有保安、龙蛇混杂的大街上。全世界成千上万的自动化程序(我们称之为“机器人”),正像无情的鲨鱼一样,在互联网的海洋里7×24小时不间断地扫描,寻找着像你这样刚刚“出厂”、没有任何防护的VPS。它们的目标很简单:猜出你的密码,控制你的服务器,然后用它去做一些见不得人的事,比如挖矿、发送垃圾邮件、或者作为攻击别人的跳板。

是不是有点不寒而栗?别怕。我们今天就是要用五个最关键、最有效的步骤,给你的这辆“跑车”建一个固若金汤的私人车库。这五个步骤,不是“建议”,而是“必须”。它们是你作为服务器主人的第一堂必修课。准备好了吗?让我们开始吧。

第一步:告别“万能钥匙”——创建你的专属管理员账户

当你第一次登录VPS时,你用的账户是root。什么是root?它就是这台服务器的“神”,拥有至高无上的权力,可以做任何事,包括一键删掉整个系统。你的服务商给你的,就是这把可以打开所有房间、所有保险柜的“万能钥匙”。

一直使用root账户,就像你每天揣着整个小区的万能钥匙出门一样,一旦丢失或被偷,后果不堪设想。黑客们最喜欢攻击的目标,就是root账户,因为只要攻破了它,就等于完全占领了你的服务器。

所以,我们的第一项任务,就是把这把“万能钥匙”锁进保险柜,然后为自己打造一个日常使用的、权限受控的专属钥匙。

具体操作:

1登录你的服务器。 打开你的终端(Mac/Linux)或SSH客户端(Windows用户推荐使用Xshell或PuTTY),输入以下命令:

Bash

ssh root@你的服务器IP地址

系统会提示你输入密码。输入服务商给你的那个复杂密码,成功登录。

2创建一个新用户。 我们来创建一个叫myadmin的新用户(你可以换成任何你喜欢的名字,但避免使用admin这种太容易被猜到的名字)。

Bash

adduser myadmin

系统会提示你为这个新用户设置密码,请设置一个强密码。然后会问你一些额外信息,比如全名、电话等,这些都可以直接按回车键跳过。

3赋予新用户管理员权限。 这个新用户现在还只是个“普通访客”,很多系统级的操作它都做不了。我们需要给它“提权”,让它能在需要的时候,临时扮演一下“神”的角色。这个提权的工具,就是大名鼎鼎的sudo

Bash

usermod -aG sudo myadmin

这条命令的意思是,将myadmin这个用户,添加到sudo这个用户组里。凡是在这个组里的用户,都可以在命令前加上sudo来临时获取root权限。这就好比,你把万能钥匙锁起来了,但你给了你的专属管家myadmin一个授权——在需要的时候,他可以申请使用万能钥匙。

现在,退出当前的root登录,用你的新账户重新登录一次,确保一切正常。

Bash

exit
ssh myadmin@你的服务器IP地址

成功登录后,尝试执行一个需要管理员权限的命令,比如更新系统软件包列表:

Bash

sudo apt update

系统会提示你输入myadmin的密码(注意,不是root的密码)。如果命令成功执行,那么恭喜你,第一步完美完成!从现在开始,请永远使用myadmin这个账户登录和操作你的服务器。

第二步:扔掉数字锁,换上“生物识别”——配置SSH密钥登录

现在,我们虽然有了一个更安全的账户,但我们登录的方式依然是“密码”。密码这个东西,说实话,在今天的互联网环境下,就像个老旧的数字密码锁,总有被暴力破解的风险。无论你的密码多复杂,对于不知疲倦的计算机来说,只要有足够的时间,总能试出来。

我们要做的,就是彻底扔掉这个数字锁,换上一套独一无二的、无法被复制的“生物识别系统”。在服务器的世界里,这套系统就叫做“SSH密钥对”。

SSH密钥对由两部分组成:一个私钥(private key)和一个公钥(public key)

  • 私钥 (id_rsa): 它就像你的指纹或虹膜,绝对私密,存放在你自己的电脑上,决不能泄露给任何人。
  • 公钥 (id_rsa.pub): 它可以被看作是记录了你指纹信息的“锁芯”。你可以把它复制给任何你信任的服务器。

当你尝试登录时,服务器会用它存有的“锁芯”(公钥)向你发一个“挑战”,只有你本地电脑上的“指纹”(私钥)才能正确回应这个挑战。整个过程无需输入密码,而且几乎不可能被破解。是不是听起来就安全感爆棚?

具体操作:

  1. 在你自己的电脑上生成密钥对。
    • 如果你用的是Mac或Linux: 打开终端,输入以下命令:Bashssh-keygen -t rsa -b 4096 -t rsa指定了加密算法,-b 4096指定了密钥长度,4096位是目前非常安全的标准。然后一路按回车即可。它会在你本地电脑的~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。
    • 如果你用的是Windows: 推荐使用Xshell,它有非常方便的“用户密钥管理者”工具,可以一键生成密钥对,并自动保管。

2将你的公钥上传到服务器。 这一步,就是把我们的“锁芯”安装到服务器的门上。最简单的方法是使用ssh-copy-id命令(Mac/Linux)。

Bash

ssh-copy-id myadmin@你的服务器IP地址

系统会提示你输入myadmin用户的密码。输入后,它会自动将你本地的公钥,追加到服务器上/home/myadmin/.ssh/authorized_keys这个文件里。这个文件,就是服务器存放所有可信公钥的“钥匙库”。

3测试密钥登录。 再次尝试登录服务器:

Bash

ssh myadmin@你的服务器IP地址

你会神奇地发现,这次系统没有问你要密码,直接就登录成功了!这说明你的“生物识别”系统已经生效了。

第三步:彻底断绝后患——关闭密码登录功能

我们已经装上了无法破解的“生物识别锁”,那么那个老旧的、不安全的“数字密码锁”还有必要留着吗?当然不!留着它,就等于给小偷留了一扇后门。

现在,我们要做的就是把服务器的密码登录功能,彻底、永久地关闭。

具体操作:

1编辑SSH配置文件。nano编辑器打开sshd_config这个文件。记住,这是系统级文件,需要用sudo

Bash

sudo nano /etc/ssh/sshd_config

2修改配置项。 在打开的文件里,你需要找到并修改以下几项。你可以使用Ctrl + W来搜索。

  • 找到PasswordAuthentication yes,把它改成PasswordAuthentication no。(如果前面有#,记得删掉)
  • 找到PermitRootLogin yes,把它改成PermitRootLogin no。(这一步是禁止root用户通过SSH登录,双重保险!)
  • 找到ChallengeResponseAuthentication yes,把它改成ChallengeResponseAuthentication no

3保存并重启SSH服务。Ctrl + X,然后按Y,再按回车,保存文件。然后,重启SSH服务让配置生效。Bashsudo systemctl restart sshd

    警告: 在执行这一步之前,请务必、务必、务必打开一个新的终端窗口,重新测试一下你的密钥登录是否正常。确认无误后,再关闭旧的窗口。否则,一旦配置出错,你又关掉了密码登录,你可能会永远无法登录你的服务器!这就像你出门时,把门反锁了,才发现钥匙也锁在屋里了。

    第四步:玩个“捉迷藏”——修改默认的SSH端口

    SSH服务的默认端口是22。全世界都知道。因此,那些在网上游荡的“机器人”,它们攻击的目标,就是成千上万台服务器的22端口。你的服务器日志里,每天都会充斥着成千上万次对22端口的失败登录尝试,虽然它们因为你禁用了密码而无法成功,但看着也很烦人,对不对?

    我们可以跟它们玩个“捉迷藏”的游戏。把SSH的“大门”从众所周知的22号,搬到一个只有你自己知道的、非常规的号码上,比如23456。

    这就像你的堡垒,所有人都以为大门在南边,你却悄悄地把唯一入口开在了西边一个隐蔽的角落。这样一来,99%的自动化攻击都会因为找不到门而直接走开。

    具体操作:

    1再次编辑SSH配置文件。

    Bash

    sudo nano /etc/ssh/sshd_config

    2修改端口号。 找到#Port 22这一行,删掉前面的#,然后把22改成一个你自己喜欢的大于1024的数字(比如23456)。

    Port 23456

    3保存并重启服务。 同样是Ctrl + XY,回车,然后重启SSH服务。

    Bash

    sudo systemctl restart sshd

    注意! 在你断开当前连接之前,你的新端口还没有被“防火墙”放行,你还无法通过它连接。所以,我们必须先完成第五步。

    第五步:雇佣一个“铁面门卫”——配置UFW防火墙

    防火墙是什么?它就是你服务器最忠诚、最铁面无私的“门卫”。它的职责很简单:你没有明确允许进入的,一律拦在门外。

    默认情况下,你的VPS可能没有开启防火墙,这意味着所有的“端口”(可以理解为服务的窗口)都是对外开放的,这是非常危险的。我们要做的,就是用ufw(Uncomplicated Firewall,简单的防火墙)这个工具,把所有门都关上,然后只把你需要的几扇门打开。

    具体操作:

    1放行你的新SSH端口。 这是最关键的一步!如果你不先放行新的SSH端口就启动防火墙,你会被立刻锁在门外。

    Bash

    sudo ufw allow 23456/tcp
    

    (把23456换成你自己的新端口号)

    2放行你需要的其他服务端口。 如果你准备搭建网站,那你还需要放行HTTP和HTTPS端口。

    Bash

    sudo ufw allow http  # 这相当于 allow 80/tcp
    sudo ufw allow https # 这相当于 allow 443/tcp

    3启用UFW防火墙。

    Bash

    sudo ufw enable
    

    系统会警告你这可能会中断现有连接,输入y确认。

    4检查防火墙状态。

    Bash

    sudo ufw status
    

    你会看到类似这样的输出,清晰地列出了所有被允许的规则:

    Status: active

    To Action From
    — —— —-
    23456/tcp ALLOW Anywhere
    80/tcp ALLOW Anywhere
    443/tcp ALLOW Anywhere

    现在,万事俱备。你可以放心地断开当前连接,然后用新的端口号再次登录了:

    Bash

    ssh -p 23456 myadmin@你的服务器IP地址
    

    -p参数用来指定端口号)

    如果一切顺利,你会被再次要求输入SSH密钥的密码(如果你设置了的话),然后成功登录。

    全新的开始

    好了,深呼吸一下。现在,再回头看看你的服务器。它不再是那个停在危险街区的“裸奔”跑车了。

    通过这五步,你给它建立了一个专属的驾驶员(Sudo用户),换上了一套无法破解的指纹解锁系统(SSH密钥),彻底封死了老旧的密码锁(禁用密码登录),把车库大门挪到了一个秘密地点(修改SSH端口),最后还雇佣了一个只认你的铁面门卫(UFW防火墙)。

    它已经变成了一个拥有坚固城墙、隐藏城门、并且只认你这位唯一主人的私人堡垒。

    这只是你服务器安全之旅的开始,但却是最重要、最核心的开始。完成了这五步,你已经超越了至少80%的VPS新手。现在,你可以安心地去探索、去创造、去搭建你梦想中的应用了。你的堡垒,会忠诚地守护着你的数字资产。去尽情驰骋吧!

    知识库

    小型企业如何以最低成本优化服务器配置

    2025-7-30 15:04:55

    知识库

    Python 网络协议与套接字编程:构建客户端和服务器的详细指南

    2024-11-13 10:20:56

    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧