是否有一种安全的方法将代理的身份验证参数传递给应用程序?

是否有一种安全的方法将代理的身份验证参数传递给应用程序?

我位于代理服务器后面,需要指定身份验证参数才能访问互联网。为此,我已将用户名、密码、主机和端口号导出到我的/home/$USER/.bashrc文件和/etc/apt/apt.conf文件中,这些文件是人类可读的。
例如

Acquire::http::proxy "http://<username>:<password>@172.16.0.2:8080";
Acquire::ftp::proxy "ftp://<username>:<password>@172.16.0.2:8080/";
Acquire::https::proxy "https://<username>:<password>@172.16.0.2:8080/";

这就导致任何有这些文件读取权限的人都可以看到我的密码。

是否有一种安全的方法可以将这些参数传递给需要代理身份验证参数的应用程序,而无需以这种人类可读的形式书写?

笔记:知道永久方法会很好。我知道每次打开新会话时我都可以通过导出来暂时做到这一点。但每次打开新会话时我都必须这样做,我想避免这种情况。

答案1

抱歉写了这么长的答案,但这apt.conf是一个非常敏感的系统问题。因此有必要弄清楚所有方面。

据我所知,只有以人类可读的形式提供代理设置时,~/.bashrc才会接受它,最多可以强制它们从不同的文件中读取。我要利用这一点。我将把代理凭据保存到除 root/sudoer 用户之外的任何人都无法访问的文件中。但每次使用之前都必须向和/或公开代理设置。/etc/apt/apt.confapt-getsoftware-center

为 shell 环境提供代理的安全方法

所有内容将其放入您的文件中~/.bashrc,以便在 shell 环境中提供代理设置,然后粘贴到文件中~/.mybashproxy。将~/.mybashproxy所有权更改为 root,并剥夺组和其他人的读写权限,以便只有 sudoers 可以访问它们。

sudo chown root:root ~/.mybashproxy
sudo chmod go-rw ~/.mybashproxy

~/.bashrc在或 在 中创建以下别名~/.bash_aliases,我倾向于使用后者。

alias begin_proxy='sudo cat .mybashproxy > .tmp; source .tmp; rm .tmp'

用法

您必须通过begin_proxy终端命令提供sudo密码来在 shell 环境中启用代理。这样,没有人会知道您的代理凭据。但是使用后,begin_proxy如果您允许某人访问同一终端,他可能能够使用env | grep proxy终端中的命令查看您的凭据。为了安全起见,不要允许任何人使用您使用的同一终端begin_proxy

为 apt-get 提供代理的安全方法

apt-getsoftware-center使用该文件/etc/apt.conf保存代理设置。创建一个文件/etc/apt/myproxy.txt把内容/etc/apt/apt.conf可以通过终端打开它,

sudo gedit /etc/apt/myproxy.txt

接下来复制所需内容并保存文件。/etc/apt/myproxy.txt使用 删除组和其他人的读写权限,如上所示chmod

tmproxy.txt创建一个名为 say at 的临时文件/etc/apt/,并授予所有人读写权限,如下所示,

sudo touch /etc/apt/tmproxy.txt
sudo chmod go+rw /etc/apt/tmproxy.txt

我将在必要时向其提供代理设置apt-getsoftware-center添加以下行/etc/apt/apt.conf以从中读取代理设置/etc/apt/tmproxy.txt

#inclued /etc/apt/tmproxy.txt;

除了上面的行/etc/apt/apt.conf应该不包含任何内容。现在在~/.bash_aliases

alias able_apt='sudo cat /etc/apt/myproxy.txt > /etc/apt/tmproxy.txt'
alias disable_apt='echo "0;" > /etc/apt/tmproxy.txt'

用法

在使用apt-get和/或之前,software-center您必须使用able_apt提供sudo密码的命令。然后,您的所有代理凭据将存储在/etc/apt/tmproxy.txtapt-get/或software-center可以使用它。关闭software-center或使用后,apt-get要从中删除代理凭据/etc/apt/tmproxy.txt,请使用命令。在此过程中,除非您忘记使用,disable_apt否则没有人可以看到您的代理凭据/etc/apt/tmproxy.txtdisable_apt

注释和摘要

  1. 在别名中,零后的disable_apt分号 ( ;) 很重要,否则你会得到错误“文件末尾有额外的垃圾”右上角面板上还会出现红色错误图标。
  2. 如果你没有~/.bash_aliases,请创建一个。source ~/.bashrc确保其中~/.bashrc包含以下行,
   if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
    fi
  1. 完成上述设置后,要启用别名,您必须立即注销并登录一次,或者可以source ~/.bash_aliases在终端中使用。
  2. 在故事的结尾你有三个可以使用的别名:

    • begin_proxy- 在 shell 环境中启动代理。持续到终端打开。
    • able_apt- 启用apt-get和/或softwere-center存储代理凭据/etc/apt/tmproxy.txt
    • disable_apt- 禁用apt-get和/或softwere-center清除代理凭据/etc/apt/tmproxy.txt

希望这会有所帮助。

相关内容