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 <username> (将<username>替换为你要设置的用户名);
1.2.2 将新用户(<username>里填的用户)添加到sudo组,以便获取管理员权限:sudo usermod -aG sudo <username>
1.2.3测试新用户名是否可以成功登录。
方式1:输入命令su - <username>即可切换到新用户环境,此时需要输入密码(刚刚修改的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脚本
其次,在脚本文件中写入内容:
#! /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 incat /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输入:
CentOS/RHEL输入:
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 禁用方法有二:
方法一:对于Racknerd,Virtio-Balloon并非系统内置,可以通过rmmod virtio_balloon命令临时卸载;如果想长期生效,需要修改相关系统规则:
vi /etc/modprobe.d/blacklist.conf
写入以下内容后保存、退出:
blacklist virtio_balloon
更新系统信息:update-initramfs -u
方法一参考这篇文章:禁用Virtio-Balloon。
方法二:通过修改Grub配置禁用
对于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的安全性就可以相对地得到提高。
参考:;