VPS 的使用、運營維護,是一門學問。做好 VPS 安全防護,需要從點滴做起;作為小白用戶,購買 VPS 之後,建議做好以下設置,最大程度地保護 VPS 的安全。
1. 修改 root 密碼,限制 root 登錄#
1.1 修改 root 密碼#
通過 SSH 工具(如 putty,Xshell 等),輸入 VPS 服務商提供的 IP,端口(22),賬號(root)和密碼即可連接 VPS。如果確定 IP 被屏蔽,則可以聯繫服務商更換可用 IP(通常可以免費更換一次 IP,具體要看各服務商的規定)。
用 root 登錄 VPS 之後,輸入命令:passwd,並輸入要設置的密碼(輸入的密碼不可見),即可更改初始的 root 密碼。
1.2 修改 VPS 登錄賬戶名#
修改 VPS 登錄賬戶名,限制 root 賬戶登錄,用普通賬戶提權後連接 vps(謹慎操作)。此操作的原因在於:root 賬戶容易被掃描、爆破,因而修改 VPS 登錄賬戶名,增加被爆破的難度。具體步驟如下:
1.2.1 在 root 下創建普通用戶:sudo adduser (將替換為你要設置的用戶名);
1.2.2 將新用戶(里填的用戶)添加到 sudo 組,以便獲取管理員權限:sudo usermod -aG sudo
1.2.3 測試新用戶名是否可以成功登錄。
方式 1:輸入命令 su - 即可切換到新用戶環境,此時需要輸入密碼(剛剛修改的 root 密碼);新用戶登錄成功後,輸入 sudo 命令,即可進入新用戶名管理員環境。
方式 2:在 1.2.2 步驟 root 登錄設置之後,退出 root 賬戶的 SSH 連接,並重新以新用戶名和 root 密碼登錄。
1.3 禁用 Root 登錄#
通過新用戶名連接 VPS 之後,輸入命令:sudo nano /etc/ssh/sshd_config 進入編輯 SSH 配置文件;
查詢並修改 “PermitRootLogin” 項為 PermitRootLogin no,保存文件並退出(ctrl+x 保存並退出);
重新啟動 SSH 服務:sudo systemctl restart ssh。重啟之後,VPS 便無法通過 root 用戶名登錄。
1.4 防止 SSH 暴力破解#
1.4.1 創建 shell 腳本
首先,輸入以下命令,進入禁止 ssh 暴力破解腳本文件,
vi /usr/local/bin/secure_ssh.sh
其次,在腳本文件中寫入內容:
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat /usr/local/bin/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 7 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
1.4.2 創建定時任務
首先輸入 crontab -e,進入定時編輯環境,在文件中加入以下內容(定時執行防 ssh 暴力破解腳本,每 3 分鐘執行一次):
*/3 * * * * sh /usr/local/bin/secure_ssh.sh
2. 進行系統更新和增刪#
2.1 更新系統、必要依賴、刪除不再需要的安裝包#
Ubuntu/Debian 輸入:
apt update -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y
CentOS/RHEL 輸入:
yum update -y && yum upgrade -y && yum autoremove -y && yum clean all
2.2 一鍵清理垃圾#
Ubuntu/Debian 輸入:
sudo apt autoremove --purge -y
sudo apt clean -y
sudo apt autoclean -y
sudo apt remove --purge $(dpkg -l | awk '/^rc/ {print $2}') -y
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
sudo journalctl --vacuum-size=50M
sudo apt remove --purge $(dpkg -l | awk '/^ii linux-(image|headers)- +/{print $2}' | grep -v $(uname -r | sed 's/-.*//') | xargs) -y
CentOS 系統輸入:
sudo yum autoremove
sudo yum clean all
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
sudo journalctl --vacuum-size=50M
sudo yum remove $(rpm -qa kernel | grep -v $(uname -r))
3. 禁用 Virtio-Balloon,防止 VPS 服務商超售影響性能#
Virtio-Balloon 可以理解為 VPS 主體虛擬內存動態分配插件,但 VPS 服務商在超售之後,其他用戶的 VPS 性能會受到影響。因而,我們需要查看是否有這個插件,如果有,建議禁用。
3.1 查詢命令:#
lsmod | grep virtio_balloon
我的 Racknerd 啟用了,如圖:
![]() |
---|
Racknerd Virtio Ballon |
3.2 禁用方法有二:#
方法一:卸載 Virtio-Balloon#
對於 Racknerd,Virtio-Balloon 並非系統內置,可以通過 rmmod virtio_balloon 命令臨時卸載;如果想長期生效,需要修改相關系統規則:
vi /etc/modprobe.d/blacklist.conf
寫入以下內容後保存、退出:
blacklist virtio_balloon
更新系統信息:
update-initramfs -u
方法一參考這篇文章:禁用 Virtio-Balloon。
方法二:通過修改 Grub 配置禁用 Virtio-Balloon#
對於 virtio_balloon 內置的 VPS,如 Cloudcone,輸入 lsmod | grep virtio_balloon 查詢不到,但輸入 rmmod virtio_balloon 之後,顯示 virtio_balloon 為內置。此時,virtio_balloon 不是以模塊的形式加載,而是直接編譯到內核當中。此時,需要修改 Grub 配置。
1. 進入 Grub 配置文件:
sudo nano /etc/default/grub
2. 增加命令行:GRUB_CMDLINE_LINUX="virtio_balloon=0";或者在原來含有 GRUB_CMDLINE_LINUX 等號右邊的參數最前面插入 virtio_balloon=0 並加入英文空格。
3.Ctrl+X 保存退出,輸入 sudo update-grub 更新配置,輸入 sudo reboot 重啟系統。
經過以上設置之後,我們 VPS 的安全性就可以相對地得到提高。