web-dev-qa-db-ja.com

プロキシの認証パラメーターをアプリケーションに渡す安全な方法はありますか?

プロキシサーバーの背後にいるため、インターネットにアクセスするには認証パラメーターを指定する必要があります。このため、ユーザー名、パスワード、ホスト、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/";

これにより、これらのファイルへの読み取りアクセス権を持つすべてのユーザーが自分のパスワードを公開することができます。

そのような人間が読める形式で記述する必要なく、プロキシ認証パラメーターを必要とするアプリケーションにこれらのパラメーターを渡す安全な方法はありますか?

注:永続的なメソッドを知っておくとよいでしょう。新しいセッションを開くたびにエクスポートすることで、一時的にこれを実行できることを知っています。しかし、新しいセッションを開くたびにこれを行う必要があります。これは避けたいです。

3
jobin

長い回答を書いてすみませんが、apt.confはシステムの非常にデリケートな問題です。したがって、すべての側面をクリアする必要があります。

~/.bashrc/etc/apt/apt.confが知っている限り、プロキシ設定が人間が読める形式で与えられた場合にのみ、プロキシ設定を受け入れますが、せいぜい異なるファイルからそれらを強制的に読み取ることができます。これを悪用します。 root/sudoerユーザー以外にはアクセスできないファイルのプロキシ資格情報を保持します。ただし、毎回使用する前に、プロキシ設定をapt-getおよび/またはsoftware-centerに公開する必要があります。

プロキシをシェル環境に提供する安全な方法

カット すべての内容 シェル環境でプロキシ設定を提供するために~/.bashrcに入れ、~/.mybashproxyなどのファイルに貼り付けます。 ~/.mybashproxy所有権をルートに変更し、sudoerのみがそれらにアクセスできるように、グループおよびその他の読み取り/書き込み許可を取り除きます。

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

~/.bashrcまたは~/.bash_aliasesに次のエイリアスを作成します。後者を使用したいと思います。

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

使用法

Sudoパスワードを提供するターミナルからのbegin_proxyコマンドにより、シェル環境でプロキシを有効にする必要があります。この方法では、誰もあなたのプロキシ認証情報を知りません。ただし、begin_proxyを使用した後、同じ端末へのアクセスを許可すると、端末でenv | grep proxyコマンドを使用して資格情報を表示できる場合があります。安全のため、begin_proxyを使用した端末と同じ端末を誰も使用できないようにしてください。

apt-getにプロキシを提供する安全な方法

apt-getおよびsoftware-centerは、ファイル/etc/apt.confを使用してプロキシ設定を保持します。ファイルを作成します/etc/apt/myproxy.txtおよび コンテンツを入れる ターミナルから/etc/apt/apt.confを開いて、

Sudo gedit /etc/apt/myproxy.txt

次に、目的のコンテンツをコピーして、ファイルを保存します。 chmodを使用して、上記のようにグループおよびその他の/etc/apt/myproxy.txtの読み取り/書き込み許可を削除します。

Say tmproxy.txt 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-getsoftware-centerを使用する前に、able_aptコマンドを使用してSudoパスワードを指定する必要があります。その後、すべてのプロキシ認証情報が/etc/apt/tmproxy.txtに保存され、apt-getおよび/またはsoftware-centerがそれを使用できるようになります。 software-centerを閉じるか、apt-getを使用して/etc/apt/tmproxy.txtからプロキシ認証情報を消去した後、コマンド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. ストーリーの最後には、使用する3つのエイリアスがあります。

    • begin_proxy-シェル環境でプロキシを開始します。ターミナルが開くまで続きます。
    • able_apt-apt-getおよび/またはsoftwere-centerを有効にし、プロキシ認証情報を/etc/apt/tmproxy.txtに保存します
    • disable_apt-apt-getおよび/またはsoftwere-centerを無効にし、/etc/apt/tmproxy.txtからプロキシ認証情報を消去する

これが役に立てば幸いです。

0
souravc