我正在研究Perl脚本,它使用Expect通过telnet登录到远程机器(不要问,必须使用telnet)。我还根据需要执行P4登录操作,并使用Expect-to管道输入正确的密码。目前,我只是从明文环境变量(即export PASSWORD=password)中读取密码,我知道这是不明智的安全措施。

对于需要多个系统的大量密码的脚本,存储密码的最佳方法是什么?以某种方式在文本文件中加密?或者别的什么?

请记住,我不能轻易地更改现有系统,例如,我不能真正安装ssh或类似的东西。

您试图防御哪些类型的威胁?在你工作的盒子上,你信任(或不信任)其他用户多少?

我只是开始这个脚本的工作,为了测试的目的,我把它作为纯文本。所以有共享的用户,很多用户共享这个盒子。所以主要是我希望其他用户至少不能随意地读取所有密码。

也许你最好的方法是把密码放在一个单独的文件中,并锁定该文件的安全性,这样只有你有读取权限。不幸的是,如果您在脚本中存储加密的密码,您还必须存储解密方法,这样攻击者就可以运行解密并恢复您的密码。

+1它是唯一合乎逻辑的解决方案,除非您想采用"通过模糊的安全"路径。

@lacqui-您可以在xs中编写(en de)加密代码并编译它,并通过perl与之接口,(为了安全起见)不使用标准的模块分发来分发xs源代码。但即使这样也不完美。

前面有一个非常相似的问题,看我的答案。

简而言之,人类必须摆脱信任链。其他的一切都令人困惑。

如果使用telnet,为什么要担心脚本中的密码?一个假定的攻击者会发现,从网络上捕获数据比从远程机器上捕获更容易,也更容易,而且在任何情况下您都无法对其做任何处理。

这听起来像是一个试图把栅栏放在窗户里,让门摇摆不定的例子。

这是一个很好的观点,我意识到使用telnet是一个坏主意,当然不是我的主意,但并没有在这些方面考虑。你真的是认真的吗?我不在乎?我想我必须关心,因为代码审查等,但有趣的想法,尽管如此。

将原因记录在代码中,推动流程中的更改,并将其记录在代码中。加密密码,然后通过telnet从脚本发送明文,就像用代码写下你的密码,然后在一个满是你不认识的人的房间里大喊大叫。

虽然我同意telnet,但仅仅因为前门的锁坏了并不意味着你就把所有窗户的锁都拆了。当你最后把前门锁修好时会发生什么?

当然有一个平衡。在我看来,这就像是一个有着系统性坏习惯的商店,试图在问题上撒上一点小精灵的灰尘,并称之为"完成"。这就是为什么我提倡记录这些问题,并明确它们之间的相互关系。只有这样你才能修好它们。

为了评估范围,在分段交换网络中读取嗅探密码的问题。这并不简单,所以我认为加密脚本中使用的密码仍然有帮助。我对你的回答投了赞成票,这当然让我想起来了。删除所有的telnet可能是非常昂贵的工作(数百万)。

不过,我应该补充一点,移动到ssh是在这里发生的,并非所有机器都是一夜之间发生的。

我加入了关于telnet是这里最大的问题的讨论。但我认为,当系统不能100%安全时,这种"为什么麻烦"的态度在信息安全领域太普遍了。噩梦般不安全的遗留系统无处不在,它们必须一个问题一个问题地处理。关于窗户/门的比喻,让门敞开并不是不在窗户上加横条的原因。你应该两者兼而有之,但是即使组织或预算的限制使"关门"成为不可能,也没有任何好的理由不关心系统的安全。

另外,对于telnet,如果在某些系统上安装ssh是不可能的,请不要放弃。您至少可以看看明文telnet数据包在网络中的位置。如果你有幸拥有现代交换机和管理它们的人,如果你有幸在一个或两个系统上都有一个额外的以太网卡,那么就把它们放进自己的VLAN中。如果您幸运地拥有一个防火墙或路由器ACL可用,那么就加入第3层和第4层规则限制telnet的来源和去向。

当你使用MacOSX的时候,我发现了从你的钥匙链中获取用户名和密码的好方法。

更新:截至2013年7月22日,链接似乎已断开。下面的bash代码片段显示了我如何使用该技术(下载iTunes销售数据):

domain="itunesconnect.apple.com"

user="user@example.com"

pass=$(security find-internet-password -ws $domain -a $user)

这里的链接断了…

@迪恩看到更新的答案。

既然您已经在使用expect,那么您应该考虑在包含密码的加密文件上重定向gpg-d。在系统环境变量中存储密码显然是错误的。用于解密GPG文件的密码将在开始时输入,然后从文件中加载所有密码并运行您的资料。然后就完成了,所以密码只在应用程序运行时以明文形式存在。

编辑就像旁注一样,在脚本中输入任何密码都是不好的;请记住,脚本只是一个纯文本文件,这使得查看密码变得非常容易。同样地,即使您编译的应用程序也可以使用"字符串"进行反转,该字符串可以查找代码中包含的字符串(通常是密码)。

所以我假设您的意思是"GNU隐私保护",它看起来并不存在于我们的盒子中,就您所知,GPG在hpux和solaris上编译没有问题吗?

我不确定gpg是否有solaris和hpux,但是如果它们是基于*nix的框,那么我确定有一个源。

我喜欢前面提到的将密码放在单独文件中的解决方案。此外,您还可以散列实际密码,就像/etc/passwd中所做的那样。尽管根据应用程序的方式,您可能会对所有的哈希键使用相同的哈希键。显然,这种方法的缺点是,必须有人输入hashkey才能运行脚本,而这在批处理环境中是行不通的。

从这个stackoverflow问题开始学习散列技术

linux自带perl加密,关于加密:如何在Perl脚本中加密或隐藏密码?相关推荐

  1. 如何在脚本中输入密码 linux,如何在shell脚本中为用户分配密码

    本篇文章给大家介绍的内容是关于如何在shell脚本中为用户分配密码,下面我们来看具体的内容. 我们先来看一下命令echo | passwd –stdin 例如: 使用以下命令更改shell脚本中用户j ...

  2. 明明安装了模块,还是出现 错误 ImportError: No module named ‘pandas‘ 原因LINUX上安装了多个python环境,将脚本中python 改为python3问题解

    明明安装了模块,还是出现 错误 ImportError: No module named 'pandas'  原因LINUX上安装了多个python环境,将脚本中python 改为python3问题解 ...

  3. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  4. Mac电脑使用:删除保存在Mac电脑自带的Safari浏览器、谷歌浏览器、火狐浏览器中的账号和密码的方法

    掌握删除保存在浏览器中的账号和密码的方法很重要,尤其是你在公司电脑上面存储的密码,万一哪天你离职了,一定要清理电脑浏览器上面存储的各种关于你自己的账号密码,如果不清理就会被别人使用,所以如果不是你私人 ...

  5. crytojs加密 java解密,使用CryptoJS在Javascript中加密并在Java中解密

    我试图使用谷歌的 https://code.google.com/p/crypto-js/#AES加密JavaScript,就像它的例子一样.问题是,我试图用Java解密它的结果是不同的.我可以看到的 ...

  6. linux下载带中文名的文件夹,如何在Linux下删除文件名是乱码或者带有特殊字符的文件...

    今天遇到一个问题,一个文件名是"-MXV9.log",直接用rm删除的时候就报错 [localhost]rm -MXV9.log rm: illegal option -- M r ...

  7. linux下带.d的文件夹,linux – 如何在shell脚本中包含目录中的所有文件(在本例中为/etc/init.d/iptables)...

    我在不同的ubuntu服务器上有一个/etc/init.d/iptables start | stop | restart脚本(这是一个普通的 shell脚本) 对于每个新服务,我必须编辑并插入一行来 ...

  8. linux shell 字符串替换字符,关于bash:在shell脚本中替换另一个字符串的一个子字符串...

    我有"我爱苏西并结婚",我想把"苏西"改成"萨拉". #!/bin/bash firstString="I love Suzi a ...

  9. linux 辅助ip地址到文本,技术|如何在 Ubuntu 系统中添加一个辅助 IP 地址

    Linux 管理员应该意识到这一点,因为这是一项例行任务.很多人想知道为什么我们需要在服务器中添加多个 IP 地址,以及为什么我们需要将它添加到单块网卡中?我说的对吗? 你可能也会有类似的问题:在 L ...

  10. linux脚本done报错,linux – 如何在shell脚本中处理错误/异常?

    下面是我在bash中执行的脚本.它工作正常. fileexist=0 for i in $( ls /data/read-only/clv/daily/Finished-HADOOP_EXPORT_& ...

最新文章

  1. Transformer与BERT浅说
  2. layer output 激活函数_一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)...
  3. 前 K 个高频元素—leetcode347
  4. Modbus通信协议之CRC16冗余循环校验函数
  5. [从架构到设计]第一回:设计,应该多一点
  6. Flex【原创】惯性定位效果
  7. MTK通用驱动的安装
  8. LabVIEW使用 NI Package Manager(NIPM)修复软件
  9. web前端页面开发工具的演进史
  10. 一人有限责任公司章程范本
  11. 四元数旋转表达(Hamilton notation JPL notation)
  12. 如果想变强,有我在2
  13. 华为机架式服务器型号,华为2488H V5机架式服务器
  14. 【转】matlab中和的区别
  15. java删除图片杂色_Java生成图片,Graphics生成图片,Graphics2D生成图片,Awt生成图片
  16. 提升制造卓越性 沿着价值链管理生产流程
  17. 开启或关闭3389端口
  18. DOS命令下硬盘坏道检测和修复工具
  19. java面试jdbc问题_JDBC面试问题
  20. 鼎泰高科深交所上市:市值120亿 实控人王馨家族色彩极浓厚

热门文章

  1. 沧小海笔记之PCIE协议解析——第一章 PCIE概述(上)
  2. 苹果cms V10模板|首涂第二十五套精简宽屏主题模板破解带后台无加密版
  3. NB-IOT平台之电信平台FOTA 升级记录
  4. 公开课丨苏杰新著来袭,十年之后再谈人人都是产品经理!
  5. 2019最新版QQ音乐api调用(原创)
  6. 声道测试音频_嵌入式平台上的自动音频接口测试
  7. 小学数学测试软件前言,小学数学教学案例集序言.docx
  8. SQL岗位30个面试题,SQL面试问题及答案
  9. 《Go程序设计语言》- 第13章:低级编程
  10. WEB前端视频教程网站推荐