为什么要做安全防护
Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的网站、APP、服务、甚至线下基础设施都建立在 Linux 的基石之上,这背后牵涉到巨大的经济利益和商业价值,当然也就意味着黑灰产有巨大的攻击动力。但是这些服务是如此重要、根本不允许出现重大的安全漏洞。于是无数的运维专业人员都在安全攻防的战场上拼搏努力,这才让大家能享受到基本稳定的现代化数字生活。
顺哥博客
现在,你拥有了一台 VPS(我们亲切地称它为小鸡),这与你自己的电脑不同,它 24 小时开机,而且具有一个公网 IP,意味着人人都可能可以访问到你的服务器,那就相当于你已经置身于安全攻防战场的第一线、直面所有风险。但与此同时,萌新由于知识和信息的不足,看待安全问题是总是难免两极分化:要么觉得轻如鸿毛和自己没有半点关系,要么觉得重于泰山甚至惶惶不可终日。
- 对于前者,我的建议是:安全无小事,尽量多查一些安全方面的信息,免得自己真的受了损失才后悔莫及;
- 对于后者,我的建议是:不用紧张,我们的服务器仍不具有太高的价值、一般不会吸引到高水平的攻击,需要面对的基本都是一些自动化脚本的恶意扫描和登录尝试,跟着本文做一些基础的防护即可。
具体的风险到底是什么
正如我们所知,任何人只需要知道【IP 地址】+【端口】+【用户名】+【密码】这四个要素,就能登录你的 VPS 服务器。那很显然,这四要素的安全就是我们要防护的底线。我们来逐一分析:
-
【IP 地址】:恶意脚本会随机尝试和扫描 IP 段,可以简单认为是公开信息、无法隐藏
-
【端口】:如果使用默认端口,那么【端口 = 22】
-
【用户名】:如果使用默认用户,那么【用户名 = root】
-
【密码】:密码不存在默认值,一定是由 VPS 后台随机生成或由你自行设置的。也就是说,如果你的服务器都是默认设置,则四要素中的三个已经是已知的,那么你整个服务器的安全,就全部寄托在一串小小的密码上了。这时有几种情况:
- 如果你用了 VPS 管理后台随机生成密码,它一般包含随机的十几个大小写混杂的字母和符号,相对比较安全
- 如果你为了好记、把密码改成了类似 123456 这种超弱的密码,破解你的 VPS 服务器可谓不费吹灰之力
- 如果你为了好记、把密码改成了比较复杂、但在别的地方用过的密码,其实也并不安全。你要明白黑客手里有作弊器,比如说密码表,包含数万、数十万、数百万甚至更多曾经泄漏的真实密码)
-
但你要明白,没有哪个黑客真的要坐在电脑前一次一次的尝试你的密码,全部的攻击尝试都是恶意脚本自动进行的,它会 24 小时不眠不休的工作。也许每天你酣睡之时,你的服务器都在经受着一轮又一轮的冲击。
一旦密码被成功撞破,意味着你的四要素全部被攻击者掌握,恶意脚本就会快速登录服务器、获取服务器的最高 root 控制权、安装部署它的恶意服务,然后就可以用你的服务器来 24 小时做各种坏事(比如挖矿、传播病毒、发送垃圾邮件、欺诈邮件、做 BT 中继、甚至暗网公众节点等等等等)。如果恶意脚本比较克制,其实可以做到相当的隐蔽性。而新人一般也不会去观察留意 VPS 的登录记录、进程变化、CPU 占用变化、流量变化等指标,你其实就很难发现自己被黑了。直到你的 VPS 服务商封禁你的账号、或者收到律师函为止。
- 别忘了,你获得 VPS 时大概率需要使用真实的支付信息,你登录各种网站、社交平台时也会留下你的 IP 地址,这些都与你的身份有直接或者间接的关系。于是,一旦这些坏事发生,它们就会不可避免地与你产生关联。
所以,一起来跟着下面的教程,来给我们的小鸡做一些基础的安全防护吧。
开始安全防护工作
本文以 Ubuntu20.04 为例子,Debian 的操作也是类似的,CentOS 系统会不太一样,请自行搜索相关内容。(强烈安利大家使用 Ubuntu 或者 Debian 系统)
任何涉及到安装的操作之前,先更新一下我们安装包的索引,可以的话,顺便更新一下软件。这本身也是安全的一部分,新的软件意味着更少的漏洞。
BASH
apt update apt upgrade |
编辑
保持即可,直接回车。
编辑
更新完毕,我们进入正题。
本次教程讲分为 SSH 篇、宝塔篇和全局篇来讲解,后续如果有补充也会更新至相应位置。
SSH 篇
1、更改 SSH 端口
第一步,我们先来解决【端口 = 22
】的问题。(注意:有些 VPS 服务商,默认的端口已经是非 22 端口,那么你可以忽略这一步,当然也可以跟着本文改成别的端口)
-
我们要做的第一件事,当然就是【用
nano
这个文本编辑器打开SSH远程登录程序设置
】,在 Windows 下,你会【找到文件并双击】,在 Linux 下该怎么办呢?仔细看看上面的命令说明,是不是就很简单了?没错,就是:SHELL
nano /etc/ssh/sshd_config
-
文件打开后,你就进入了
编辑nano
的界面,稍微观察一下,你会发现,它把重要的快捷键都显示在屏幕下方了(下图红框内),直接开卷考试、不用死记硬背,是不是很贴心呢? -
我们要做的第二件事,是【在打开的文件中找到
Port
这一项,并修改它的端口】。Port 后面的数字就是 SSH 的端口,一般建议把它改成一个大于1024
小于65535
的整数(本文以9753
为例)。结合nano
的快捷键,想一下该怎么操作呢?- 使用
ctrl+w
进入搜索模式,然后输入Port 22
并回车 - 删除
22
并改成9753
- 说明:如果这一行开头有个
#
,证明这一行【不生效】(被注释掉了),你可像我一样在文件最后写一个不带#
的,或者把#
删掉就好。
本文以
9753
为例,就意味着随着本文的发布,这个端口会变成一个不大不小的特征,也许会被攻击者优先尝试,所以强烈建议你用一个自己想到的其他端口,毕竟,你有 6 万多个端口可以自由选择。 - 使用
-
我们要做的第三件事,是【保存文件并退出】
- 如果第 3 步你有仔细观察,就会发现保存并不是常见的
ctrl+s
。 - 正确的快捷键:保存是
ctrl+o
+回车
,退出是ctrl+x
- 如果第 3 步你有仔细观察,就会发现保存并不是常见的
-
我们最后要做的事,是【重启 ssh 服务,使变更生效】
SHELL
sudo service sshd restart
注意:为了保证你不会失联,请不要关闭当前的 ssh 登录窗口!而是另外开一个窗口来测试!
注意:为了保证你不会失联,请不要关闭当前的 ssh 登录窗口!而是另外开一个窗口来测试!
注意:为了保证你不会失联,请不要关闭当前的 ssh 登录窗口!而是另外开一个窗口来测试!
编辑 -
修改登陆配置
现在新的端口已经生效,下次登录时就要用 9753
了。
登陆变成了:
BASH
ssh root@你的服务器IP -p 9753 |