GNU/Linux >> Linux の 問題 >  >> Panels >> Webmin

Squidプロキシサーバー

この記事では、HTTPまたはFTPプロキシサーバーとは何かを説明し、次にWebminを使用して人気のあるSquidプロキシサーバーを構成する方法について説明します。

コンテンツ

プロキシとSquidの概要

HTTPプロキシサーバーは基本的に、クライアントからのURLの要求を受け入れ、クライアントに代わってそれらをフェッチし、結果をクライアントに返すプログラムです。プロキシは、クライアントがインターネットに直接アクセスできないが、Webページを表示できる必要があるネットワークで使用されます。プロキシは、よく要求されるページのキャッシュにも使用されるため、複数のクライアントが同じページを表示したい場合は、一度ダウンロードするだけで済みます。

多くの企業や組織では、内部LAN上のシステムによるすべての着信および発信トラフィックをブロックするようにファイアウォールが設定されています。これは、セキュリティ上の理由から、または従業員がインターネット上でアクセスできるものを制限するために行われる場合があります。 Webページを表示できることは非常に便利であるため、プロキシを設定してWebサイトにアクセスできるようにすることがよくあります。

多くのクライアントPCがWebにアクセスしている大規模な組織やISPも、ネットワークの負荷を軽減するためにプロキシサーバーを実行することをお勧めします。プロキシの主なタスクの1つは、クライアントから要求されたページのキャッシュであるため、複数回要求されたページは、元のサーバーからフェッチされるのではなく、キャッシュから返されます。このため、クライアントシステムは、多くの場合、キャッシュプロキシを使用してWebにアクセスするように構成または強制されます。

プロキシは、クライアントブラウザがWebサイトに直接接続する代わりにプロキシを使用するように構成されている場合にのみ役立ちます。幸い、存在するすべてのWebブラウザー、およびさまざまな目的でHTTP経由でファイルをダウンロードするほとんどすべてのプログラムは、プロキシーを使用するように構成できます。これにより、代わりにプロキシサーバーへの特別なプロキシHTTP接続を確立し、ダウンロードする完全なURLを指定するように指示されます。

プロキシはHTTP専用ではありません。クライアントからのFTPおよびGopherプロトコル要求をサポートすることもできます。これらの要求は、実際に要求されたサーバーにFTPまたはGopher接続を行うことで処理されます。暗号化されたSSL接続でさえ、要求を復号化できない場合でも、プロキシで処理できます。代わりに、プロキシはすべてのデータをクライアントから宛先サーバーに転送し、再び転送するだけです。

Squidは、Unix/Linuxシステムで最も人気のあるプロキシサーバーです。これはオープンソースであり、www.squid-cache.orgから無料でダウンロードでき、すべてのLinuxディストリビューションおよび他の多くのオペレーティングシステムに標準パッケージとして含まれています。 Squidは、プロキシ、キャッシング、HTTPアクセラレーションの両方をサポートし、これらの機能の動作を制御するための多数の構成オプションを備えています。

Squidは、通常/etcディレクトリ内またはその下にあるテキストファイルsquid.confから構成を読み取ります。このファイルは一連のディレクティブで構成されており、各ディレクティブには名前と値があります。各ディレクティブは、リッスンするTCPポートや、キャッシュされたファイルを保存するディレクトリなど、いくつかのオプションを設定します。WebminのSquidモジュールは、理解できないコメントやディレクティブを無視して、このファイルを直接編集します。

Squidの多くのバージョンが何年にもわたってリリースされており、それぞれが異なる構成ディレクティブをサポートしているか、同じディレクティブに異なる意味を割り当てています。つまり、バージョン2.0のsquid.confファイルはSquid 2.5と互換性がない可能性があり、Squid2.5のファイルはバージョン2.0では確実に機能しません。幸い、Webminは各リリースがサポートするディレクティブを認識しており、実行中のバージョンのSquidで認識されているディレクティブのみを編集できます。

キャッシュされたWebページは、ファイルシステムのパフォーマンスを向上させるために、マルチレベルのディレクトリ構造のファイルに保存されます。 Squidは、複数の個別のキャッシュディレクトリを使用するように構成できるため、ファイルを異なるディスクに分散してパフォーマンスを向上させることができます。キャッシュ可能なページが要求されるたびにファイルに保存されるため、同じページに対する後続の要求が到着したときに、ファイルを読み取ってそこからデータを提供できます。一部のWebページは時間の経過とともに変化する(または動的に生成される)ため、SquidはWebページの最終変更日と有効期限を追跡し、データが古くなったときにキャッシュからデータをクリアできるようにします。

クライアント要求を処理する実際のプログラムは、squidと呼ばれる永続的に実行されるサーバープロセスです。また、DNSルックアップやクライアント認証などのタスクのために他のいくつかのサブプロセスを開始する場合もありますが、実際のHTTPプロトコル処理はすべて単一のマスタープロセスで実行されます。 ApacheやSendmailなどの他の同様のサーバーとは異なり、Squidはクライアント要求を処理するためにサブプロセスを開始または使用しません。

Squidは、WebminがサポートするUnixのすべてのフレーバーでコンパイルでき、それらすべてでほぼ同じように機能します。これは、Webminモジュールのユーザーインターフェイスが、Squidプログラムと構成ファイルに使用するデフォルトのパスを除いて、オペレーティングシステム間でも同じであることを意味します。

SquidProxyServerモジュール

Webmin内からSquidをセットアップまたは構成する場合は、サーバーカテゴリの下にあるSquidプロキシサーバーモジュールを使用する必要があります。アイコンをクリックすると、Squidが正しくインストールおよび構成されていることを前提として、以下のスクリーンショットに示すページが表示されます。ご覧のとおり、メインページはアイコンのテーブルのみで構成されており、各アイコンをクリックすると、そのカテゴリの設定を編集するためのフォームが表示されます。


Squidモジュールのメインページ

以前にシステムでSquidを構成または開始したことがない場合は、キャッシュディレクトリがまだ設定されていない可能性があります。モジュールはこれを検出し、アイコンのテーブルの上に*Squidキャッシュディレクトリ/var / spool/squidが初期化されていません*のようなメッセージを表示します。キャッシュを初期化するには、次の手順に従います:

  1. 表示されたキャッシュディレクトリに不満がある場合は、今がそれを変更するときです。続行する前に、*キャッシュディレクトリの追加*セクションの指示に従って、独自のディレクトリを定義してください。
  2. Unixユーザーとして フィールドには、キャッシュファイルを所有し、デーモンプロセスを実行するユーザーの名前を入力します。通常、これは目的のために作成された特別なsquidユーザーです(そのようなユーザーが存在する場合、フィールドはデフォルトでsquidになります)が、実際にはどのユーザーもそうします。ユーザーとグループモジュール(第4章で説明)を使用して、必要に応じてホームディレクトリがキャッシュディレクトリであるsquidというユーザーを作成することをお勧めします。
  3. キャッシュの初期化をクリックします ボタン。 Squidの構成は、選択したユーザー名とコマンド squid -zを使用するように更新されます。 キャッシュディレクトリを設定するために実行されます。初期化がどのように進行しているかを確認できるように、生成されるすべての出力が表示されます。
  4. プロセスが完了したら、モジュールのメインページに戻ると、エラーメッセージが消えているはずです。

Squidがシステムにまったくインストールされていない場合(またはWebminが期待する場所とは異なる場所にインストールされている場合)、Squid構成ファイル/etc/squid.confのようなエラーメッセージは存在しません アイコンの表の代わりにメインページに表示されます。実際にインストールしている場合は、モジュールが使用するパスを変更する方法について、*Squidプロキシサーバーモジュールの構成*セクションをお読みください。一方、実際にインストールされていない場合は、ソフトウェアパッケージモジュール(SoftwarePackagesでカバー)を使用して、LinuxディストリビューションCDまたはWebサイトからsquidパッケージをインストールする必要があります。

お使いのオペレーティングシステムにそのようなパッケージが存在しない場合は、www.squid-cache.orgから最新バージョンのSquidをダウンロード、コンパイル、およびインストールする必要があります。システムにコンパイラがインストールされている限り、これは依存関係のない比較的単純なプロセスです。

サーバーをインストールした後、サーバーを長期間使用する場合は、起動およびシャットダウンモジュール(第9章で使用方法を説明)を使用して、起動時にサーバーを起動するように調整する必要があります。すべてのLinuxパッケージには、Squidの起動アクションスクリプトが含まれていますが、デフォルトでは無効になっている可能性があるため、そのモジュールで有効にする必要があります。それ以外の場合は、
/usr/local/squid/bin/squid  -sY
のようなコマンドを実行するアクションを作成する必要があります。 、Squidが/ usr / local/squidにインストールされていると仮定します。

Squidをインストールして初期化すると、このモジュールの使用を開始できます。 Squidを実行すると、すべてのページの上部に2つのリンクがあります-変更を適用 これにより、現在の構成が強制的に再読み取りされ、Squidが停止します プロキシサーバーをシャットダウンします。サーバーが実行されていない場合、それらのリンクは代わりに* Start Squid *に置き換えられます。これは、名前が示すように、サーバーを起動しようとします。まだ実行されていない場合は、今すぐ開始することをお勧めします。

Squidの各バージョンでは新しい構成ディレクティブが導入されているため、このモジュールのユーザーインターフェイスは、システムで検出されるSquidのバージョンによって表示が異なります。この章のすべての手順は、現在最も広く展開されているバージョンであるSquid2.4用に書かれています。古いリリースまたは新しいリリースを実行している場合は、フォームに異なるフィールドが表示されたり、オプションが多かれ少なかれある場合があります。たとえば、新しいバージョンごとに異なるACLタイプが導入され、認証はプログラムの履歴を通じて3つの異なる方法で処理されてきました。ただし、基本的な概念は常に同じです。

このモジュールを使用するときは、WebminサーバーへのアクセスにSquidプロキシを使用しないようにブラウザーが構成されていることを確認してください。そうしないと、構成を間違えたり、サーバープロセスをシャットダウンしたりすると、モジュールへの自分のアクセスが遮断されるリスクがあります。プロキシを使用できるすべてのブラウザには、直接接続するホストを一覧表示するためのフィールドがあり、そこにWebminサーバーのホスト名を入力できます。

プロキシポートとアドレスの変更

デフォルトでは、SquidはシステムのすべてのIPアドレスのTCPポート3128でプロキシ要求をリッスンします。これはプロキシが実行される通常のポートではないため(8000と8080が最も一般的であるようです)、変更することをお勧めします。システムに複数のネットワークインターフェイスがある場合は、内部ネットワーク上のクライアントのみが接続できるようにリスニングアドレスを編集することもできます。

Squidが使用するポートを指定するには、次の手順に従います。

  1. モジュールのメインページで、ポートとネットワークをクリックします。 図44-2に示すフォームを表示するためのアイコン。
  2. プロキシアドレスとポート 表で、*以下にリストされている*オプションを選択します。次の表の各行は、リスニングポートと、オプションでバインドするアドレスを定義しています。既存のポートとアドレスが一覧表示され、その後に新しいポートとアドレスを追加するための空白行が1つ表示されます。 ポートの最初の空のフィールド 列に、 8000のようなポート番号を入力します または8080 。 [*ホスト名/IPアドレス*]列で、[すべて]を選択します システムの任意のインターフェイスで接続を受け入れるか、隣接するテキストボックスにIPアドレスを入力する2番目のオプション。このテーブルを使用して、Squidは必要な数のポートでリッスンするように構成できます。ただし、一度に1つの空白行しか表示されないため、フォームを保存して再度開き、複数の新しいポートを追加する必要があります。
  3. ICPは、Squidがクラスター内の他のプロキシと通信するために使用するプロトコルです。 ICPのデフォルトの3130以外のポートでリッスンするには、ICPポートに入力します 分野。ただし、他のプロキシのみがこのプロトコルを使用するため、これは通常は必要ありません。
  4. Squidは通常、任意のIPアドレスでICP接続を受け入れます。これを変更するには、[*着信UDPアドレス*]フィールドで2番目のラジオボタンを選択し、システムのインターフェイスIPの1つをテキストフィールドに入力します。これは、サーバーが通信する可能性のある他のすべてのプロキシが単一の内部LAN上にある場合に役立ちます。
  5. 保存をクリックします ページの下部にあるボタンをクリックして構成ファイルを新しい設定で更新し、メインページにある[変更の適用]リンクをクリックしてアクティブにします。


ポートとネットワークフォーム

キャッシュディレクトリの追加

通常のデフォルト構成では、Squidはキャッシュされたページを保存するために単一のディレクトリを使用します。このディレクトリには最大100MBのデータが保存されますが、多数のアクティブなクライアントにサービスを提供する場合は十分ではない可能性があります。システムに複数のハードドライブがある場合は、パフォーマンスを向上させるためにキャッシュを複数のディスクに分散するのが理にかなっています。これは、それぞれが独自の最大サイズを持つ複数のディレクトリを指定することで実行できます。

プロキシサーバーの実行専用のシステムでは、各ディレクトリにキャッシュする最大量は、使用可能なスペースの約90%である必要があります。多くのファイルシステムは、ほぼいっぱいになるとパフォーマンスが低下するため、Squidがすべての空きディスク領域を使い果たすように構成または許可することは賢明ではありません。さらに、ディスク容量はログファイルやユーザーデータでも使用される場合があります。 Squidがハードドライブ全体をいっぱいにすると、他のプログラムが一時ファイルを作成したりログに書き込んだりできないため、問題が発生する可能性があります。

新しいキャッシュディレクトリを追加し、既存のキャッシュディレクトリの最大サイズを指定するには、次の手順に従います。

  1. キャッシュオプションをクリックします モジュールのメインページにあるアイコンをクリックして、下のスクリーンショットに示すフォームを表示します。
  2. キャッシュディレクトリ フィールドで、リストを選択します オプション。 デフォルトの場合 以前に選択された場合、Squidは括弧内に表示された単一のコンパイル済みデフォルトキャッシュディレクトリを使用します。このディレクトリを引き続き使用する場合は、テーブルに明示的に入力する必要があります。デフォルトのサイズは100MBで、16個の第1レベルディレクトリと256個の第2レベルディレクトリを使用します。表の各行は、単一のキャッシュディレクトリを指定します。既存のディレクトリ(デフォルトを除く)が一覧表示され、編集できるようになり、その後に1行の空白行が続きます。各行には、次の列の下にフィールドがあります。
    • ディレクトリ / var / spool / squidなどの最上位のキャッシュディレクトリへのフルパス または/disk2 / cache 。このディレクトリはすでに存在し、Squidが実行する用途(通常はsquidと呼ばれます)によって所有されている必要があります。モジュールはディレクトリを作成しません。
    • タイプ ディレクトリで使用されるストレージタイプ。常にUFSを選択する必要があります ここ。
    • サイズ(MB) 含まれるデータの最大量(メガバイト単位)。この制限に達すると、要求されていない最も古いファイルが新しいファイルに置き換えられます。
    • 第1レベルのdirs キャッシュディレクトリの下に作成されるサブディレクトリの数。通常、デフォルトの16で問題ありませんが、非常に大きなキャッシュの場合はこれを増やすことをお勧めします。
    • 第2レベルのdirs 各第1レベルのディレクトリの下に作成されるサブディレクトリの数。キャッシュが非常に大きくなる場合を除いて、256を入力する必要があります。
    • オプション このフィールドは空白のままにします。他の種類のディレクトリにのみ使用されます。 Squidが各キャッシュディレクトリの下に2つのレベルのサブディレクトリを作成する必要がある理由がわからない場合は、ディレクトリに多数のファイルが含まれていると、多くのファイルシステムのパフォーマンスが低下するためです。キャッシュされたHTMLページまたは画像はすべて個別のファイルに保存されるため、ビジー状態のプロキシシステム上のファイルの数は膨大になる可能性があります。それらを複数のディレクトリに分散させると、この問題が解決します。
  1. ディレクトリを追加したら、[保存]をクリックします ページ下部のボタン。複数追加する場合は、キャッシュオプションをクリックする必要があります アイコンをもう一度押して、新しい空の行でテーブルを再表示します。
  2. ディレクトリの定義が完了したら、モジュールのメインページに戻ります。新しいディレクトリが追加された場合は、Squidキャッシュディレクトリが初期化されていませんなどのエラーメッセージが表示されます。 が表示されます。 キャッシュの初期化をクリックします Squidに新しいキャッシュディレクトリにすべてのサブディレクトリを作成させるボタン。プロセス中にサーバーがシャットダウンされ、

完了したら再起動します。

  1. 初期化が完了したら、変更の適用をクリックします 任意のページにリンクして、新しいディレクトリの使用を開始します。


キャッシュオプションフォーム

キャッシュとプロキシオプションの編集

Squidには、キャッシュされるオブジェクトのサイズ、クライアントリクエストのサイズ、およびキャッシュするページのタイプを制限する多数の設定があります。これらを使用して、サーバーが膨大なファイル(ダウンロードしたISOイメージなど)を保存するのを停止したり、クライアントがアップロードまたはダウンロードできるファイルのサイズを制限したり、頻繁に変更されるページ(CGIスクリプトによって生成されたものなど)のキャッシュを防止したりできます。 )。ただし、最大アップロードサイズがわずか1 MBである場合を除いて、デフォルトは通常は正常に機能します。

キャッシュオプションを編集するには、次の手順に従います。

  1. キャッシュオプションをクリックします メインページのアイコンを表示して、フォームをもう一度表示します。
  2. アップロードされるファイルの最大サイズ#を設定するには、リクエスト本文の最大サイズの2番目のオプションを選択します フィールドで、テキストボックスに数値を入力し、メニューからいくつかの単位を選択します。 10MBまたは100MBは、誰にとっても十分すぎるはずです。
  3. クライアントが大きなファイルをダウンロードしないようにするには、同じ方法で[*最大返信本文サイズ*]フィールドに入力します。これは、クライアントが巨大な映画やISOファイルをダウンロードすることによるネットワークの悪用を防ぐために使用できますが、多くの場合、大きなファイルを分割してダウンロードすることで破壊される可能性があります。
  4. ページをキャッシュに保存できるファイルの上限を設定する場合は、最大キャッシュ時間を入力します デフォルトに設定したままにする代わりにフィールド 。それ以外の場合、データは最大1年間、または元のサーバーによって設定された有効期限までキャッシュされます。
  5. ダウンロードしたファイルをキャッシュするだけでなく、Squidはサーバーからのエラーメッセージを記憶し、同じページを要求するクライアントにそれらを返します。数値を入力し、失敗したリクエストのキャッシュ時間で単位を選択することで、エラーがキャッシュされる時間を変更できます。 分野。 デフォルトの場合 を選択すると、エラーは5分間キャッシュされます。ただし、Webサイトのエラーを修正したばかりの場合は、これでも煩わしいほど長くなる可能性があります。
  6. Squidは、DNSサーバーが提供するTTLに関係なく、ホスト名ルックアップへの応答をキャッシュして、DNSアクティビティの量を減らします。 デフォルトの場合 * DNSルックアップキャッシュ時間*フィールドで選択されている場合、応答は6時間記憶されます。これが長すぎると思われる場合は、2番目のラジオボタンを選択し、代わりに独自のキャッシュ時間を入力してください。
  7. ACLのURLをキャッシュしない フィールドを使用して、特定のURL、Webサーバー、またはクライアントのキャッシュを完全に防ぐことができます。このフィールドでチェックされたACLの1つに一致するリクエストはキャッシュされないため、常に直接フェッチされます。この機能を使用して、 URL Path Regexp を作成することにより、動的に生成されたページのキャッシュをブロックできます。 .cgiのACL またはcgi-bin ここで選択します。 ACLがどのように機能し、定義できるかについての詳細は、「アクセス制御リストの使用」セクションを参照してください。
  8. 保存を押します ページ下部のボタンをクリックすると、メインメニューに戻ります。いくつかの追加のキャッシュオプションがメモリとディスクの使用量フォームにあるため、メモリ使用量をクリックします それを表示するアイコン。
  9. Squidが使用するメモリの量を制限するには、メモリ使用制限を入力します 分野。この制限は、転送中および頻繁にアクセスされるファイルの保存に使用される最大メモリと、否定的な応答にのみ影響することに注意してください。 Squidは他の目的でメモリを使用するため、ここに入力したものよりも確実に多くを消費します。 デフォルトの場合 を選択すると、8 MBの制限が適用されます。これは、ビジー状態のサーバーには低すぎる可能性があります。
  10. 巨大なファイルのキャッシュを防ぐには、[最大キャッシュオブジェクトサイズ]フィールドに入力します。デフォルトはわずか4MBであるため、十分なディスク容量がある場合は、確実に増やす必要があります。
  11. 保存を押します フォームの下部にあるボタンをクリックしてから、変更を適用します メインページのリンクをクリックして、すべての新しい設定をアクティブにします。

アクセス制御リストの概要

ACL(アクセス制御リスト)は、おそらくSquidの最も強力な機能です。 ACLは、クライアントの要求に適用され、一致するかどうかを確認するための単なるテストです。次に、各リクエストが一致するACLに基づいて、リクエストをブロックするか、キャッシュを防止するか、遅延プールに強制するか、別のプロキシサーバーに渡すかを選択できます。多くの異なるタイプのACLが存在します。たとえば、1つのタイプはクライアントのIPアドレスをチェックし、別のタイプは要求されているURLと一致し、他のタイプは宛先ポート、Webサーバーのホスト名、認証されたユーザーなどをチェックします。

ACLの最も一般的な使用法は、ネットワーク外のクライアントからの接続をブロックすることです。インターネットに接続され、インターネットからアクセスできるプロキシサーバーを実行している場合は、ローカルネットワーク外のホストにプロキシサーバーの使用を許可しないでください。悪意のある人々は、他のプロキシを使用して、ハッキング、スパムの送信、または許可されるべきではないWebサイトへのアクセスに使用される接続をロンダリングすることがよくあります。

特別なCONNECTプロキシ要求を使用して任意のポートに接続できるため、ACLは、443(SSLのデフォルト)以外のポートでの使用をブロックするためによく使用されます。これにより、ユーザーはプロキシを使用して、AIM、ICQ、MSNなどのWebサーバー以外のサーバーに接続できなくなります。同様に、ACLは、SSH、telnet、SMTPで通常使用される22、23、25などのポートへの通常のHTTPリクエストをブロックするように設定できます。

Squid構成でACLを定義するだけでは、実際には何も起こりません。効果を得るには、何らかの方法で適用する必要があります。このセクションでは、それらを使用して、サーバーへのどの要求を許可または拒否するかを制御する方法について説明します。他のセクションでは、他のサーバーのキャッシュとアクセスにどのように関連するかを説明しています。

リクエストを受信すると、Squidは最初に一致するACLを決定します。次に、この一致リストをプロキシ制限のリストと比較します。各プロキシ制限には、1つ以上のACLと実行するアクション(許可または拒否)が含まれています。リクエストのACLに一致する制限が見つかるとすぐに、そのアクションによってリクエストが許可されるか拒否されるかが決定されます。一致する制限がない場合は、リストの最後のアクションの反対が適用されます。このため、ほとんどのSquid構成での最終的なアクションは、すべて許可です。 またはすべて拒否

他のプロキシからのICP要求もチェックされ、どのACLが一致するかが確認され、類似しているが異なるICP制限のリストと比較されて、許可されるかどうかが確認されます。 他のプロキシへの接続を参照してください ICPとは何か、いつ使用されるかについてのより複雑な説明については、後のセクションを参照してください。

典型的なデフォルトのSquid構成には、いくつかのACLとプロキシ制限が含まれています。セキュリティ上の理由から、デフォルトではどこからのすべてのリクエストも拒否されます。つまり、誰もがプロキシを使用する前に、制限リストを変更する必要があります。方法については、以下をお読みください。

定義されたACL、プロキシ制限、およびICP制限のリストを表示するには、アクセス制御をクリックします。 モジュールのメインページのアイコン。下の画像が示すように、名前、タイプ、および一致を示すACLのテーブルが左側に表示されます。右側には、プロキシとICPの制限の表があり、それらのアクションとそれらが一致するACLを示しています。制限テーブルには、順序が重要であるため、各エントリの横に上下の矢印があり、リスト内でそれらを移動できます。


アクセス制御リストページ

クライアントがプロキシを使用する前に、一部のアドレスからのアクセスを許可するようにプロキシを構成する必要があります。これを行う手順は次のとおりです。

  1. アクセス制御ページで、クライアントアドレスを選択します 既存のACLのリストの下にあるメニューから。 新しいACLの作成をクリックすると ボタンをクリックすると、一致するアドレスを入力するためのフォームが表示されます。
  2. ACL名 フィールドにyournetworkなどの短い名前を入力します 。
  3. From IPの下の空のフィールド 192.168.1.1など、許可する範囲の開始IPアドレスを入力します。
  4. To IPの下のフィールドの場合 192.168.1.100などの範囲に終了アドレスを入力します 。この範囲内にあるクライアントのみがACLに一致します。 ネットマスクには何も入力しないでください 分野。
  5. または、 From IP にネットワークアドレスを入力して、IPネットワークを指定することもできます。 フィールド、およびネットマスク( 255.255.255.0 など) )ネットマスクに 分野。複数入力するには、このACLを保存して再編集し、新しい空白のフィールドが表示されるようにする必要があります。
  6. 保存をクリックします ボタンをクリックしてACLを追加し、新しいACLが一覧表示されるアクセス制御ページに戻ります。
  7. プロキシ制限の追加をクリックします プロキシ制限の下 テーブル。
  8. 表示されるフォームで、[許可]を選択します アクションから 分野。
  9. マッチACL リストで、新しい yournetworkを選択します ACL。
  10. 保存をクリックします このフォームのボタンをクリックして、アクセス制御ページに戻ります。新しい制限は、テーブルの下部、おそらくすべて拒否の下に表示されます。 エントリ。
  11. 新しい制限の横にある上矢印をクリックして、制限をすべて拒否の上に移動します。 。これにより、Squidはネットワークからの接続を許可し、他のすべてのユーザーを拒否するようになります。
  12. 最後に、[変更を適用]をクリックします ページ上部のリンク。これで、プロキシは内部ネットワーク上のクライアントで使用できるようになりますが、他のユーザーは使用できなくなります。

これらの手順は、デフォルトのSquid構成から開始していることを前提としています。プロキシがすでにどこからでもアクセスできるように構成されている場合(すべて拒否を変更することにより) すべて許可への制限 )、ネットワークの外部からクライアントをブロックするには、もう一度変更する必要があります。使用可能なACLのタイプとその使用方法の詳細については、次の2つのセクションをお読みください。

ACLの作成と編集

あるアドレス、あるサーバー、またはあるページへのリクエストをブロックまたは許可する前に、適切なACLを作成する必要があります。これを行うための基本的な手順は次のとおりです。

  1. [アクセス制御リスト]テーブルの下にあるドロップダウンメニューから作成するACLのタイプを選択し、[新しいACLの作成]ボタンをクリックします。
  2. 表示されるフォームで、ACL名に新しいACLの名前を入力します 分野。同じ名前のACLが複数ある場合、その名前のACLが一致すると、一致したものとして扱われます。名前は文字と数字のみで構成し、スペースや特殊文字は使用しないでください。
  3. 以下の表で説明されているように、フォームの残りの部分に入力します。
  4. 失敗URL フィールドに、このACLによって拒否されたクライアントがリダイレクトされる完全なURLを入力します。これにより、デフォルトのSquid応答の代わりに表示されるカスタムエラーページを定義できます。
  5. 保存をクリックします フォームの下部にあるボタン。

ACLが作成されたら、リスト内の名前をクリックし、フィールドを変更して、保存をクリックすることで、ACLを編集できます。 。または、削除を使用して削除できます(プロキシまたはICPの制限で使用されていない場合)。 ボタン。いつものように、変更を適用 行った変更をアクティブにするには、リンクを使用する必要があります。

Squidには驚くほど多くのACLタイプがありますが、サーバーのすべてのバージョンですべてが利用できるわけではありません。次の表に、Squid 2.4で作成できるものと、それらの機能と、各タイプのACLの作成フォームのフィールドの意味を示します。

多くのタイプのACLは、特定の状況には不適切です。たとえば、クライアントがCONNECTリクエストを送信した場合、URLパスは使用できないため、 URL Path Regexp ACLは機能しません。このような場合、ACLは自動的に一致しないと見なされます。

プロキシ制限の作成と編集

いくつかのACLを作成したら、プロキシ制限を作成、編集、および移動することで、それらを使用できます。 Squidは、すべてのリクエストを定義されたすべての制限と順番に比較し、一致するものが見つかると停止します。次に、その制限に設定されたアクションによって、要求が許可されるか拒否されるかが決まります。この処理システムとACLの機能を組み合わせることで、非常に複雑なアクセス制御ルールを設定できます。たとえば、地震のあるサイトへのすべてのアクセスを拒否できます。 特定のクライアントアドレスを除き、月曜日から金曜日の午前9時から午後5時までのURL。

プロキシ制限を作成するには、次の手順に従います。

  1. アクセス制御をクリックします モジュールのメインページにあるアイコンをクリックして、上のスクリーンショットに示されているページを表示します。
  2. プロキシ制限の追加をクリックします 既存の制限のリストの下にある作成フォームに移動します。
  3. アクションから フィールドで許可を選択します または拒否 一致するリクエストを処理するかどうかによって異なります。
  4. 一致ACL listを使用して、すべてが一致した場合にアクションをトリガーする複数のACLを選択できます。同様に、ACLと一致しない フィールドを使用して、トリガーされるアクションに一致してはならないACLを選択できます。両方のリストから選択を行って、左側のすべてのACLが一致し、右側のACLが一致しない場合にのみアクションをトリガーする必要があることを示すことは完全に有効です。デフォルトの構成では、Squidには allというACLがあります。 すべてのリクエストに一致します。これは、すべての人を許可または拒否する制限を作成する場合に役立ちます。通常、その1つはデフォルトで存在します。
  5. 保存をクリックします ボタンをクリックして新しい制限を作成し、アクセス制御ページに戻ります。
  6. プロキシの制限でその横にある矢印を使用します テーブルを正しい場所に移動します。リストがすべて拒否で終わる場合 エントリの場合、効果を得るには、下部から移動する必要があります。リストにネットワークからのすべてのクライアントを許可するエントリがあり、一部のサイトへのアクセスを拒否する制限を追加した場合は、そのリストを許可の上に移動する必要があります。 使用するエントリもあります。
  7. 制限の作成と配置が完了したら、変更の適用を押します。 上部のリンク

それらをアクティブにするページ。

プロキシ制限が作成されたら、アクションのリンクをクリックしてプロキシ制限を編集できます。 テーブル内のその行の列。これにより、制限の作成に使用したものと同じ編集フォームが表示されますが、保存が使用されます。 および削除 下部にあるボタン。前者はアクションまたは一致するACLに加えた変更を保存し、後者は制限を完全に削除します。繰り返しますが、変更を適用 変更をアクティブにするには、制限を更新または削除した後にリンクを使用する必要があります。何らかの理由ですべてのプロキシ制限を削除すると、Squidはすべてのクライアントからのすべてのリクエストを許可しますが、これはおそらくお勧めできません。

また、アクセス制御ページには、ICP要求に適用される制限を編集および作成するためのテーブルがあります。 As the *Connecting to other proxies* section explains, ICP is a protocol used by Squid proxies in a cluster or hierarchy to determine what URLs other servers have cached. You can add to and edit entries in the ICP restrictions table in exactly the same way as you would for proxy restrictions. If you really are running a cluster of proxies, it may make sense to block ICP requests from sources other than your own network. If not, the default setup that allows all ICP packets is fine.

Setting up proxy authentication

Even though it is possible to configure Squid to allow access only from certain IP addresses, you may want to force clients to authenticate themselves to the proxy as well. This might make sense if you want to give only certain people access to the web, and cannot use IP address validation due to the use of dynamically assigned addresses on your network. It is also handy for keeping track of who has requested what through the proxy, as usernames are recorded in the Squid logs.

All browsers and programs that can make use of a proxy also support proxy authentication. Browsers will pop up a login window for entering a username and password to be sent to the proxy the first time it requests them, and automatically send the same information for all subsequent requests. Other programs (such as wget or rpm) require the username and password to be specified on the command line.

Each login and password received by Squid is passed to an external authentication program which either approves or denies it. Typically this program checks against a separate users file, but it is possible to write your own programs that use all sorts of methods of validating users - for example, they might be looked up in a database, or an LDAP server, or the Unix user list. Webmin comes with a simple program that reads users from a text file in the same format as is used by Apache, and this module allows you to edit users in such a file.

The steps to turn on authentication for your Squid proxy are :

  1. On the module's main page, click on the Access Control icon to bring up the form shown in Figure 44-4.
  2. Select External Auth from the menu below the ACL table and hit the Create new ACL ボタン。
  3. In the form that appears, enter auth for the ACL name and select All users in the External auth users 分野。 Then, hit the Save button.
  4. Click on Add proxy restriction below proxy restrictions table.
  5. Select Deny in the Action field and choose your new auth ACL from the Don’t match ACLs リスト。 This will block any proxy requests that are not authenticated, thus forcing clients to log in.
    Selecting Allow and then choosing auth from the Match ACLs field can be used for a slightly different purpose. This creates a proxy restriction that allows access to all authenticated clients, which can be positioned to force clients outside your network to log in while not requiring it for those inside the network.
  6. 保存をクリックします button to return to the access control page again.
  7. Use the up arrow next to the new restriction to move it above any entry in the table that allows all access from your own network. If it is below this entry, clients from the network will be able to use the proxy without needing to log in at all. Of course, this may be what you want in some cases.
  8. Click on the Authentication Programs icon back on the main page.
  9. From the Authentication program field, select Webmin default 。 This tells the module to use the simple text-file authenticator that comes with the module so that you don’t have to write your own. Of course, you can specify your own custom program by selecting the last radio button and entering the full path to a script with some parameters in the adjacent text box. This program must continually read lines containing a username and password (separated by a space) as input, and for each output either the line OK or ERR for success or failure, respectively. Squid will run several instances of the program as permanent daemon processes when it is started.
  10. The login window that appears in browsers includes a description of the proxy server that the user is logging into. By default, this is Squid proxy-caching web server, but you can enter your own (such as Example Corporation Proxy) by filling in the Proxy authentication realm field.
  11. Normally, Squid will cache valid logins for one hour to avoid calling on the authentication program for every single request. This means that password changes may take up to an hour to take effect, which can be confusing. To lower this limit, at the cost of increased system load and slightly slower request processing, edit the Time to cache passwords for field.
  12. Hit the Save button and then click on Apply Changes on the main page.

Now that authentication is enabled, any attempts to use your proxy from a web browser will cause a login window to appear. Because no valid users have been defined yet, no logins will be accepted, which is not particularly useful! To create some users for authentication, follow these steps:

  1. Click on the Proxy Authentication icon on the module’s main page to bring up a table listing proxy users. At first, this will be empty.
  2. Click on the Add a new proxy user link above or below the table to display the user creation form. Configuring Logging 595
  3. Enter a login name into the Username field and a password for the user in the Password field.
  4. To temporarily disable this user without deleting him, change the Enabled? field to No.
  5. Hit the Create button to add the user and then click the Apply Changes link. This last step is necessary after creating a user for the changes to take effect, as Webmin’s Squid authentication program only reads the user file when first started.

A user can be edited by clicking on its name in the proxy users list, changing the username, password, or enabled status, and hitting the Save ボタン。 You can also completely remove a user with the Delete 編集フォームのボタン。 Again, Apply Changes must be clicked to make anymodifications or deletions active. Squid will also cache valid passwords (as explained above) to reduce the load on theauthentication program, so a password change may take some time to take effect.

The module’s user management feature will only work if you choose Webmin default in the Authentication program field or if your own custom program takes the full path to an Apache-style users file as a parameter. If your program validates users against some other database or server, or if the module cannot figure out which file contains users from the command, the Proxy Authentication icon will not appear. Sometimes you may want to allow normal UNIX users to log in to your program with the same passwords that they use for telnet and FTP. Even though it is possible to write a program that does proxy authentication against the UNIX user database, there is another solution—configuring the module to add, delete, and update proxy users whenever a UNIX user is created, removed, or renamed. This is most useful for keeping usernames and passwords in sync without needing to grant access to every single UNIX user. Once you have normal authentication set up as explained above, synchronization can be turned on by following these steps:

  1. On the module’s main page, click on the Module Config link in the top-left corner.
  2. As their names suggest, the Create proxy users when creating system users, Update proxy users when updating system users, and Delete proxy users when deleting system users fields control the automatic creation, modification, and deletion of proxy users when the same thing happens to a UNIX user. For each one, you can either select Yes or No. You should probably turn on synchronization for updates and deletions, but leave it off for creations so that you can explicitly control who gets access to the proxy.
  3. Hit the Save button at the bottom of the form to activate the new settings. From now on, actions performed in Webmin’s Users and Groups module will also affect the Squid user list in the ways you have chosen. Adding a user at the command line with useradd or changing a password with the passwd command, however, will not.

Webmin
  1. Ubuntu20.04にSquidプロキシをインストールして構成する方法

  2. AlmaLinux8にSquidプロキシをインストールする方法

  3. Ubuntu14.04にSquidプロキシサーバーをインストールします

  1. Debian11にSquidプロキシをインストールして設定する方法

  2. Rocky Linux / AlmaLinux8にSquidProxyをインストールして構成する方法

  3. Ubuntu18.04LTSにSquidプロキシサーバーをインストールする方法

  1. CentOS7にSquidプロキシサーバーをインストールする方法

  2. CentOS/RHEL 7 で squid プロキシ サーバーをセットアップする方法

  3. Squid Proxy - プロキシを隠す