优质SS/SSR/Trojan/Xray/V2Ray机场推荐 | IPLC/IEPL专线加速器梯子推荐 | 解锁奈飞Netflix/HBO/Hulu等国外流媒体
Linux服务器的安全防护是一个纷繁复杂的巨大课题。无数的网站、APP、服务、甚至线下基础设施都建立在Linux的基石之上,这背后牵涉到巨大的经济利益和商业价值,当然也就就意味着黑灰产有巨大的攻击动力。但是这些服务是如此重要、根本不允许出现重大的安全漏洞。于是无数的运维专业人员都在安全攻防的战场上拼搏努力,这才让大家能享受到基本稳定的现代化数字生活。
现在,你拥有了一台VPS,并且将会敞开他的数据访问渠道来达到流量转发的目标,那就相当于你已经置身于安全攻防战场的第一线、直面所有风险。但与此同时,新人由于知识和信息的不足,看待安全问题是总是难免两极分化:要么觉得轻如鸿毛和自己没有半点关系,要么觉得重于泰山甚至惶惶不可终日。
就像我们在《远程登录篇》配置的一样,任何人只需要知道【IP地址】+【端口】+【用户名】+【密码】这四个要素,就能登录你的VPS服务器。那很显然,这四要素的安全就是我们要防护的底线。我们来逐一分析:
22】root】123456这种超弱的密码,破解你的VPS服务器可谓不费吹灰之力密码表,包含数万、数十万、数百万甚至更多曾经泄漏的真实密码)root 控制权、安装部署它的恶意服务,然后就可以用你的服务器来24小时做各种坏事(比如挖矿、传播病毒、发送垃圾邮件、欺诈邮件、做BT中继、甚至暗网公众节点等等等等)。如果恶意脚本比较克制,其实可以做到相当的隐蔽性。而新人一般也不会去观察留意VPS的登录记录、进程变化、CPU占用变化、流量变化等指标,你其实就很难发现自己被黑了。直到你的VPS服务商封禁你的账号、或者收到律师函为止。基于上述分析,我们要做的,自然就是对【端口】、【用户名】、【密码】这三要素进行加强,来降低被攻破的风险:
记得按顺序来,别把自己锁在门外了。
22】的问题。(注意:有些VPS服务商,默认的端口已经是非22端口,那么你可以忽略这一步,当然也可以跟着本文改成别的端口)cmd-03 | nano | 文本编辑器 |
cmd-04 | systemctl restart | 重启某个服务 |
conf-01 | /etc/ssh/sshd_config | SSH远程登录程序设置 |
nano这个文本编辑器打开SSH远程登录程序设置】,在Windows下,你会【找到文件并双击】,在Linux下该怎么办呢?仔细看看上面的命令说明,是不是就很简单了?没错,就是:# nano /etc/ssh/sshd_config
nano的界面,稍微观察一下,你会发现,它把重要的快捷键都显示在屏幕下方了(下图红框内),直接开卷考试、不用死记硬背,是不是很贴心呢?Port这一项,并修改它的端口】。Port后面的数字就是SSH的端口,一般建议把它改成一个大于1024小于65535的整数(本文以9753为例)。请结合nano的快捷键,想一下该怎么操作呢?果然,你又说对了!就是:ctrl+w 进入搜索模式,然后输入 Port 22 并回车22 并改成 9753#,证明这一行【不生效】(被注释掉了),你可像我一样在文件最后写一个不带#的,或者把#删掉就好。9753为例,就意味着随着本文的发布,这个端口会变成一个不大不小的特征,也许会被攻击者优先尝试、也许被GFW干扰、阻断。所以我强烈建议你用一个自己想到的其他端口,毕竟,你有6万多个端口可以自由选择。ctrl+s。ctrl+o + 回车,退出是 ctrl+x# systemctl restart ssh
9753了。所以现在请到PuTTY的设置中修改端口号码,然后保存Session。嗯,你应该知道去哪里改了吧?(如果不知道的话,要重读前面的内容了哦!)root】的问题。首先你要理解, Linux系统中的root,不仅仅是一个管理员账号那么简单。它是整个系统的【根基】、是系统的主宰、至高无上的神。一旦root账号出现安全问题,整个系统都只能任人鱼肉、无处可逃。那么就跟随我进行操作吧:cmd-05 | adduser | 给系统新增用户 |
cmd-06 | apt install | 安装某个软件 |
cmd-07 | visudo | 修改sudo权限设置专用编辑器 |
vpsadmin为例:# adduser vpsadmin
执行命令后,根据提示操作即可。请务必设置一个用户密码(别忘记设置密码时你时看不到 ****** 的)。之后系统会询问你一些用户的附加信息,这些就可以无视,一路回车即可。vpsadmin为例,就意味着随着本文的发布,这个用户名也会变成一个不大不小的特征,也许会被攻击者优先尝试。所以和端口一样,我强烈建议你用一个自己想到的其他用户名。sudo功能】(sudo 就是在关键时刻,让普通账户临时获得 root 的神力,战力全开拯救世界)# apt update && apt install sudo
聪明的你大概已经发现,这一行命令其实是两个命令。前一半 apt update 你之前已经见过并且用过了,是去服务器刷新软件版本信息。后面的 apt install 就是这一次要用到的【安装命令】。两条连接在一起,就是让系统去【刷新可用的最新软件,然后安装最新版的sudo程序】。 && 则是把两个命令连起来执行的意思。vpsadmin用户加入sudo名单里,让他有资格借用root的神力】# visudo
在 User Priviledge Specification 下加入一行 vpsadmin ALL=(ALL) NOPASSWD: ALL 即可。NOPASSWD这个设置,它的意思是vpsadmin用户临时使用root权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root账号就是因为用root时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root用户的风险】大于【使用sudo时不用输密码的风险】,所以做了以上的建议。如果你希望遵守传统习惯、每次使用sudo时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL 即可。nano编辑器打开SSH远程登录程序设置】,什么,你想不起来怎么操作了?那去复习一下上面的内容再回来吧!………… 正确答案:# nano /etc/ssh/sshd_config
PermitRootLogin Yes这一项,然后把它后面的设定值改为no即可。还记得怎么操作吗?………… 正确答案:ctrl+w 进入搜索模式,然后输入 PermitRootLogin 并回车yes 并改成 noctrl+o,然后 回车 确认ctrl+x# systemctl restart ssh
root用户已无法连接,用户名就要换成vpsadmin了!方便起见,我们可以在PuTTY中把vpsadmin设置成默认登录用户名。(啰嗦君:别忘了保存Session)第三步,我们来解决【密码】可能被撞破的问题。
前面我说过,黑客并不是很蠢的用穷举法破解你的密码,而是会用一些比如“密码表”的作弊手段。除非你用的是随机生成的超长密码(比如借助1Password,或者macOS的keychain等密码管理工具),否则很容易中招。
超长随机密码虽然安全性有所提高,但是基本上无法记忆,手动输入也十分麻烦易错。为了解决这个困境,我们可以直接弃用【密码验证】方式,改用更安全的【密钥验证】。
所谓的【密钥验证】,就是生成【一对】相关联的密钥文件(公钥和私钥),然后把【公钥】上传到VPS备用。每次登录时,SSH会将【公钥】和【私钥】进行匹配,若验证是正确的【密钥对】,则验证通过。(换言之,你无需记忆和输入复杂的密码,只要保护好【私钥】这个文件不外泄即可)
那我们现在就来配置【密钥验证】吧!
4.7.1 运行PuTTYgen (PuTTY密钥生成器)。位置是 开始菜单 –> 所有程序 –> PuTTY (64-bit) –> PuTTYgenGenerate开始生成(在界面空白处乱晃鼠标增加随机数)Save public key 保存公钥,文件名为 id_rsa.pubSave private key 保存私钥,文件名为 id_rsa (PuTTY私钥自带.ppk后缀)authorized_keys。(用vscode保存,默认会变成带txt后缀的文本文件,这没关系,之后上传VPS时我们会把后缀名去掉)vpsadmin用户下WinSCP了。/home/vpsadmin/ 文件夹,此时在请点击右下角 X hidden 来显示隐藏文件 .ssh (注意有一个.) authorized_keys上传到.ssh文件夹内 authorized_keys.txt 改名为 authorized_keys(去掉.txt这个后缀名) 4.7.3 在VPS端设置SSH启用RSA密钥验证登录、同时禁用密码验证登录
cmd-08 | sudo | 用root权限运行某个命令 |
cmd-09 | chmod | 修改目标文件/文件夹的权限 |
authorized_keys 文件权限为 600 (仅所有者可读可写)$ chmod 600 ~/.ssh/authorized_keys
root变成了普通用户vpsadmin,此时的我们是没有权限直接编辑SSH配置的。这时候就需要使用sudo命令了:$ sudo nano /etc/ssh/sshd_config
ctrl+w) PasswordAuthentication 改成 noctrl+w) PubkeyAuthentication 改成 yes,然后保存(ctrl+o)退出(ctrl+x)sudo来获得权限)$ sudo systemctl restart ssh
4.7.4 VPS端已经设置好了公钥,现在要给PuTTY指定私钥位置供登录时使用(啰嗦君:别忘了保存Session)
VPS-SERVER配置后,点击Open就可以一键登录了。如果你给私钥设置了密码保护,登录时当然还需要输入这个密码才能使用密钥,如下图:
到这里为止,你的VPS已经完成了【端口】、【用户名】、【密码】这三要素的基本安全保障,虽然远称不上固若金汤,但一般的恶意脚本应该已经无法对你造成伤害了!
现在我们终于有了一个安全的系统基础,下一章,我们就可以开始逐步安装配置Xray需要的基础设施了!(什么基础设施呢?一个网页,一张证书)
⬛⬛⬛⬛⬜⬜⬜⬜ 50%