squid常用アクセス制御方法


1、ローカル顧客のみ許可
ほとんどのsquidがインストールされると、クライアントIPアドレスベースのアクセスが制限されます.これはあなたのシステムが乱用されないように保護する最善の方法の一つです.これを行う最も容易な方法は,IPアドレス空間を含むACLを記述し,そのACLのHTTP要求を許可し,他のものを拒否することである.
acl All src 0/0
acl MyNetwork src 172.16.5.0/24 172.16.6.0/24
http_access allow MyNetwork
http_access deny All
アクセス制御の構成が簡単すぎるかもしれないので、より多くのローを追加します.http_を覚えてアクセスの順序が重要です.deny allの後に文を追加しないでください.必要に応じて、allow MyNetworkの前または後に新しいルールを追加する必要があります.
2、コンテンツフィルタ
特定のコンテンツへのアクセスをブロックすることは難しい問題です.通常,squidを用いたコンテンツフィルタリングが最も困難な部分は,ブロックされたサイトリストである.このようなリストを自分で維持したり、他の場所から取得したりしたいかもしれません.squid FAQの「アクセス制御」章には、無料の利用可能なリストへのリンクがあります.
このようなリストを用いたACL構文はその内容に依存する.リストに正規表現が含まれている場合は、次のように書くことができます.
acl PornSites url_regex"/usr/local/squid/etc/pornlist"(pronlistは自分で作成したファイル)http_access deny PornSites
一方、リストに元のサーバホスト名が含まれている場合はurl_を簡単に変更します.regexはdstdomainです.
3、勤務時間の制限使用
一部の会社では、勤務時間にWebの使用を制限したり、帯域幅を節約したり、従業員が仕事中に何かをすることを禁止したりするのが好きです.この最も難しい部分は、適切と不適切のインターネット使用の違いとは何か.残念なことに、私はこの質問に答えることができません.この例では、既知のサイト名が含まれているWebサイトのドメイン名リストを収集したと仮定し、squidを構成します.
acl NotWorkRelated dstdomain "/usr/local/squid/etc/not-work-related-sites"
 acl WorkingHours time D 08:00-17:30 http_access deny !WorkingHours NotWorkRelated
このルールに最初に置くことに注意してください!WorkingHours ACL.dstdomain ACLは、文字列またはリストに比べてパフォーマンスのコストがかかりますが、time ACLチェックは簡単です.以下の例では、アクセスを制御するために、以下の方法と前述したソースアドレス制御とを組み合わせる方法をさらに理解する.
acl All src 0/0
 acl MyNetwork src 172.16.5.0/24 172.16.6.0/24
acl NotWorkRelated dstdomain "/usr/local/squid/etc/not-work-related-sites"
acl WorkingHours time D 08:00-17:30
http_access deny !WorkingHours NotWorkRelated
http_access allow MyNetwork http_access deny All
上記の方法は、私たちの目標を実現し、作業時間内にいくつかのリクエストを拒否し、自分のネットワークからのリクエストを許可するため、実行できます.しかし、それは少し非効率かもしれません.注意NotWorkRelated ACLは、ソースIPアドレスに関係なく、すべてのリクエストで検索されます.もしそのリストが非常に長いならば、リストの中で外部のネットワークに対して要求する検索、純粋にCPU資源を浪費します.ルールを変更する必要があります
http_access deny !MyNetwork
 http_access deny !WorkingHours NotWorkRelated
 http_access Allow All
ここでは、代価の大きい検査を最後にします.squidを乱用しようとする外部ユーザーは、CPUリソースを無駄にしません.(目標達成と同時に効率に注意)
4、悪意のある顧客の阻止
何らかの理由で、特定の顧客のIPアドレスへのアクセスを拒否する必要があるかもしれません.この場合、たとえば、従業員や学生がネットワーク帯域幅やその他のリソースを異常に消費するWeb接続を開始した場合、この問題を根本的に解決する前に、squidを構成してこの要求を阻止することができます.
acl All src 0/0
acl MyNetwork src 172.16.5.0/24 172.16.6.0/24
 acl ProblemHost src 172.16.5.9
http_access deny ProblemHost
 http_access allow MyNetwork
http_access deny All
5,特定のユーザに特別なアクセスを付与する(これはよく用いられる)
ユーザー名ベースのアクセス制御を使用する組織では、通常、特定のユーザーに特別な権限を付与する必要があります.この簡単な例では、すべての認可ユーザー、管理者ユーザー名、アクセスを制限するWebサイトのリストの3つの要素があります.通常のユーザーでは、制限されたサイトへのアクセスは許可されませんが、管理者はこのリストを維持するタスクを持っています.すべてのサーバに接続し、特定のサイトが制限されたサイトのリストに格納されるかどうかを確認します.このタスクを完了する方法は、次のとおりです.
auth_param basic program /usr/local/squid/libexec/ncsa_auth
    /usr/local/squid/etc/passwd
acl Authenticated proxy_auth REQUIRED
acl Admins proxy_auth Pat Jean Chris
acl Porn dstdomain "/usr/local/squid/etc/porn.domains"
acl All src 0/0
http_access allow Admins
http_access deny Porn
http_access allow Authenticated
http_access deny All

まず、ACL定義が3つあります.Authenticated ACLは、有効なエージェント検証クレジットに一致します.Admins ACLは、ユーザーPat、Jean、Chrisの有効なクレジットから一致します.Porn ACLは、porn.domainsファイルで見つかった元のサーバホスト名に一致します.
この例では、4つのアクセス制御ルールがあります.1つ目はAdmins ACLのみをチェックし、Pat、Jean、Chrisからのすべてのリクエストを許可します.他のユーザーに対して、squidは次のルールに移行します.2つ目のルールに対して、元のホスト名がporn.domainsファイルにある場合、リクエストは拒否されます.PornACLに一致しないリクエストに対して、squidは3つ目のルールに移行します.3つ目のルールに要求が有効な信用検証を含む場合、その要求は許可する.外部検証器(ここでのncsa_auth)は、信用が有効か否かを決定する.それらが無効である場合、最後の規則が現れると、その要求は拒否される.ncsa_auth検証器は必須ではないことに注意する.
NCSA検証アシストが相対的に流行しているのは、その単純さと歴史のせいである.Unixの/etc/passwdファイルのようなユーザー名とパスワードを別のテキストファイルに格納する.このパスワードファイルフォーマットは、最初はNCSA HTTPサーバプロジェクトの一部として発展した.squid.confでは、パスワードファイルのパスをプログラムの単一として指定する必要があるコマンドラインパラメータ.Apacheに付属のhtpasswdプログラムを使用してパスワードファイルを作成および更新できます.http://www.squid-cache.org/htpasswd/ここでダウンロードします.このページでは、chpasswd CGIスクリプトをダウンロードすることもできます.必要に応じて、ユーザーが自分のパスワードを変更することができます.