在购买了一台安装Linux系统的VPS之后,首先要做好一定的安全防护措施,来尽可能地保证你的VPS不会沦为某些人的肉鸡。
修改SSH默认端口
这个世界上,总有不少无聊的人做着SSH弱口令扫描这种事情,相信我,你的IP一定是在被扫描的IP段里的,所以,更换掉SSH的默认端口会是个好主意。
用你喜欢的文本编辑器,编辑 /etc/ssh/sshd_config
,修改如下内容:
1 | # SSH默认端口号为22 |
保存配置文件,并重启SSH服务端进程,使新的配置生效。注意此时不要退出现在的SSH会话,因为一旦出现问题,我们还可以使用这个会话来修复,否则就只能通过虚拟控制台来登陆了
接下来新开一个SSH会话,记得通过新指定的端口号来连接,以检查配置是否正确无误。没问题之后,就可以关掉其中一个SSH会话了,毕竟还是不要浪费资源,注意环保不是。
启用防火墙
一台放在公网上的,没有防火墙的服务器,那就是一台公交车。那么怎么变成私家车呢?废话,开防火墙啊!
目前已经有一些iptables的前端工具,来简化防火墙的配置了,所以不建议直接操作iptables。当然如果您有信心,那就当我没说。
不同发行版所使用的iptables前端可能是不一样的,比如CentOS使用的是 firewalld
,而Ubuntu使用的是 ufw
。由于我使用的是Ubuntu,所以下面就以 ufw
来举例了,使用 firewalld
的同学,可以参考这篇文章来学习。
1 | # 首先检查防火墙是否在运行 |
这样防火墙就启动了,并且仅接受来自15端口的入站请求。
在配置放行列表的时候,注意仅添加必要的端口。乱开一气,或者直接允许所有端口,那就跟没有防火墙一样了。
禁止root用户通过SSH登陆
地球人都知道,root是Linux系统中权限最高的用户,同时也是最危险的用户。所以当然不能开放root远程登录的权限。
在此之前,你需要先创建一个自己的用户,并且设置好密码,保证可以正常登陆到系统中。至于创建用户的方法我这里就不赘述了。
有了自己的用户之后,编辑 /etc/ssh/sshd_config
,修改如下内容:
1 | # 允许使用root用户登陆 |
保存并重启SSH服务,就可以阻止root用户通过SSH登陆了。
使用RSA密钥对登陆SSH
在防止被破解的角度上,光是换端口和开防火墙,是远远不够的。还记得上文提到的SSH弱口令扫描吗?相信我,你绞尽脑汁想出来的密码,还真不一定打得过字典,而VPS提供商给你的默认密码,你确定你能记得住?但是RSA密钥对不仅能抵抗字典攻击,还不需要你记忆什么登陆信息,何乐而不为?
生成密钥对
Windows下生成密钥对
如果你用的是Windows,那么可以参考这篇文章来生成你的密钥对,并将其上传至服务器。
Linux下生成密钥对
如果你用的是Linux,那么可以使用 ssh-keygen
命令生成密钥对。
首先在本地电脑上生成密钥对
1 | $ ssh-keygen -b 2048 |
生成好了之后,就可以使用 ssh-copy-id
来传输公钥到远程服务器了:
1 | ssh-copy-id -i ~/.ssh/id_rsa <USERNAME>@<HOST> |
然后就可以使用密钥登陆来测试了,方法很简单,只需要为 ssh
命令添加 -i
参数并指定私钥文件即可,如果私钥文件名为 id_rsa
的话, -i
参数也可以省略了。
如果觉得使用密钥登陆的命令过长,那么可以参考我的另一篇博客使用 SSH config 简化 SSH 连接来简化SSH客户端的操作。
配置SSH仅接受密钥登陆
在服务器上编辑 /etc/ssh/sshd_config
修改如下内容:
1 | # 启用公钥认证 |
保存文件并重启SSH服务,然后服务器就只会接受通过密钥认证的登陆请求了,在密钥错误或者未提供密钥的时候,服务器会直接拒绝请求。
做完以上几步之后,通常的端口扫描和弱口令攻击基本上就免疫了,但是安全没有终点,在日常维护中还是需要时常检查鉴权日志和防火墙日志,以保证系统仍处于安全的状态下。在配置其他应用的时候,也要考虑到应用的安全相关的配置。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!