这两天首页看见好几个问 ssh 安全相关的帖子,分享一下我所知的安全知识吧,都比较基础,但应该也有不知道的朋友。有不对的地方大家也多批评指正。
现在公网上的服务器,基本都处在 24 小时被扫描水平中。很多初识 linux 的朋友没干过的一件事是打开 var/log,打开仔细看看就知道了,即使没被人盯上,一天几万扫描正常。所以构建一个有基本防护性的远程机器应该是程序员入门,不说是必修课了,基本算预科吧。以下几个基本观点
1 、Linux 本身不具备默认的安全防护机制。大家都知道 linux 登录,如果密码错误的话会等待一段时间才给提示的,给人一种心理暗示是他不会被人暴力破解。导致我当年从最开用 linux 之后过了很长时间,才知道 linux 原来默认可以无限试密码,而且没有任何辅助屏蔽机制。
2 、基于上一点,linux 面对的首要安全威胁是暴力破解。尤其在局域网环境当中,尤其是当对方使用 gpu 这类工具进行暴力尝试的时候。起码我个人就听说过一些 gpu 用程序,名字不说了,如果你的机器使用的是弱密码(仅包含大写字母,小写字母,数字,且长度小于等于 10),在局域网内(如果网关方面没有特殊处理的话)我有很大把握,今天要你的口令,当天就能拿到。
3 、安全对策方面,我在看之前帖子里,很多人说用证书登录。实不相瞒,我至今不会使用证书登录,也没有机器是用证书管理的,全部都是密码登录。因我一直感觉证书登录配置非常麻烦,在机器间切换也颇不易。
4 、在暴力破解的对策方面,众所周知的是随着密码包含内容量上升,其破解时间会成几核倍数上升,所以最基本的安全策略是强密码。
5 、安全配置方面,个人意见是要做到平衡,也就是不要搞极端,配置简单也是很重要的。个人推荐新机器进行如下安全配置,和理由:
A 、不需要修改 ssh 端口,理由为不易管理,调多了端口号,会和架微服务搞出一大堆端口号一样让人分辨不清。且即使修改端口,也只是一定程度上针对算力的对策而已,只能一定比例地减少被扫描量。
B 、禁用 root 用户登录。这么做有两点好处,其一是使用自建用户,相当于几何倍增加暴力破解复杂度(同时,可以随脑携带)。其二为,禁用 root 后,root 设弱密码其实也无所谓了,执行 sudo 命令时可以少打字。
C 、不使用证书登录,使用强密码即可。
D 、安装 fail2ban,保留默认配置。我早年使用 f2b 的时候还喜欢改改配置,后来发现按默认配置,也需要百亿台机器破解百亿年,似乎是完全不需要担心的时长。。
E 、大概这么多就完事了,足以保证高枕无忧,其他的我感觉都没必要。有安全常识的人都应该知道,安全系统里最容易出问题的是人,第二容易出问题的反正不会是 linux 。部署服务方面,我个人部署经验中,遇到过网上下载 php 框架本身带毒的,遇到过 python 搭服务被拿下的(框架 tornado)
现在公网上的服务器,基本都处在 24 小时被扫描水平中。很多初识 linux 的朋友没干过的一件事是打开 var/log,打开仔细看看就知道了,即使没被人盯上,一天几万扫描正常。所以构建一个有基本防护性的远程机器应该是程序员入门,不说是必修课了,基本算预科吧。以下几个基本观点
1 、Linux 本身不具备默认的安全防护机制。大家都知道 linux 登录,如果密码错误的话会等待一段时间才给提示的,给人一种心理暗示是他不会被人暴力破解。导致我当年从最开用 linux 之后过了很长时间,才知道 linux 原来默认可以无限试密码,而且没有任何辅助屏蔽机制。
2 、基于上一点,linux 面对的首要安全威胁是暴力破解。尤其在局域网环境当中,尤其是当对方使用 gpu 这类工具进行暴力尝试的时候。起码我个人就听说过一些 gpu 用程序,名字不说了,如果你的机器使用的是弱密码(仅包含大写字母,小写字母,数字,且长度小于等于 10),在局域网内(如果网关方面没有特殊处理的话)我有很大把握,今天要你的口令,当天就能拿到。
3 、安全对策方面,我在看之前帖子里,很多人说用证书登录。实不相瞒,我至今不会使用证书登录,也没有机器是用证书管理的,全部都是密码登录。因我一直感觉证书登录配置非常麻烦,在机器间切换也颇不易。
4 、在暴力破解的对策方面,众所周知的是随着密码包含内容量上升,其破解时间会成几核倍数上升,所以最基本的安全策略是强密码。
5 、安全配置方面,个人意见是要做到平衡,也就是不要搞极端,配置简单也是很重要的。个人推荐新机器进行如下安全配置,和理由:
A 、不需要修改 ssh 端口,理由为不易管理,调多了端口号,会和架微服务搞出一大堆端口号一样让人分辨不清。且即使修改端口,也只是一定程度上针对算力的对策而已,只能一定比例地减少被扫描量。
B 、禁用 root 用户登录。这么做有两点好处,其一是使用自建用户,相当于几何倍增加暴力破解复杂度(同时,可以随脑携带)。其二为,禁用 root 后,root 设弱密码其实也无所谓了,执行 sudo 命令时可以少打字。
C 、不使用证书登录,使用强密码即可。
D 、安装 fail2ban,保留默认配置。我早年使用 f2b 的时候还喜欢改改配置,后来发现按默认配置,也需要百亿台机器破解百亿年,似乎是完全不需要担心的时长。。
E 、大概这么多就完事了,足以保证高枕无忧,其他的我感觉都没必要。有安全常识的人都应该知道,安全系统里最容易出问题的是人,第二容易出问题的反正不会是 linux 。部署服务方面,我个人部署经验中,遇到过网上下载 php 框架本身带毒的,遇到过 python 搭服务被拿下的(框架 tornado)