让你的VPS固若金汤

有很多“黑客”,会逐个扫描VPS公司的IP,尝试破解root用户的密码。

如果你按照本站VPS搭建教程的提示,为root用户设置了强密码,那被攻破的概率是很小的。

但毕竟还是有安全隐患。所以为了不给坏人一丁点可乘之机,你有必要再做一些安全上的升级,让你的VPS固若金汤。

你一定要把自己的VPS保护好,至少做好最基本的防护,包括四项:

  • 定期做系统升级
  • 打开防火墙
  • 屏蔽root用户的远程登陆
  • 更改ssh连接端口

第一步,更新系统(并且,以后要经常性地更新系统)。

你装完VPS过几天后登陆服务器,执行lastb命令看看,它会列出一个清单,包括所有尝试登陆你服务器的时间,看看单子有多长,你就会知道这江湖看似风平浪静,实际上始终暗流涌动,一刻也不曾消停。

黑客们总是在试图找到服务器系统的漏洞,好把你的机器变成“肉鸡”,用来做坏事,或者偷窥你。

更新系统的意义在于,会弥补上这些漏洞,不给黑客可乘之机。

所以一定一定要更新系统,至少每半个月来一次。非常简单,执行下面的命令即可。

sudo dnf update -y

第二步,增加一个新用户。

2.1 用户名你自己起,比如imdabai。打开putty,用root登陆你的VPS后,执行下面这行命令。

useradd imdabai && passwd imdabai

老规矩,还是点击上面代码框里的字符,代码就会被自动拷贝,然后到putty窗口点鼠标右键,命令就会被粘贴到光标处。

因为我在代码最后一行加了回车,所以应该自动执行。如果没有自动执行,请按回车键执行。

这时会提示输入密码。输入密码的时候还是啥也不显示,不用担心。另外,这个密码以后经常用到,所以最好用自己能记得住的,包含大小写字母、数字和特殊符号的长一点的强密码。要输入两次,密码要一致。

可以用记事本记到本地的电脑上,最好不上传到网盘等云设备上,以免泄露。

2.2 将该用户添加到一个特殊的用户组(可以获取超级用户权限的组,即Group wheel)。

usermod -aG wheel imdabai

以后,当你用imdabai这个用户登陆时,它的权限很有限,无法完成修改系统设置、删除重要文件等操作。

但是,你需要它执行那些功能时,可以在命令前面加上sudo,它就变身为超级用户了,具有和root用户差不多的权限。


第三步,将root用户的SSH登陆权限关掉,同时更改默认的SSH连接端口。

远程登陆时不再使用root用户,而是使用刚才生成的用户,不给坏人们暴力破解root密码的机会。

同时,将默认的SSH端口22,改为你的一个吉祥数字(在2000~40000中选,比如22345),这样坏人即使想登陆,都找不到连接端口。

3.1 编辑SSH的配置文件,执行下面这行命令

sudo nano /etc/ssh/sshd_config

文件打开后,按Ctrl+w查找(w代表where is),输入#port 22回车,会跳转到#port 22一行,把#符号去掉,然后把22改成22345。

再按Ctrl+w查找,输入permit回车,会跳转到PermitRootLogin yes一行,把yes改为no。

改完后的两行是下面这样子的

#
Port 22345
#AddressFamily any
... ...
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes

确认无误后存盘退出。

3.2 使用semanage命令允许系统使用非默认端口。在某些vps上其实用不到这一条,但执行一下更保险。

sudo semanage port -a -t ssh_port_t -p tcp 22345

3.3 更改防火墙设置,将原ssh端口禁止,允许使用新端口。

这一行包含三条命令,分别是让防火墙关掉默认的ssh端口、打开22345端口、重新加载防火墙,执行后会提示3行success。

sudo firewall-cmd --permanent --remove-service=ssh; sudo firewall-cmd --permanent --add-port=22345/tcp; sudo firewall-cmd --reload

3.4 重启sshd服务,让以上配置生效。

sudo systemctl restart sshd.service

第四步,更改putty会话的设置,测试新用户。

关掉putty再重新启动,输入VPS的IP,端口改为22345,然后给这个连接起个名字,比如vultr_London,或者DigitalOcean_SF,点Save按钮。

这样以后就不用每次都输入VPS的IP了。直接双击VPS连接的名称就可以连接了。

因为端口变了,第一次连接时会再次出现安全提示,选Accept。

使用第2.1步添加的新用户,也就是imdabai以及你自己设的密码登陆。

登陆成功后,我们来测试一下sudo命令。

我们来改一下时区。把服务器的时间,改成你的ip地址对应的时区。

让时区和ip保持一致,在某些特殊场景下很有用,因为这样做”伪装度“更好,被访问的网站不容易检测出你在用代理服务器。

要想知道你的VPS属于哪个时区,以及时区的名称怎么写,可以在这个网站查询。

假设你的服务器在Atlanta或Miami,那么经过查找知道,它们所属的时区都是纽约,于是执行下面的命令(单引号里的内容是时区,是变量,前面的命令始终不变)。

sudo timedatectl set-timezone 'America/New_York'

注意,执行命令时,系统会让我们输入密码验证身份,才能把该用户升级为超级用户。如果十分钟不做任何操作的话,sudo权限会被收回,下次还要再次输入密码。

再比如你的ip在西海岸,如Los Angeles、Seattle、Silicon Valley,那么查找后就会知道,要把时区改为洛杉矶,执行下面的命令。

sudo timedatectl set-timezone 'America/Los_Angeles'

依此类推。

修改完成后,可以输入date命令回车,与刚才那个查时区的网站对照一下,看看显示出来的日期和时间,是否已经更改。


至此,你的VPS已经关掉了默认的SSH端口,禁止了root用户的登陆,新用户也已经正常启用,你的VPS的安全级别已经完美提升。

以后至少每个月(或者每15天)登陆一下,升级一下系统,万一有什么安全漏洞,也好早一点堵上。

4人评论了“让你的VPS固若金汤”

  1. 目前为止见过的写的最简洁明了的教程,谢谢作者大大!另外请问有无系统介绍linux用户管理、防火墙管理的学习资源推荐呀?

  2. 大佬你是不是RedHat官方讲师啊,感觉你好厉害啊,这些文章写得都非常的细致完美

回复 诗和远方的田野 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注