VPS 安全加固

字数960阅读约 3 分钟访问--

1. aaPanel 面板加固

在 aaPanel 后台先做这些:

  • 修改默认面板端口,换成高位端口,例如 2388831888 这类。
  • 开启“安全入口”,不要让面板直接通过 / 或默认入口访问。
  • 设置强密码,至少 16 位,包含大小写、数字、符号。
  • 如果有 2FA/动态口令,开启。
  • 绑定邮箱,用于找回或告警。
  • 面板 SSL 打开,避免明文登录。
  • 如果你的公网 IP 固定,限制 aaPanel 只允许你的 IP 访问。
  • 关闭不需要的面板插件和端口。

如果你的 IP 是动态的,不建议直接做严格 IP 白名单,可以先靠强密码 + 安全入口 + 非默认端口 + 防火墙。

第 1 步:创建管理用户

用当前 root SSH 登录服务器后,执行:

adduser deploy

系统会让你输入新用户密码,设置一个强密码。后面问姓名、电话这些可以一路回车跳过。

然后执行:

usermod -aG sudo deploy

验证用户是否创建成功:

id deploy

如果输出里能看到 sudo,说明成功,例如类似:

uid=1000(deploy) gid=1000(deploy) groups=1000(deploy),27(sudo)

第 2 步:测试 ddagent 能否正常 sudo

现在仍然在 root 终端里,执行:

su - ddagent

切换进去后,执行:

sudo whoami

它会要求你输入 ddagent 的密码。成功的话应该输出:

root

然后先不要关闭当前 root SSH 窗口。

第 3 步:配置 SSH 密钥登录

这一步要在你自己的电脑上生成密钥,不是在服务器里生成。

如果你本地是 Windows,打开 PowerShell,执行:

ssh-keygen -t ed25519 -C "ddagent@server"

一路回车即可。它默认会生成:

C:\Users\你的用户名.ssh\id_ed25519

C:\Users\你的用户名.ssh\id_ed25519.pub

然后查看公钥内容:

type $env:USERPROFILE.ssh\id_ed25519.pub

它会输出一整行,类似:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI… ddagent@server

把这一整行公钥复制给我,或者你自己先准备好。下一步我会教你把它添加到服务器的 ddagent 用户里。

第 4 步:把这个公钥写入服务器 ddagent 用户。

请在服务器当前终端里执行下面这一整段:

mkdir -p /home/ddagent/.ssh
cat > /home/ddagent/.ssh/authorized_keys <<'EOF'
ssh-rsa AAAA
EOF
chown -R ddagent:ddagent /home/ddagent/.ssh
chmod 700 /home/ddagent/.ssh
chmod 600 /home/ddagent/.ssh/authorized_keys

然后验证权限:

ls -ld /home/ddagent/.ssh

ls -l /home/ddagent/.ssh/authorized_keys

你应该看到 .ssh 权限是 drwx------authorized_keys 权限是 -rw-------,所有者是 ddagent ddagent

ls -ld /home/ddagent/.ssh 如果输出类似这样就可以:

drwx------ 2 ddagent ddagent ...

第 5 步:先不要关闭当前 SSH 窗口,在你本地电脑新开一个 PowerShell,测试密钥登录:

ssh ddagent@ip

如果你的私钥不是默认的 id_ed25519 或 id_rsa,就用:

ssh -i $env:USERPROFILE.ssh\你的私钥文件名 ddagent@ip

登录成功后,在新登录窗口里执行:

whoami
sudo whoami

预期输出分别是:

ddagent

root

第 6 步:修改 SSH 配置

请在服务器上用 ddagent 执行:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M)
sudo nano /etc/ssh/sshd_config

在文件里找到或添加下面几项,改成这样:

PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes

如果里面有重复项,以最后出现的为准。保存退出后,先检查配置:

sudo sshd -t

如果没有任何输出,说明配置语法正常。

然后重载 SSH:

sudo systemctl reload ssh

第 7 步:开启 UFW 防火墙

先查看当前 SSH 端口,执行:

sudo ss -lntp | grep ssh

如果你还没改过,通常会看到 :22

然后依次执行:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

还要放行 aaPanel 面板端口。你需要把下面的 <面板端口> 换成你当前 aaPanel 的端口:

sudo ufw allow <面板端口>/tcp

然后开启防火墙:

sudo ufw enable

查看状态:

sudo ufw status verbose

第 8 步:检查当前监听端口

请执行:

sudo ss -lntup