========= 原创说明:转载请注明出处!===========
Copyright: Auther@, all right reserved.
@ Mar 6th 2020
===========================================
先说说问题,在开发运维中,经常碰到需要登录服务器的情况,又不能随时随地带着电脑。
那怎么办呢?—— 找一个中间服务器做登录堡垒!手机上放个ssh客户端,应急用。
想法固然好,但是问题又来了:
1. 口令太多记不住;2. 证书太多放在第三方服务器上不安全。
怎样才能最好的解决这个问题呢?
想了一个简单方便的方法,解决思路:
- 利用shell脚本自动登录,加一个口令保护
- 利用 shc 对脚本进行本地编译,加密后上传堡垒服务器
- 将目标地址用自己可懂的菜单或者命令参数的形式标注下来
- 所有登陆的证书放在临时共享内存中,自己随便命名,15秒后删除,ctrl+c 之类的中断也会自动删除。
比如:我们的脚本名称叫做:linkme.sh
利用 shc 对脚本进行编译的方法:
【本地安装 shc 工具】
$ sudo apt install shc
【按照自己的习惯编辑一下 linkme.sh脚本】
这一步主要看自己的习惯,需要修改的地方:
- 命令菜单具体的名称 @line:15-20
- 对应登陆的证书 @line: 60, 85
- 登陆的目标地址或域名 @line: 116, 118
- 是先口令还是先菜单提示,各取所好吧 @line 14-24
- 最重要的,一定要改好自己的口令!@line 27
关于安全性的讨论:
- 由于shc加密的脚本,在执行过程中,会被解密成明文放在内存里边,所以,还是可以被破解的,具体方法可以自己 search
- 这种方法安全性不高,本文里边只是为了方便,避免别人非常方便的偷走鉴权信息。
- 被别人点了后院的,自行负责,哈。
OK,我写了一个参考代码,供大家参考。https://download.csdn.net/download/auther_bin/12230217
========== 进阶 ===============
由于上述方法存在可以被 core_dump 破解的可能性,所以,最好的方式还是通过openssl再做一层加密,
链接脚本本身不在做密码保护,而是把其编译的二进制文件用openssl高强度加密一层,生成的二进制文件再通过base64编码,再次放在另外一个脚本中,用同样的方法再作一遍,这样一来,所有的敏感信息都会被openssl保护住,密码不对的情况下,可以破解第一层,无法破解到真是的链接脚本。这里就不再给出具体的实现方法了,有兴趣的同学可以自行完成作业。