通过对 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 的整数
重启 SSH 服务,使变更生效
systemctl restart ssh
用户
新建非 root 用户
adduser vpsadmin
安装
sudo
功能apt update && apt install sudo
把
vpsadmin
用户加入 sudo
名单visudo
在
User Privilege Specification
下加入一行 vpsadmin ALL=(ALL) NOPASSWD: ALL
即可。
注意:
我要特别说明的是
NOPASSWD
这个设置,它的意思是vpsadmin
用户临时使用root
权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root
账号就是因为用root
时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root
用户的风险】大于【使用sudo
时不用输密码的风险】,所以做了以上的建议。如果你希望遵守传统习惯、每次使用sudo
时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL
即可。密码
生成密钥
以
RSA
密钥举例,用常用软件例如 termius 生成密钥:
你可以给私钥设置密码,增加一层安全性。复制私钥
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