お問い合わせはこちら

Squidでプロキシサーバーを構築して安全な接続環境をつくってみた

公開
更新

ここでは Squid を使用して CentOS 8 にプロキシサーバーを立てる方法を説明します。

Squidとは、プロキシサーバーを利用できるオープンソースのフリーソフトウェアです。Squidはさまざまな用途に使えますが、今回はフォワードプロキシについて説明します。

Squidでプロキシサーバー

フォワードプロキシとは、クライアント(Webブラウザ)がインターネット上のWebサーバーなどに接続する際に中継する機能です。
例えば、企業で社内LANから外部のインターネットに接続する際にプロキシサーバーを通すことで、やり取りされるデータをチェックして不正な通信がないか監視することができます。
その他にも、あなたのパソコンからWebサイトに接続する際に、プロキシサーバーを中継させることで、接続元IPアドレスの匿名性を確保し、サイバー攻撃を受けるリスクを低減させ、セキュリティを強化できます。

VPS上にプロキシサーバーを構築

プロキシサーバー用のファイアーウォールを設定します

はじめにKAGOYA CLOUD のコントロールパネルからプロキシサーバー用のファイアーウォールを設定するために、以下の画面を開きます。

◇コントロールパネル > KVM > セキュリティ > セキュリティグループ
https://vps.kagoya.com/#/kvm/security_group

セキュリティグループ一覧が表示されます

プロキシサーを構築

「セキュリティグループ追加」をクリックします。

セキュリティグループの設定画面が開きます。

セキュリティグループの設定

セキュリティグループ名には任意の名前を入力します。

SSH接続(22番ポート)を許可するために次の項目を入力します。(入力例)

プロトコル「TCP」
IPアクセス元のIPアドレスを指定します。
ポート「22」

設定欄下の「追加(+)」をクリックし、プロキシサーバーへの接続を許可するIPアドレスと、任意のポート番号(※ ここでは 8080 を指定します)を許可します。

セキュリティの設定

入力例

プロトコル「TCP」
IPプロキシサーバーへの接続を許可するIPアドレスを指定します。
ポート「8080」

登録をクリックします。

CentOS 8 のインスタンスを作成

CentOS 8 でインスタンスを作成します。
今回は以下のスペックを選択します。

企業名カゴヤ・ジャパン
プラン名KAGOYA CLOUD VPS [KVM]
CPU1コア
メモリー1GB
ストレージSSD 20GB
OSテンプレートCentOS8(64bit)
料金日額24円/月額660円(税込価格)

◇コントロールパネル > KVM > インスタンス
https://vps.kagoya.com/#/kvm/server

インスタンス一覧が表示されます。

インスタンスの作成

「インスタンス作成」をクリックします。

インスタンス作成画面が開きます。

任意のスペックを選択します。 今回の例では最小スペックで十分なので、 1コア/1GB のスペックを設定しました。

パッケージは、CentOS 8 を選択します。

ログイン認証キーを選択します。
※ 未作成の場合はログイン認証キーを追加してください(ログイン用認証キー作成)。

セキュリティグループは先ほど追加したプロキシサーバー用のセキュリティグループを選択します。

その他必須項目を入力し、「インスタンス作成」をクリックします。

squid (プロキシサーバー)の構築

squid のインストール

はじめに CentOS のパッケージを最新の状態にします。

# dnf update

squid をインストールします。

# dnf -y install squid

squid の設定

squid の設定ファイルを編集します。

# vi /etc/squid/squid.conf

一般的なローカル接続の設定例をコメントアウトし、プロキシサーバーへの接続を許可するIPアドレスを任意のACL(アクセス制御リスト)名で設定します。
※ もともとの記述内容から変更・追記する部分を赤字で記載しています。

#
# Recommended minimum configuration:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
# 許可するIPアドレスを記載
acl accesslist src 203.0.113.10/32

IPアドレスの部分は、セキュリティで設定した、接続クライアントのIPアドレスを入力します。
※ IPアドレス末尾の /32 の部分はIPアドレスの範囲を指定しています。 /32 は1個のIPアドレスを指定します。( /24 だと256個の指定になります。)

一般的なローカル接続の許可設定をコメントアウトし、設定したACL(アクセス制御リスト)からのアクセスを許可します。

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnets
#http_access allow localhost
http_access allow accesslist

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 8080

任意のポート番号を指定します(ここでは先の手順のファイアーウォールで許可したポート 8080 を指定します)。

プロキシサーバーの匿名性を高めたい場合は、設定ファイルの一番最後に以下を追記します。

# 任意のホスト名
visible_hostname unknown

# 接続端末のIPを隠蔽
forwarded_for off

# リクエストヘッダのプロキシ情報を隠蔽
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

設定ファイルの編集内容を保存します。

squid の起動

squidを起動する前に、 firewalld の設定を行います。

# firewalld-cmd --add-port=8080/tcp
success ##成功した場合の表示
# firewall-cmd --list-ports
8080/tcp ##追加したものが表示される
## firewalldを再起動
# systemctl restart firewalld.service

squidを起動します。

# systemctl start squid

自動起動設定を追加します。

# systemctl enable squid

状態を確認します。

# systemctl status squid.service

クライアント(Webブラウザ)からの接続をプロキシサーバー経由に設定~Google Chrome の場合~

画面右上のメニューから設定を開きます。

Chromeの設定

下の「詳細設定」をクリックします。

システムの中の「プロキシ設定を開く」をクリックします。

Chromeでプロキシ設定

「インターネットのプロパティ」が開きます。

「接続」タブを開き、「LANの設定」ボタンをクリックします。

「LANにプロキシサーバーを使用する」にチェックします。

次の項目を入力します。

アドレスプロキシサーバーを構築したインスタンスのIPアドレスを入力します。
ポートプロキシサーバーのポート番号
※ここでは先ほど設定した8080を入力します。

https://support.kagoya.jp/kir/manual/ip/
「接続元IPアドレス」としてプロキシサーバーのIPアドレスが表示されれば成功です。

お疲れ様です。これでインターネットアクセスの際は一度プロキシサーバーを経由することになるので、アクセス元のIPアドレスを知られる可能性が激減しました。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。