linux - 在类似 Linux/UNIX 的纯文本文件中隐藏网络代理密码

标签 linux security unix proxy apt

通常在大型网络中,计算机需要在经过身份验证的代理之后运行 - 与外界的任何连接都需要用户名/密码,这通常是用户用于登录电子邮件、工作站等的密码。

这意味着必须将网络密码放入 apt.conf 文件以及通常的 http_proxy、ftp_proxyhttps_proxy 环境变量中在 ~/.profile

中定义

我意识到使用 apt.conf 可以设置 chmod 600(在 Ubuntu/Debian 上它不是默认设置!)但是在我们的系统上有需要root权限的人。

我还意识到,从技术上来说,从具有 root 访问权限的人那里获取密码是不可能的,但是我想知道是否有办法隐藏密码以防止意外发现。 Windows 以管理员身份运行,但以某种方式存储网络密码(可能以某种方式隐藏在注册表深处),以便在典型使用中您不会以纯文本形式偶然发现它

我才问,从前几天开始,我在跨系统比较配置文件时,完全偶然地通过这种方式发现了别人的密码。

@monjardin - 恐怕在这个网络上公钥身份验证不是替代方案。另外,我怀疑大多数命令行工具都支持它。

@Neall - 我不介意其他用户可以访问网络,他们可以使用我的凭据访问网络,我只是不希望他们以纯文本形式出现在我的密码中。

最佳答案

使用以下方法,您永远不必以纯文本形式保存您的代理密码。您只需在需要 http/https/ftp 访问权限时以交互方式输入密码即可:

  • 使用 openssl 将您的纯文本代理密码加密到文件中,例如AES256 加密:

openssl enc -aes-256-cbc -in pw.txt -out pw.bin

  • 使用(不同的)密码来保护编码文件
  • 删除纯文本 pw.txt
  • 创建别名,例如~/.alias 设置你的 http_proxy/https_proxy/ftp_proxy 环境变量(为 $USER/proxy/$PORT 设置合适的值)

alias myproxy='PW=`openssl aes-256-cbc -d -in pw.bin`; PROXY="http://$USER:$PW@proxy:$PORT"; export http_proxy=$PROXY; export https_proxy=$PROXY; export ftp_proxy=$PROXY'

  • 你应该将这个文件 source 到你的正常 shell 环境中(在某些系统上这是自动完成的)
  • 键入“myproxy”并输入您用于加密文件的 openssl 密码
  • 完成。

注意:在 shell session 期间,密码在用户环境中可用(且可读)。如果你想在使用后从环境中清除它,你可以使用另一个别名:

alias clearproxy='export http_proxy=; export https_proxy=; export ftp_proxy='

关于linux - 在类似 Linux/UNIX 的纯文本文件中隐藏网络代理密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18943/

相关文章:

Python 通过 ssh 终止进程

android - 在 linux centos 平台上使用 Jenkins 和 Gradle 构建 Android 应用程序时出错

linux - 如何编写shell脚本来找出CQ5集群环境中哪个节点充当master

c# - 在 C# web api 上进行用户身份验证的最佳做法是什么?

flash - 当 Flash 访问 https 资源时会发生什么?

linux - 通过比较 shell 脚本中的两个字符串来请求变量

linux - Solr 服务器内存和磁盘空间

android - 展示如何使用 Android ID 认证的示例代码

mysql - 为什么 MySQL SLEEP() 函数返回 0?

css - 用于从文件中查找、转换和替换值的 Unix 脚本