718 字
4 分钟
VPS保护流程

以下操作均在debian12中操作

创建普通用户#

Terminal window
useradd -m -s /usr/bin/bash <username>
# -m: 创建用户目录
# -s <shell>: 指定shell
# 若没有添加-s参数使用以下命令
# user -s /usr/bin/bash <username>

添加密码#

Terminal window
passwd <username>

使用root权限#

如果没有sudo,先安装

Terminal window
vim /etc/sudoers

找到root ALL=(ALL:ALL) ALL这行,复制粘贴到下一行,把root改为

使用su <username>可切换用户

上传公共密钥#

客户端#

创建.ssh目录#

在“C:\Users<username>/home/`创建.ssh目录

Terminal window
# Windows
md .ssh
# Mac or Linux
mkdir .ssh

生成密钥#

Terminal window
# key name随便填
ssh-keygen -t ed25519 -C "<key name>"

按三次回车,密钥即可创建成功

上传密钥到服务器#

ssh默认端口为22

Terminal window
# Windows
scp -P <port> C:\Users\<username>\.ssh\id_ed25519.pub <普通用户名>@<域名或服务器IP>:~/.ssh/authorized_keys
# Linux or Mac
scp -P <port> ~/.ssh/id_ed25519.pub <普通用户名>@<域名或服务器IP>:~/.ssh/authorized_keys

服务端#

赋予密钥文件权限

Terminal window
chmod 600 authorized_keys

到这里已经可以使用密钥登陆了

SSH修改端口#

端口共有35536个,范围0-65535

Terminal window
sudo vim /etc/ssh/sshd_config

修改以下内容

Terminal window
Port <随机ssh端口>
PermitRootLogin no #禁用root用户登录
PasswordAuthentication no #禁用密码登录
PubkeyAuthentication yes #允许公钥认证
AddressFamily inet #sshd不监听ipv6端口

重启服务

Terminal window
sudo systemctl restart ssh

UFW 防火墙配置#

启用防火墙

Terminal window
sudo ufw enable

允许端口

Terminal window
sudo ufw limit from 0.0.0.0/0 to any port <ssh端口> proto tcp # 只开放ipv4端口,limit限速
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp

禁用端口

Terminal window
sudo ufw deny <port>/<udp or tcp>

载入规则

Terminal window
sudo ufw reload

查看规则

Terminal window
sudo ufw status

删除规则

Terminal window
sudo ufw status numbered
sudo ufw delete <序号>

禁用防火墙

Terminal window
sudo ufw disable

禁用Ping#

Terminal window
sudo vim /etc/ufw/before.rules

echo-request,这有两个,把有input的那行的ACCEPT改成DROP

载入规则

Terminal window
sudo ufw reload

创建虚拟内存#

Terminal window
sudo fallocate -l 512M /swap
sudo chmod 600 /swap
sudo mkswap /swap
sudo swapon /swap
echo '/swap none swap sw 0 0' | sudo tee -a /etc/fstab

验证

Terminal window
free -h
sudo swapon --show

/etc/sysctl.conf里追加vm.swappiness=10

使用以下命令载入规则

Terminal window
sudo sysctl -p

添加Sysctl规则#

Terminal window
sudo vim /etc/sysctl.conf

追加规则

Terminal window
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_syncookies = 1

载入规则

Terminal window
sudo sysctl -p

Fail2ban#

防止ssh被暴力破解

安装fail2ban

Terminal window
sudo apt update && sudo apt install fail2ban

复制文件

Terminal window
cd /etc/fail2ban
cp fail2ban.conf fail2ban.local
vim fail2ban.local

添加内容

Terminal window
[sshd]
enabled = true
port = <SSH port>
filter = sshd
logpath = /var/log/auth.log
backend = auto
maxretry = 3
findtime = 10m
bantime = 7d
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 30d

创建日志文件

Terminal window
sudo mkdir /var/log/auth.log

重启fail2ban

Terminal window
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

查看状态

Terminal window
sudo fail2ban-client status
sudo fail2ban-client status sshd

解除指定IP

Terminal window
sudo fail2ban-client set sshd unbanip <被禁用的IP>

修改日志大小上限#

Terminal window
sudo vim /etc/systemd/journald.conf

修改以下参数

Terminal window
SystemMaxUse=200M
SystemKeepFree=500M
MaxRetentionSec=7day

重启服务

Terminal window
sudo systemctl restart systemd-journald
sudo systemctl status systemd-journald

时间同步#

Terminal window
sudo apt update && sudo apt install chrony
sudo systemctl enable --now chrony
chronyc tracking

自动安全更新#

小型VPS不建议,占资源

Terminal window
sudo dpkg-reconfigure -plow unattended-upgrades
VPS保护流程
https://fuwari.vercel.app/posts/vps/vps保护流程/
作者
Lorem Ipsum
发布于
2026-02-21
许可协议
CC BY-NC-SA 4.0