.
.
.
.
.
TOPページ(Alt+B)
.
Proxyサーバー続編

Proxyサーバー編でProxyというものがどういったものなのかご理解頂けたことと思いますが、ここでは更にイントラネットにおけるProxyサーバーの利便性について、そしてそれらを含む危機管理についてみてみることにしましょう。

イントラネットにおけるProxyサーバー

Proxyサーバーは、企業などのイントラネット上においても有効な手段です。その基本的な機能は、インターネットからアクセスさせたくないイントラネット上に格納されているファイルを保護することです。Proxyサーバー編でも述べたように、一般にProxyサーバーは、何かをしようとしている人に代わって機能を実行します。その機能には外向きProxy内向きProxyの二つの機能があり、それぞれ下記のようになっています。

外向きProxy

イントラネット組織内部のユーザーからのリクエストを処理し、リモートサイトからリソースを取得する際に実質的にクライアントとして振る舞う。つまりアクセスしたのは組織内部の1ユーザーであっても、アクセス先からみるとアクセスしてきたのはその1ユーザーではなくProxyサーバーということになります。内部のユーザーはProxyを認識させるようにWebブラウザを設定する必要があります。

内向きProxy

イントラネット組織への外部からのリクエストを受け付けるように設定され、ホスト対象のサーバーに対してクライアントとして振る舞い、ファイルを取得してキャッシュに保存する。つまり外部からのリクエストは直接組織内部にアクセスされることなくProxyサーバーに保存され、組織内部からはこの保存されたデータを取得します。

内部ネットワークとインターネットの関係

上記でもお分かりのように、個人レベルでのProxyは多くの場合匿名性を保つために使用されるのに対し、イントラネットにおけるProxyは外部から内部ネットワークを守ることが主目的となります。

Proxyの利点と欠点

利点

1.ファイアーウォール(外部のクライアントが内部のネットワークにアクセスできないようにするシステム)として機能するため、セキュリティの向上が期待できる。

2.組織内の多数のユーザーにDNSを参照することなくインターネットへアクセスするための安全な手段を提供できる。つまり、組織内に1台でもインターネットへアクセスできるマシンがあれば、そのマシン経由ですべてのマシンが安全にインターネットへアクセスできるようになる。

3.内部Webサーバーの負荷を減らすことができる。Webサイトにアクセスする人が多数居て特定のサイトへのアクセスが多い場合、クライアントはそのドキュメントが実際に置かれているサーバーではなく、Proxyのキャッシュからドキュメントを取り出せる。通常、元のホストから取り出すよりProxyキャッシュから取り出したほうが高速である。

欠点

1.Proxyサーバーが何らかの要因でダウンしたときには全員が外とのアクセスを断たれることになる。

2.Proxyのキャッシュからドキュメントを取り出すほうが高速なのは事実だが、ファイルがキャッシュになく元のホストから取り出すときには時間がかかる場合もある。

Proxy自動構成の使用

大規模な企業等ともなるとネットワーク接続される各マシンに対してそれぞれProxyの設定を行っていくということは現実的ではありません。そこで登場するのがProxy自動構成(Proxy Auto Config)ファイル(PACファイル)というものです。このファイルはJava Scriptで記述されています。以下を見てください。

function FindProxyForURL(url, host)
 {
  if (url.substring(0, 5) == "http:") {
  return "PROXY 192.168.1.5:8080; PROXY 192.168.1.6:8080; DIRECT";
  }
  else if (url.substring(0, 4) == "ftp:") {
  return "PROXY 192.168.1.5:8080; PROXY 192.168.1.6:8080; DIRECT";
  }
  else if (url.substring(0, 6) == "https:") {
  return "PROXY 192.168.1.5:8080; PROXY 192.168.1.6:8080; DIRECT";
  }
  else if (url.substring(0, 7) == "gopher:") {
  return "PROXY 192.168.1.5:8080; PROXY 192.168.1.6:8080; DIRECT";
  }
 }

もし先頭から5文字が"http:"ならポート8080上のProxy"192.168.1.5"というサーバーに接続し、そのサーバーが何かの事情で見つからない場合にはProxy"192.168.1.6"というサーバーに接続し、それも見つからない場合にはダイレクト接続する、といった内容になっています。サーバーの指定はIPアドレスでもホスト名でも構いません。このファイルを「適当な名前.pac」と付けネットワーク上のいずれかの共有マシンのディレクトリに置いてやるだけです。
このファイルを参照するには、各マシンはブラウザの自動プロキシ構成ファイルを使用するように設定します。IEでの方法は「インターネットのプロパティ」から「接続」タブを選択し、「LANの設定」ボタンを押すと下記画面が出てきます。(ブラウザの種類、バージョンによって異なる場合があります)

LANの設定

「自動設定のスクリプトを使用する」にチェックを入れ、アドレスを指定します。Netscapeの場合も同様に「編集」-「設定」の「詳細」カテゴリのプロキシで「自動でプロキシを設定する」欄にアドレスを指定します。

設定画面

アドレスは「file://」形式でも構いませんし、その共有マシン上でApache等のWebサーバーが動作しているなら「http://」形式でも構いません。その場合はローカルのApacheにはダイレクト接続させるように、以下のようなPACファイルを設定することとなります。

function FindProxyForURL(url, host)
 {
  if (isPlainHostName(host) ||
  isInNet(host, "192.168.1.0", "255.255.255.0") ||
  isInNet(host, "127.0.0.0", "255.255.0.0")) {
  return "DIRECT"
  }
  else {
  return "PROXY 192.168.1.5:8080; DIRECT";
  }
 }

上記では、「192.168.1.0/24」のネットワーク内ではダイレクト接続とし、その他はIPアドレス「192.168.1.5」のProxyサーバーに接続させています。

PACファイルについてのフォーマットや利用可能なコマンドについての詳細は http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html を参照ください。

代表的なProxyの設定例(UNIXの場合)

・Apache

設定ファイル、httpd.confの中の

#LoadModule proxy_module modules/libproxy.so
#AddModule mod_proxy.c

のコメント(#)をはずし、Proxy用モジュールを有効にし

<IfModule mod_proxy.c>
ProxyRequests On   ←プロクシとして動作することを可能にする。
#
<Directory proxy:*>  ←プロクシを許可するホストまたはIPアドレスを指定する。
Order deny,allow
Deny from all
Allow from 192.168.1.
</Directory>

#
#ProxyVia On  ←VIAヘッダの操作を指定する。Off On Full Blockの4つが指定できる。

#
CacheRoot "/var/cache/httpd"  ←キャッシュディレクトリを指定する。
CacheSize 300000           ←最大キャッシュサイズの指定をする。
CacheGcInterval 4           ←キャッシュを検査する間隔を指定する。
CacheMaxExpire 24          ←キャッシュされるHTTPドキュメントの有効期限を指定する。
CacheLastModifiedFactor 0.1    ←有効期限算出係数を指定する。
CacheDefaultExpire 1        ←あまり使用しない。
#NoCache a_domain.com another_domain.edu joes.garage_sale.com   ←キャッシュしないホストやIPアドレスを指定する。

</IfModule>

のように設定します。デフォルトで使用するポートは80番。

・Delegate

#!/bin/sh

if [ -f /usr/sbin/delegated ]; then

# HTTP
 /usr/sbin/delegated \                ←delegateを8080ポートで動作させる。
 -P8080 \
 SERVER=http://-/-/ \               ←HTTPプロトコルを指定する。
 ADMIN=root@xxxx.co.jp \            ←サーバー管理者のメールアドレスを指定する。
 VARDIR=/var/cache/delegate \  ←delegateが使用するディレクトリを指定する。
 OWNER=nobody/nobody \         ←delegateを動作させる権限を指定する。
 PERMIT="*:*:192.168.*"             ←プロクシを許可するホストまたはIPアドレスを指定する。
 CACHEDIR=/var/spool/delegate-nobody/cache  ←キャッシュディレクトリを指定する。
 EXPIRE=2d ;                            ←ローテーションする日にちを指定する。(この例では2日間保持)
fi

のようなシェルスクリプトを作成して起動ファイルrc.localの最後に

# Delegated start.

if [ -f /etc/rc.d/delegate.sh ]; then
echo -n 'legated'; /etc/rc.d/delegate.sh
fi

のように書いておきます。デフォルトで使用するポートは8080番が多いようです。その他、よく使われるsquidでは3128番ポート、WinGateは1080番をデフォルトポートとして使用することが多いようです。
筆者の経験ではApacheのProxyは物静かで安定性が良い、Delegateは(設定にもよりますが)かなり強烈な個性をもったProxyであるが応用範囲が広く、設定が容易で使いやすい、という感じがします。

Proxyサーバーの実際

Proxyサーバー編でProxyサーバーには様々な種類があることを学びましたが(漏れ串など)、Proxy情報が漏れている、漏れていない等は、すべてそれを運営する側の方針で決定されます。Proxyサーバー関連の環境変数として代表的なものは「USER_AGENT」、「HTTP_VIA」、「HTTP_X_FORWARDED_FOR」の3つが挙げられ、それぞれ「Proxyサーバーの種類」、「Proxyの種類」、「接続元のIPアドレス」を出力します。接続先がログをとっていた場合、これらの内のどれか1つでも出力されていれば、それはProxy経由で接続されてきたということがわかります。
個人レベルで匿名性を保つためにProxyサーバーを利用するなら3番目の「HTTP_X_FORWARDED_FOR」で接続元のIPアドレスが出力されるProxyサーバーは、Proxyとしての意味がありません。何しろ、「Proxy経由でやってきましたよ」と言った上にProxyを経由する前の自分の本当のIPアドレスを出力しているのですから。
上記のような環境変数を出力していれば、明らかにProxyと分かるのですが、環境変数を出力しない特殊な匿名串をProxyと見破るにはどうすればよいのでしょう?実際のところは判別する側の判断によるものが大のようです。例えば、ホスト名に「proxy」、「gate」、「ns」などが付いていればProxyと見なす、などという判別法も存在します。

アクセスログの実際

個人レベルのサイトでも、掲示板やチャットを運営していれば、たいていはアクセスログは残ります。(標準でログを取得するように設定されている場合がほどんど)しかし、これらのほとんどが「REMOTE_ADDR(接続元のIPアドレス)」、「HTTP_REFERER(リンク元のURL)」、「HTTP_USER_AGENT(ブラウザに関する情報)」の3つ程度の環境変数を取得しているのみで、上記のようなProxy経由でのデーターなどは余程のことがない限り取得していませんので、ご安心ください。

TIME 2001/02/23 0:05:54
URL http://www5.plala.or.jp/vaio0630/
REF http://www5.plala.or.jp/vaio0630/hp/cgi_kn2.htm
HOST xxxxx.ap.plala.or.jp
BROWSER Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)

例えば、上記のようなものがアクセスログの代表的なものです。これが何を意味しているかといいますと、上から何月何日の何時何分に、どこのURLに、どこのURLから、どのホスト(プロバイダや企業等)の人が訪問してきたか。また、そのブラウザやOSは何を使っているか。という具合になっています。このデーターで分かる個人情報は、その人が加入しているプロバイダと、使っているOSとブラウザくらいなものです。これだけのデータでその訪問者を特定できる人はそうはいません。(とはいうものの、不正行為に対してはプロバイダの協力があれば一発で身元が判明します。)但し、会社が独自ドメインを取得している場合(いわゆるCO.JPと後ろに付く)には、その会社の名前はもちろん、住所、電話番号まで簡単に検索できてしまいますから、会社からインターネットを利用する際には分別ある行動をしましょう。

一般にPPP接続(電話とモデムを使って接続する方法)の方が、専用線接続よりもセキュリティーレベルが高いといわれています。PPP接続の場合は接続の度に異なるIPアドレスが振られますから、IPアドレスが固定されている専用線接続よりは安心できます。それは、企業や大学等の専用線接続を利用しているところのほとんどがファイアーウォール壁を構築していることからも伺えます。昨今では高速専用線接続の普及により、アンチウイルスソフトメーカーの中には簡易ファイアーウォール機能を兼ね備えた商品を販売しているところもありますので、一度ご検討してみてはいかがでしょうか。

TOPページ(Alt+B)

CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー