どうも、エピックです。
最近クラウドを利用する機会が増えました。
その勉強の一環とはなりますが、Azure上でCentOS と squidで認証付きプロキシーサーバーを構築する手順を紹介したいと思います。
構築の手順
Azureで基本認証ありのプロキシサーバを構築する手順をまとめます。
追加でNSGを用いてIPでのアクセス制限をつける設定をしたいと思います。
クラウド怖いですからね。
手順は次のようになります。
- Azureポータルへサインインする
- 仮想マシンを作成する
- 仮想マシン上にsquidをインストール、設定する
- Azure NSG の設定を変更する
【手順1】Azureポータルへサインインする
Azureへサインインしましょう。
サインインができたら右上の【ポータル】ボタンよりAzureに移動します。
【手順2】仮想マシンを作成する
Azure上で仮想マシンを作成します。
英語だと Virtual Machine ですね。
左のブレードから見つけることができると思います。
続けて、[追加] – [仮想マシン] の順にクリックします。
続けて、パラメータの設定を行っていきます。
基本の設定
基本パラメータ名 | 値 |
サブスクリプション | Pay-As-You-Go |
リソースグループ | 任意 |
仮想マシン名 | 任意 |
地域 | 任意/ 東日本 |
可用性オプション | 必要ありません |
イメージ | Cent0S-based 8.2 - Gen1 |
Azureスポットインスタンス | オフ |
サイズ | Standard_B1ms - 1 vcpu、 2GBのメモリ |
認証の種類 | パスワード |
ユーザー名 | 任意 |
パスワード | 任意 |
パスワードの確認 | 任意 |
パブリック受信ポート | 選択したポートを許可する |
受信ポートを選択 | SSH(22) |
ディスクの設定
ディスクパラメータ名 | 値 |
OSディスクの種類 | Standard HDD |
暗号化の種類 | (規定) |
ネットワークの設定
ネットワークパラメータ名 | 値 |
仮想ネットワーク | Pay-As-You-Go |
サブネット | 任意 |
パブリックIP | 任意 |
NICネットワーク・セキュリティグループ | Basic |
可用性オプション | 必要ありません |
パブリック受信ポート | 選択したポートを許可する |
受信ポートを選択 | SSH(22) |
設定が完了したら仮想マシンを作成します。
作成中は珈琲でも飲んで待ちましょう
【手順3】仮想マシン上にsquidをインストール、設定する
次にSSHを使用して仮想マシンへログインします。
Windowsの場合は Teraterm、Macであれば標準のターミナルで接続できます。
下記にMacからログインする際の手順を載せときます。
ssh <ユーザ名>@xxxx.xxxx.xxxx -p <ポート番号>
実行すると「you want to continue connecting (yes/no/[fingerprint])?」ときかれるので “yes” と入力後パスワード入れて接続しましょう。
接続をができたらOSSの Squid をインストールしていきます。
次のコマンドを実行します。
sudo yum -y install squid httpd-tools
Proxy用の認証ユーザを作成します。
<ユーザ名>の箇所に任意の値を入力してください。
# testuserとした場合の例
# htpasswd -c /etc/squid/.htpasswd testuser
sudo htpasswd -c /etc/squid/.htpasswd <ユーザ名>
ここから squid のコンフィグファイルを修正していきます。
事前に下記のコマンドでコピーを作成しておきましょう。
.org は Original の略です。
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.org
コンフィグファイルを書き換えていきます。
次のコマンドでファイルを開きます。
sudo vi /etc/squid/squid.conf
コンフィグファイルの最後に書きを追記してください。
# Basic認証用の設定
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
http_access allow password
もし接続のポートを変更したい場合は、コンフィグファイル内の対象のコードを次のようにコメントアウトし変更後のポート番号を記載します。
# Squid normally listens to port 3128
# http_port 3128
http_port 40080
最後に squid の起動と自動起動の設定をONにします。
sudo systemctl start squid
sudo systemctl enable squid
Squid.org「Squid configuration directive auth_param」
【手順4】Azure NSG の設定を変更する
Azure推奨のNSGでのアクセス設定を行います。
squid のインストールされた仮想マシンを選択し、左ブレードの [ネットワーク] – [受信ポートの規則を追加する] をクリックします。
次のようにパラメータを設定し追加をします。
このときですがすでに SSH による仮想端末の接続が不要であれば削除をしておくようにしましょう。
受信セキュリティ規則パラメータ名 | 値 |
ソース | IP Adress |
ソースIPアドレス | 任意 |
ソースポート範囲 | 任意 |
宛先 | Any |
サービス | Custom |
宛先ポート範囲 | 先に設定したポート |
プロトコル | TCP |
アクション | 許可 |
優先度 | 500 |
名前 | 任意 |
追加ができればこれですべての設定が完了です。
動作確認
動作確認としてクライアントマシンのプロキシーサーバー設定から、構築したサーバーを設定し、任意のWebブラウザでインターネットに接続してみます。
このとき認証用のダイアログが表示されます。
設定済みの認証用ユーザーとパスワードを入力し「OK」をクリックし、無事Webページが表示されれば動作確認は成功です。
最後に
今回はAzure上でのプロキシサーバーの構築でした。
設定項目で間違っている箇所があればコメントにてご指摘いただけますと幸いです。
今回も最後までお読みいただきありがとうございました。
では。