aws

【H-12】プロキシサーバー構築

今回は、プロキシサーバーと言われるものを構築してみましょう。

【学習フェーズ】

自身でプロキシサーバーについて調べてみましょう。

1. プロキシサーバーとは?

プロキシ(Proxy) は「代理」を意味し、クライアントとインターネットの間に立って通信を仲介するサーバーです。
主な機能は次の 3 点です。

役割具体例企業ユースケース
通信制御ドメイン/URL フィルタリング、ユーザー認証情報漏えい対策・業務外サイト遮断
キャッシュ取得済みコンテンツをディスクに保存し再利用海外帯域が細い拠点での Web 表示高速化
可視化・監査アクセスログを保存・分析コンプライアンス監査、SOC へのログ転送

ユースケース
▸ 拠点ごとに出口 IP を一本化し FW ルールを簡素化
▸ 業務外サイトをカテゴリ単位でブロック
▸ 1 年分のアクセスログを S3+Athena で検索できるように保管

2. Squid の特徴

今回は、プロキシサーバーとして無料のSquidを利用します。
Squidには以下のような特徴があります。

項目内容
ライセンスGPLv2(無償)
対応プロトコルHTTP / HTTPS(CONNECT) / FTP など
キャッシュリクエスト単位で HIT / MISS 判定、ディスク・メモリキャッシュ両対応
アクセス制御ソース IP、URL パターン、時間帯、ユーザー認証(Basic, LDAP, Kerberos…)
拡張性SSL Bump(TLS 復号・検査)、ICAP 連携、カスタムログ書式

[実践フェーズ]

今回は、以下のような構築を行います。

1. EC2(Amazon Linux 2023)を用意

設定
インスタンスタイプt2.micro(無料枠相当)
ポートインバウンド TCP 22(SSH), 3128(Squid)
※3128 は 自宅/会社のグローバル IP のみ許可
# ① パッケージ更新と Squid インストール
sudo dnf update -y
sudo dnf install -y squid

# ② 設定ファイルに以下を追加
sudo vi /etc/squid/squid.conf
~~~抜粋~~~
http_port 3128 # ← port 指定(既存があれば確認だけでも可)
acl all src all # ← アクセス許可用 ACL(学習用なので全開放)
http_access allow all # ← ACL を許可
~~~ここまで~~~~

# ③ 起動と自動起動
sudo systemctl enable --now squid
sudo systemctl status squid

2. クライアント PC からテスト

# Mac / Linux 端末の場合
export http_proxy="http://<EC2のPublicIP>:3128"
curl http://example.com

# Windows PowerShellの場合
Invoke-WebRequest -Uri 'http://example.com' -Proxy 'http://<EC2のPublicIP>:3128'


<出力例>
StatusCode : 200
StatusDescription : OK
Content : <html> …(example.com の HTML 本文)… </html>
RawContentLength : 1256
Headers : {[Content-Type, text/html; charset=UTF-8], …}

成功すれば HTML が返り、EC2 側では

sudo tail -f /var/log/squid/access.log

TCP_MISS/200 等が記録されます。