EC2インスタンスでhttp proxyサーバーを利用する - mechamogera/MyTips GitHub Wiki

ec2インスタンスをhttp proxyサーバーにしてsshトンネリングで利用する

ローカルネットワークの環境(socksプロキシで外部へのssh可能)から外部へのwebサイトを閲覧してみる

手順

  1. ec2インスタンス(Amazon Linux)作成
  2. ec2インスタンスでhttp proxyサーバー設定
$ sudo yum -y install httpd
$ sudo vi /etc/httpd/conf/httpd.conf
# => 以下の行の#を外す
<IfModule mod_proxy.c>
ProxyRequests On
...
</IfModule>
$ sudo /etc/init.d/httpd start
  1. sshトンネリング
  • ローカルなマシンで以下を実施
ssh -L 10080:localhost:80 [ec2のDNS名]
  1. ブラウザの設定
  • ローカルマシンのブラウザでhttp proxyでlocalhost:10080を利用するように設定

proxyサーバーをdigest認証が必要なようにしてみる

手順

  1. パスワードファイル作成、配置
$ htdigest -c .htdigest private [ユーザ名]
Adding password for [ユーザ名] in realm private.
New password: ****
Re-type new password: ****
$ sudo mkdir /var/www/secure
$ sudo mv .htdigest /var/www/secure
  1. httpd.conf修正、再起動
  • /etc/httpd/conf/httpd.confを以下のように設定
<IfModule mod_proxy.c>
ProxyRequests On

  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from all

    AuthType digest
    AuthName "private"
    AuthUserFile /var/www/secure/.htdigest
    Require valid-user
  </Proxy>

</IfModule>
  • httpd再起動
$ sudo /etc/init.d/httpd restart
  1. プラウザアクセス
  • ローカルマシンのブラウザでhttp proxyで[ec2インスタンスのDNS名]:80を利用するように設定
  • ユーザ名とパスワードを聞かれたら設定した値を入力 => OK
  1. curlでの確認
  • 以下のようにして確認君のページにアクセスしてみる => OK
curl --proxy http://[ec2のdns名]:80 --proxy-digest --proxy-user [ユーザ名]:[パスワード] http://www.ugtop.com/spill.shtmt.html

特定のIPからのアクセスはdigest認証が必要無いようにしてみる

  1. httpd.conf修正、再起動
  • /etc/httpd/conf/httpd.confを以下のように設定
<IfModule mod_proxy.c>
ProxyRequests On

  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from [許可したいIP]
    Satisfy Any

    AuthType digest
    AuthName "private"
    AuthUserFile /var/www/secure/.htdigest
    Require valid-user
  </Proxy>

</IfModule>
  • httpd再起動
$ sudo /etc/init.d/httpd restart
  1. プラウザアクセス
  • 許可したいIPからのアクセス => 認証を求められない
  • Allow from [許可したいIP]を削除した状態 => 認証を求められる

参照サイト

⚠️ **GitHub.com Fallback** ⚠️