是否有一種安全的方法將代理的身份驗證參數傳遞給應用程式?

是否有一種安全的方法將代理的身份驗證參數傳遞給應用程式?

我位於代理伺服器後面,需要指定身份驗證參數才能存取網際網路。為此,我已將我的使用者名稱、密碼、主機和 port_no 匯出到我的/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/etc/apt/apt.conf我將利用這一點。我會將代理憑證保留到 root/sudoer 使用者以外的任何人都無法存取的檔案中。但每次使用代理設定之前apt-get和/或使用它們之前都必須公開它們。software-center

向 shell 環境提供代理的安全方法

所有內容您將其放入~/.bashrcshell 環境中,以便在 shell 環境中提供代理設定並貼上到文件中,例如~/.mybashproxy.將所有權更改~/.mybashproxy為 root 並剝奪群組和其他群組的讀寫權限,以便只有 sudoers 可以存取它們。

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

~/.bashrc在或 in中建立以下別名~/.bash_aliases,我更喜歡使用後者。

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

用法

您必須透過begin_proxy提供密碼的終端命令在 shell 環境中啟用代理sudo。這樣,沒有人會知道您的代理憑證。但是使用後,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-get設定software-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,使用 command disable_apt。在此過程中,也沒有人可以看到您的代理憑證,除非您/etc/apt/tmproxy.txt忘記使用它們disable_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

希望這會有所幫助。

相關內容