CentOS 6 で Squid を使い、SSL 対応の透過型プロキシを試そうとした時の考え方を確認します。この記事は、構築成功手順ではなく、なぜ断念したのか、どこに難しさがあるのかを残すための記事です。
透過型プロキシと SSL の難しさ
HTTP の透過型プロキシは、クライアントに明示設定を入れずに通信をプロキシへ誘導できます。しかし HTTPS では、TLS によって通信内容が暗号化され、サーバー証明書の検証も行われるため、単純に中身を見て制御することはできません。
- HTTP と HTTPS では前提が違う
- HTTPS の中身を見るには TLS を終端する必要がある
- TLS 終端には独自 CA 証明書の配布が必要になる
- 証明書検証やピンニングで失敗するアプリケーションがある
- 利用者に見えない形で通信を中継する設計には慎重さが必要
SSL 対応の透過型プロキシは、技術的に可能な範囲があっても、運用・セキュリティ・利用者端末管理の負担が大きくなります。
Squid の確認ポイント
yum install squid
chkconfig squid on
service squid start
service squid status
squid -v
squid -k parseSquid 自体の導入と、SSL を扱う透過型プロキシの設計は別問題です。まず通常の明示プロキシとして動作確認し、その後に透過化や SSL bump の可否を検討する方が切り分けやすいです。
透過型にする時の確認
iptables -t nat -L -n -v
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
netstat -lntp | grep squid
tail -f /var/log/squid/access.logHTTP だけであれば、iptables の REDIRECT と Squid の設定で検証できます。ただし HTTPS では同じ感覚では扱えません。
断念する判断も設計である
SSL 対応の透過型プロキシを無理に成立させるより、明示プロキシ、DNS / FW による制御、端末管理、ログ取得の範囲を分けた方が設計として自然な場合があります。特に古い CentOS 6 上で実装する場合、保守性や安全性を考えると断念する判断は十分に合理的です。
- プロキシを明示設定にする
- 認証プロキシとして扱う
- FW や DNS 制御と役割分担する
- 端末側に証明書を配布する運用を避ける
- 新しい OS と新しいプロキシ基盤へ移行する
SSL bump と独自 CA 配布の壁
HTTPS 通信をプロキシで中身まで見ようとすると、Squid の SSL bump のように TLS を一度終端し、再度接続し直す構成になります。この場合、クライアントはプロキシが発行する証明書を信頼する必要があるため、独自 CA 証明書の配布が必要になります。
- クライアント端末へ独自 CA 証明書を配布する必要がある
- 管理外端末では証明書を信頼させにくい
- 一部アプリは証明書ピンニングで失敗する
- 利用者から見ると通信を中間で復号する設計になる
- トラブル時に原因がプロキシか通信先か分かりにくくなる
この時点で、単なる Squid の設定ではなく、端末管理、証明書管理、プライバシー、監査、障害対応の問題になります。古い CentOS 6 上でこれを無理に成立させるより、設計を分ける判断は十分に合理的です。
透過プロキシと明示プロキシの違い
透過プロキシはクライアントにプロキシ設定を意識させない方式です。一方、明示プロキシはクライアントやブラウザにプロキシを設定します。HTTPS を扱う場合、明示プロキシの方が設計上の境界が分かりやすいことがあります。
- 透過プロキシ: 利用者に見えにくいが、TLS との相性が悪い
- 明示プロキシ: 設定は必要だが、プロキシ利用の境界が明確
- DNS / FW 制御: 通信先制限としては扱いやすいが、中身は見ない
- 端末管理: 証明書配布やプロキシ設定を統制できる場合に成立しやすい
まとめ
CentOS 6 + Squid で SSL 対応の透過型プロキシを作る場合、単なる設定手順ではなく、TLS、証明書、端末管理、利用者影響を含めた設計問題になります。無理に透過化するより、明示プロキシやネットワーク制御へ分ける方が安全で運用しやすい場合があります。
関連する記事
- CentOS 6 サーバー管理ガイド
CentOS 6 系の記事を役割別に確認できるハブページです。 - CentOS 6 ネットワーク設定
透過型プロキシでは経路と iptables が関係します。 - CentOS 6 Yum EPEL リポジトリ設定
Squid 関連パッケージの導入にも関係します。
参考書籍
CentOS 6 のような古い Linux サーバー記事を読み直す時にも、コマンドライン操作の考え方を確認しやすい参考書籍です。
Amazon で見る
