初めに
Azure ADのTenant Restriction機能を検証するため、
squidのSSL Bumpを利用して環境を構築してみたので手順をメモ。
※Tenant Restrictionの詳細はこちら
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/tenant-restrictions
※あくまで動作確認用の検証環境の構築手順です。セキュリティ面の考慮はしておりませんので、そのまま本番環境へ適用することはお控えください。
構築手順
-
Linuxサーバーを用意する。今回はCentOS8.2を利用。
-
サーバーにsshで接続し、まずはSquidをインストール
yum -y install squid
- 念のためOpenSSLを最新化
yum update openssl
- 自己証明書を作成
cd /etc/squid
openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
- クライアント用のルート証明書を作成
openssl x509 -in squidCA.pem -outform DER -out squid.cer
- 作成した証明書にアクセス権を付与
chown squid:squid squidCA.pem
chmod 400 squidCA.pem
- 証明書データベース用ディレクトリを作成して初期化
mkdir -p /var/lib/squid
/usr/lib64/squid/security_file_certgen -c -s /var/spool/squid/ssl_db -M 4MB
chown -R squid:squid /var/spool/squid
- /etc/squid/squid.confを編集する
vi /etc/squid/squid.conf
以下の行を削除し、
http_port 3128
以下の行を追加
http_port 3128 ssl-bump generate-host-certificates=on >dynamic_cert_mem_cache_size=4MB cert=/etc/squid/squidCA.pem
request_header_add Restrict-Access-To-Tenants "テナント名" all
request_header_add Restrict-Access-Context "ディレクトリID" all
※テナント名、ディレクトリIDに指定する値は以下のリンクを参照。
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/tenant-restrictions#configuration
さらにファイルの末尾に次の行を追加
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/spool/squid/ssl_db -M 4MB
sslcrtd_children 5
ssl_bump server-first all
sslproxy_cert_error deny all
- 保存したらSquidを再起動
service squid restart
- 正常に起動しているか確認。「active(runnning)」となっていればOK
sudo systemctl status squid
- sshを終了し、作成したクライアント用のルート証明書をダウンロード
exit
scp -r <ユーザー名>@<サーバーアドレス>:/etc/squid/squid.der "C:\temp"
※Pacファイルでプロキシサーバーを指定しても構いません。
その場合、以下のFQDNへの通信のみ対象としてください。
-login.microsoftonline.com
-login.microsoft.com
-login.windows.net