Linux

Squidでアクセス制限を設定する方法解説【http_accessを使ってアクセス制限をしてみよう】

Linuxサーバーの画面

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、Squidでアクセス制限を設定する方法を解説します。Squidでアクセス制限を設定するためには、http_accessという設定値を使用します。httpd_accessにネットワークアドレスやIPアドレスを指定して、プロキシサーバーにアクセスできるホストを制御します。アクセス制限を実装して、Squidのセキュリティを高めましょう。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

Squidでアクセス制限を設定する方法解説

どうやってSquidでアクセス制限を設定するの?

今回の記事では、Squidでアクセス制限を設定する方法を解説します。Squidとは、プロキシサーバーのことで、Webサーバーに代理でアクセスするサーバーのことです。プロキシサーバーへアクセスできるホストを指定して、安全にプロキシサーバーを運用しましょう。

Squidでアクセス制御を設定するためには、http_accessという設定値を使います。このhttp_accessの使い方について詳しく解説します。

Squidのインストールが完了していない方はこちらの記事を参考にしてください。環境はLinuxのDebianを想定しています。

【初心者向け】Squidの設定方法解説【プロキシサーバーを構築する!】

http_accessの使い方

http_accessは以下のように設定します。アクセス範囲を指定するaclとセットで使用します。

acl [acl名] [aclタイプ] [ネットワークアドレスやIPアドレス]

//許可する場合
http_access allow [acl名]

//拒否する場合
http_access deny [acl名]

http_accessの設定ファイル

設定を行う場合は、Squidの設定ファイル「Squid.conf」に設定値を記述します。

vi /etc/Squid.conf

設定ファイルには、すでにいくつかのhttp_accessがデフォルトで設定されています。

では、具体的にどのようにhttp_accessを使用するのかを解説します。

http_accessの具体的な使用例

ではここから、http_accessの具体的な使用例について解説します。以下の3パターンのアクセス制御を実装してみす。

  • 全てのクライアントからのアクセスを許可
  • 特定のクライアントのみアクセスを許可
  • 特定のドメインへのアクセスのみ許可

では詳しく解説します。

全てのクライアントからアクセスを許可する方法

まずは、全てのクライアントからアクセスを許可する方法です。aclとhttp_accessは以下のように記述します。

acl all src 0.0.0.0/0
http_access allow all

aclでは、ネットワークアドレスを指定しています。「0.0.0.0/0」を指定することで全範囲を表しています。これにより、制御する範囲が全てのクライアントになります。

そして、http_accessの”allow”で許可することで、全てのクライアントからのアクセスを許可することになります。

特定のクライアントのみアクセスを許可する方法

次に、特定のクライアントのみアクセスを許可する方法を解説します。aclとhttp_accessは以下のように記述します。

acl all src 0.0.0.0/0
acl host src 192.168.1.1/24

http_access allow host       //192.168.1.1を許可
http_access deny all    //192.168.1.1以外を拒否

特定のホストのみを許可する場合は、2つのaclとhttp_accessを使用します。http_accessは上から順に適応されます。まずは、許可したい条件を指定して、その後全てを拒否するように設定します。

今回の場合は、許可したいホスト”192.168.1.1/24″を最初に”allow”で許可して、その後全てのホスト”0.0.0.0/0″を拒否するように設定しています。

複数の条件でアクセス制御を行う際は、http_accessは上から順に適応されることを覚えておきましょう!

特定のドメインへのアクセスを許可する方法

次に、特定のドメインへのアクセスを許可する方法を解説します。aclとhttp_accessは以下のように記述します。

acl all src 0.0.0.0/0
acl domain dstdomain engineer-ninaritai.com

http_access allow domain      //engineer-ninaritai.comへのアクセスを許可
http_access deny all    //上記ドメイン以外へのアクセスを拒否

特定のドメインへのアクセスを拒否する場合は、先ほど同様に2つのhttp_accessとaclを使用します。aclのタイプを”dstdomain”にしてドメインの宛先ドメインへの指定をしています。

今回の場合は、「engineer-ninaritai.com」へのアクセスを許可して、それ以外のアクセスを拒否するように設定しています。

プロキシを使用するホストが、危険なサイトへアクセスしないようにするためによく使用する設定です。

Squidのアクセス制御を柔軟に設定するためには、aclの指定方法を変えると様々な設定を行うことができます。”src”と”dstdomain”の2種類を紹介しましたが、他にも様々な設定値があります。

aclで様々なアクセス制限を行う

aclの文法

aclは以下のような文法です。aclのaclタイプを変更することで様々なアクセス制限を行うことができます。

acl [acl名] [aclタイプ] [ネットワークアドレスやIPアドレス]

//例
acl host src 192.168.1.1/24
acl domain dstdomain engineer-ninaritai.com

aclタイプのオプション

aclタイプには、以下のようなオプションがあります。

aclタイプ説明
srcクライアントのIPアドレスやネットワークアドレス
dst宛先のサーバーIPアドレス
srcdomainクライアントのドメイン名
dstdomain宛先のドメイン名
port宛先のサーバーのポート番号
myportクライアントのポート番号
arpMACアドレス
protoプロトコル
methodhttpメソッド
url_regexURLにマッチする正規表現
urlpath_regexパスにマッチする正規表現

正規表現などを使用すると、さらに柔軟な指定を行うことができます。正規表現の使い方についてはこちらの記事で解説しています。

正規表現とは?Linuxで正規表現を使ってファイル検索してみよう【分かりやすく解説】

Squidでアクセス制限を設定する方法まとめ

今回の記事では、Squidでアクセス制限を設定する方法について解説しました。アクセス制御は、セキュリティを高めるために必要な設定なのでぜひ覚えておきましょう!

このようなITに関連する内容を当ブログでは、発信しているので興味のある方は、是非ご覧ください。

さらにlinuxについて勉強したい方はこちらの参考書がオススメです。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST