通过对 VPS 的【端口】、【用户】、【密码】这三要素进行加强来保护你的 VPS。
重装系统
使用脚本前最好先安装如下软件
# CentOS 与 RedHat yum install -y xz openssl gawk file wget # Debian 与 Ubuntu apt-get install -y xz-utils openssl gawk file
推荐先在 VPS 商家重置系统为 CentOS 7 再进行重装,Debian 系在使用萌咖脚本重装时可能会报错。例如:Error! grub.cfg.
解决办法:
mkdir /boot/grub2 && grub-mkconfig -o /boot/grub2/grub.cfg
安装 Debian 10
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 10 -v 64 -p yourpassword -port 22333
其中
-d 10 -v 64
代表 debian 10 64 位,-p
后面接 root 密码:yourpasswordport
代表端口:22333
安装 Ubuntu 20.04
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -u 20.04 -v 64 -p yourpassword -port 22333
其中
-u 20.04 -v 64
代表 Ubuntu 20.04 64 位,-p
后面接 root 密码:yourpassword,-port
代表端口:22333端口
更改 SSH 端口
vi /etc/ssh/sshd_config
建议更改
Port
为一个大于 1024 小于 65535 的整数![notion image](https://s3.us-west-2.amazonaws.com/secure.notion-static.com/bad392b3-c9b0-460e-bde9-c5daab345655/VPS%E5%AE%89%E5%85%A8.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221028%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221028T102826Z&X-Amz-Expires=86400&X-Amz-Signature=f5b13cacf9323956c243d5174a3b09ee47fdc1d68181cebf05b1a91301a42e7b&X-Amz-SignedHeaders=host&x-id=GetObject)
重启 SSH 服务,使变更生效
systemctl restart ssh
用户
新建非 root 用户
adduser vpsadmin
安装
sudo
功能apt update && apt install sudo
把
vpsadmin
用户加入 sudo
名单visudo
在
User Privilege Specification
下加入一行 vpsadmin ALL=(ALL) NOPASSWD: ALL
即可。![notion image](https://s3.us-west-2.amazonaws.com/secure.notion-static.com/0d8de5f7-05ca-4f5c-9376-46928e718bf5/visudo.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221028%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221028T102826Z&X-Amz-Expires=86400&X-Amz-Signature=95656f18287584c606c620c8756bd14106f4dec91b625fd39e77ce0e48eebad7&X-Amz-SignedHeaders=host&x-id=GetObject)
注意:
我要特别说明的是
NOPASSWD
这个设置,它的意思是vpsadmin
用户临时使用root
权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root
账号就是因为用root
时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root
用户的风险】大于【使用sudo
时不用输密码的风险】,所以做了以上的建议。如果你希望遵守传统习惯、每次使用sudo
时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL
即可。密码
生成密钥
以
RSA
密钥举例,用常用软件例如 termius 生成密钥:![notion image](https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7265bc81-8087-4c46-bd2b-42567df20ebb/rsa.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20221028%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20221028T102826Z&X-Amz-Expires=86400&X-Amz-Signature=64ed2d4c4f1e735b2c7e83bba7818128b598757d7dbf9f654b9ffe9ca17d5cb8&X-Amz-SignedHeaders=host&x-id=GetObject)
你可以给私钥设置密码,增加一层安全性。复制私钥
Private key
并保存文件名为 id_rsa
,复制公钥 Public key
并保存文件名为 id_rsa.pub
即可。通常这两个文件放在本地用户的 .ssh
文件夹下,SSH 登录时选择私钥。上传公钥
拷贝公钥另存为
authorized_keys
并上传到 vpsadmin
用户下的 .ssh
文件夹内。cd /home/vpsadmin/ && mkdir .ssh
修改
authorized_keys
文件权限为 600
(仅所有者可读可写)sudo chmod 600 ~/.ssh/authorized_keys
修改 SSH 配置
sudo vi /etc/ssh/sshd_config
- 找到
PasswordAuthentication
改成no
- 找到
PubkeyAuthentication
改成yes
,然后重启 SSH 服务
sudo systemctl restart ssh