Squid4で透過型プロキシを作ってみた

余っているノートPCにLinuxを入れて、透過型プロキシ(Transparent Proxy)を作ってみました。
SquidでSSL Bumpを設定して、クライアントPCのデフォルトゲートウェイをこのLinuxのIPアドレスに指定して使う想定です。
昔はCentOSを好んで使っていたけど、サポート終了とかStreamとか聞こえてきて、よくわからないので、今回は比較的コミュニティが活発そうに見える、Rocky Linux 8.5をインストールしてみました。
Rocky Linux 公式ミラーサイト一覧から、日本のサイトを選んでブータブルISOイメージをダウンロードして、Rufus でブータブルなUSBメモリを作成しました。インストール方法はCentOS8と同様で、ググるとたくさん出てくるので省略。
各種バージョンは2021/12/22現在。面倒なので、作業はrootで行いました。

今回試した環境。

透過型プロキシサーバー
 OS: Rocky Linux 8.5
 プロキシ: Squid 4.15
 IPアドレス: 192.168.1.1
 ネットワークアダプタ: wlp1s0 (ノートPCにLANポートがなく、WiFiでお試し)

クライアントPC
 OS: Windows 10
 IPアドレス: 192.168.1.2
 デフォルトゲートウェイ(Default GW): 192.168.1.1

まずは Linux に Squid をインストール。Rocky Linux 8.5 では標準リポジトリにありました。
yum install squid
SSL Bumpを使うためには、Squidのビルドで「 --enable-ssl-crtd」と「 --with-openssl」を指定していないといけないらしいので確認。

これなら大丈夫。
SSL Bumpで使うための Diffie-Hellman アルゴリズムのパラメータファイル「bump_dhparam.pem」と、秘密鍵「bump.key」と「bump.crt」で自己署名ルート証明書を作成します。今回は遊びなので、RSA 2048bit、sha256、有効期限3650日(約10年)を指定。

ここで作成した証明書はクライアントPCにコピーして、「信頼されたルート証明機関」にインポートしておきます。
Windows 10では、証明書ファイルを右クリックして「証明書のインストール」を選択、保管場所を指定、証明書ストアを「信頼されたルート証明機関」としてインポートします。
続いて、SSL Bumpで使うための証明書データベースを作成します。

ここまで準備できたら、Squidの設定を変更します。主な変更点は以下の通り。
※2021/1/5 変更。https_portのオプションでoptionsに「NO_SSLv2」を追加。SSL 2.0は既知のセキュリティホールがあるので、使ってはいけないそうです。

これでSquidを起動できるか確認します。
systemctl start squid
うーん、動かない。またハマった。いろいろ調べたところ、デフォルトで SELinux が有効になっていて、そこで許可されているポート以外は拒否されてた。

改めて起動してみる。
systemctl start squid
今度は動いたので自動起動も設定。
systemctl enable squid
あとは透過型プロキシとして使いたいので、80→3128、443→3129に変換するよう設定。
昔はiptablesでやってたけど、最近はfirewall-cmdでやるみたい。

ちゃんと設定できているか確認してみる。

ここまでできたら、先ほど証明書をインポートしたノートPCのデフォルトゲートウェイを192.168.1.1に設定して、Webブラウザで動作確認。
Squidのログは、/var/log/squid/access.logで確認。
一応動いているっぽいけど、なんかおかしい。ちゃんとやるときはもっと調べてみよう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP