保护你的 VPS

保护你的 VPS

Tags
VPS
Security
Linux
Published
September 7, 2022
Last Updated
Last updated September 12, 2022
Author
Toby Chung
通过对 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 密码:yourpassword
  • port 代表端口: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
重启 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
注意:
我要特别说明的是NOPASSWD这个设置,它的意思是vpsadmin用户临时使用root权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root账号就是因为用root时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root用户的风险】大于【使用sudo 时不用输密码的风险】,所以做了以上的建议。如果你希望遵守传统习惯、每次使用sudo时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL 即可。

密码

生成密钥

以 RSA 密钥举例,用常用软件例如 termius 生成密钥:
notion image
你可以给私钥设置密码,增加一层安全性。复制私钥 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

参考