LoginSignup
4
5

More than 5 years have passed since last update.

認証付きProxyの設定を安全に運用したい

Posted at

背景・目的

弊社では社内NWからインターネットに接続する場合は必ずProxyを通らなければならない。
Linuxの場合、環境変数HTTP_PROXYを設定してあげれば大体うまく行く。
大体どの記事読んでも.bashrcあたりにexportを書いてくださいとあるけど、
下記のような理由でこれをしたくない。

  • Proxyにユーザー認証が必要で、個人のユーザー名とパスワードが必要
  • 弊社ルールによりパスワードを90日毎に変更しなければならず、その都度パスワードを書き換えるのは美しくない
  • そもそも、個人のパスワードを平文で書かなければならずセキュリティ的に論外

そんなわけで、認証付きProxyを上手いこと設定する方法を模索。

目標

  • 認証付きProxyを環境変数に追加したい
  • 設定するときにユーザー名とパスワードを尋ねる形にしたい

できたもの

ひとまず、下記のようなスクリプトを書いてみた。
プロキシサーバー名とかホスト名は仮で。

#!/bin/bash

function set_proxy() {
  echo -n "user name:"
  read user
  echo -n "password:"
  read -s pass
  echo

  export HTTP_PROXY=http://$user:$pass@proxy.server.co.jp:8080
  export http_proxy=http://$user:$pass@proxy.server.co.jp:8080
  export NO_PROXY=localhost,127.0.0.1
}

function unset_proxy() {
  unset HTTP_PROXY
  unset http_proxy
}

while :
do
  echo "1 : Proxyを設定します"
  echo "2 : Proxy設定を解除します"
  echo -n "mode :"
  read mode

  case "$mode" in
    "1" )
      set_proxy
      echo "Proxyを設定しました"
      break ;;
    "2" )
      unset_proxy
      echo "Proxy設定を解除しました"
      break ;;
  esac
done

これをset-proxyとか適当な名前で保存して、適当なところに配置する。
実行権限を与えるのを忘れずに。

使い方

とりあえず呼び出して、あとはメニューに沿って所望の設定をしてあげるだけ。
ひとつ注意点として、sourceコマンドと併せて呼び出さないと反映されない。

source set-proxy

うーん...美しくない...

補足

HTTPSとか他のプロトコルでもProxy設定したい場合は、必要な分だけ行を追加する。
NO_PROXYはunsetしてないけど、弊害はないでしょう。多分。

雑感

よくできたところ

  • ひとまず目標としていたことはクリアできた
  • マルチユーザー環境でも個別にProxy設定できるので、セキュリティ的にも安心

イマイチなところ

前述のとおり。sourceコマンドを使わないといけないので、なんともダサい。

おわりに

Proxy関連の話をちょっとググると大量に記事が出てくるので、
それだけ悩んでる人がいるのでしょう。
少しでも助けになれば。
もっと良い方法があれば是非ご連絡ください。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5