Azure上のCentOS 7.3にSquid3.5をインストールしSSLインターセプトによりヘッダ情報を付与する

以下記事にある**オンプレミスのプロキシサーバインフラストラクチャ**をAzure上に構築する手順を記載する。ただし、Azureへの接続は既存のプロキシを経由するため、多段プロキシ構成となる。

[テナント制限を使用して SaaS クラウド アプリケーションへのアクセスを管理する](https://docs.microsoft.com/ja-jp/azure/active-directory/active-directory-tenant-restrictions)

[宛先により別のプロキシーへルーティングする](http://hp.vector.co.jp/authors/VA022911/tec/centos/squid3.htm)

# 1. 仮想マシンの作成
リンク先手順により仮想マシンを作成する
[MicrosoftAzureでCentOS7の仮想マシンを作成する](https://www.ipentec.com/document/document.aspx?page=microsoft-azure-create-virtual-macine-centos7)

[ネットワークセキュリティグループ](https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-nsg)＞受信セキュリティ規則で接続元アドレスから、TCP/3128への接続を許可設定する

# 2. Squidのインストール
仮想マシンにsshで接続し、以下の手順を実施

```bash:
$ sudo yum -y install squid
$ yum list installed | grep squid
squid.x86_64                      7:3.5.20-2.el7_3.3             @updates       
squid-migration-script.x86_64     7:3.5.20-2.el7_3.3             @updates      
```

# 3. Squid設定ファイルの編集
設定ファイルを以下の通り編集する

```bash:/etc/squid/squid.conf
http_port 3128
http_access allow all
request_header_add Restrict-Access-To-Tenants example.com
request_header_add Restrict-Access-Context 123ab456-78c9-0d12-e1f2-3456g7890h1i
```

# 4. Squid起動
```bash
$ systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
$ sudo systemctl start squid
$ systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2017-07-16 13:30:21 UTC; 12s ago
  Process: 1690 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 1685 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 1693 (squid)
   CGroup: /system.slice/squid.service
           ├─1693 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─1695 (squid-1) -f /etc/squid/squid.conf
           └─1696 (logfile-daemon) /var/log/squid/access.log
$ systemctl enable squid
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
```

# 5. 疎通確認
確認用端末のブラウザに今回構築したプロキシを設定する。
サーバ上でログを確認し、プロキシを経由した接続になっていることを確認する。

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

また、検証用サイトにhttpで接続し、以下のヘッダ情報が付与されていることを確認する。

|キー|値|
|:---|:---|
|HTTP_RESTRICT_ACCESS_TO_TENANTS|example.com|
|HTTP_RESTRICT_ACCESS_CONTEXT|123ab456-78c9-0d12-e1f2-3456g7890h1i|


# 6. SSLインターセプト設定（執筆中）

[Qiita:SquidでSSL intercept](http://qiita.com/suzukis/items/5049f39cb1ee51e94a23)

[Dynamic SSL Certificate Generation](http://wiki.squid-cache.org/Features/DynamicSslCert)

[Feature: SslBump Peek and Splice](http://wiki.squid-cache.org/Features/SslPeekAndSplice)

[TLS1.2が使えない環境のためのProxy (squid)設定](http://kikumoto.hatenablog.com/entry/2016/06/04/124922)

```bash:/etc/squid/squid.conf
http_port 3128  ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/etc/squid/squidCA.pem
ssl_bump bump all
sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /var/db/ssl_db -M 4MB
http_access allow all
request_header_add Restrict-Access-To-Tenants example.com
request_header_add Restrict-Access-Context 456ff232-35l2-5h23-b3b3-3236w0826f3d
```