squidとは
Squidとは、プロキシサーバ(Proxy Server)、ウェブキャッシュサーバ(Web Cache Server)などに利用されているオープンソースソフトウェアである。RedHat Enterprise Linux、CentOS、Ubuntuなど、多くのLinuxディストリビューションで標準的に採用されている。当初はUNIX系OS向けに開発されていたが、現在はWindowsを含むほとんどのOSで利用可能であり、GNU GPLライセンス下で利用できる。
Squidという名称は、「いか」を意味している。複数のクライアントからの通信を集約し、いか足のようなシステム構成になることから命名されたと言われている。
Squidは、HTTP、HTTPS、FTPをはじめとする多くのプロトコルに対応している。また、Webキャッシュ機能により、特にフォワーディングプロキシとして利用される場合は利用する組織外へのウェブ系のトラフィックを削減することができる。
また最近では、SquidをOffice 365等のネットサービスの利用のためのインターネット回線の分離のためにも利用することも多くなり、再注目されている。
Squidの動作モード
Squidには、用途に合わせて次の4つのモードがある。
- フォワーディングプロキシ
- 多段プロキシ
- リバースプロキシ
- 透過プロキシ
フォワーディングプロキシ
Squidの最もポピュラーな機能がフォワーディングプロキシである。フォワーディングプロキシとは、インターネット上のウェブサーバなどに接続する際に、ウェブアクセスを中継する機能である。ネットワーク外部へのトラフィックを軽減するためであったり、内部ネットワークからアクセスできる先を制限するために利用される。
多段プロキシ
Squidは、中継したウェブのリクエストを直接ウェブサーバに接続して処理するだけでなく、後段のプロキシサーバに中継する機能も持っている。この機能のことを多段プロキシという。つまり、Squidを使って巨大なネットワーク内でプロキシの階層構造を組むことができる。また、外部のSaaSとして提供されているウィルスチェックプロキシへの中継としてSquidを使うこともできる。さらに、Squidに特定URLを設定し、上位のプロキシをバイパスするように設定することもできる。例えば、ウィルスチェックプロキシが処理できないURLがあるような場合に利用する。
リバースプロキシ
Squidは、ウェブアクセスを代表して受信し、内部にあるウェブサーバ群との通信を中継する、リバースプロキシとしても動かすこともできる。内部のウェブサーバの負荷分散を行ったり、URLごとにサーバを振り分けたりすることができる。また、リバースプロキシの機能を利用して、SquidでSSL/TLSのオフロードを行うこともできる。通常、SSL/TLSで利用する証明書は有償であるため、Webサーバの台数が増えるとコストがかかる。しかし、クライアントとSquid間はSSL/TLSでHTTPSによる暗号通信を行い、Squidが暗号をデコードすることで、証明書の使用をリバースプロキシサーバのみに限定できるというメリットがある。
透過プロキシ
Squidは透過プロキシの機能もサポートしている。透過プロキシとは、利用者がプロキシの存在を意識することなく利用できるプロキシのことであり、ネットワークの出口に設置されたルータなどと組み合わせて利用する。Linuxサーバでは、Squidとiptablesのパケットリダイレクト機能と組み合わせることによって透過プロキシを実現することができる。
Squidを使ったセキュリティの強化
Squidでプロキシを構築する理由の1つが、組織内から組織外へのWebトラフィックに対するセキュリティを強化することである。
多彩なアクセス制御機能
Squidには、ACL(Access Control List)の機能がある。ACLを使用することで、利用者や接続先などによって様々なアクセス制御を行うことができる。Squidには、このように多彩なアクセス制御が存在し、これらの制御方法を組み合わせることにより、きめ細かにアクセスの振り分けや制御を行うことができるようになっている。
外部認証プログラムとの連携
Squidはユーザ認証などを行う機能をサポートしている。ただし、認証機構をすべて外部プログラムと連携して実現する仕組みになっている。パスワードのダイジェスト認証やSASL認証、LDAP認証など、標準パッケージにバンドルされている認証プログラムを利用することもできるし、より複雑な認証ポリシーを実現したい場合は認証プログラムを自作して利用することも可能である。
- パスワードのダイジェスト認証
- SASL認証
- SMB認証
- Kerberos認証
- LDAP認証
- NIS認証
- クライアント証明書での認証
- ワンタイムパスワードでの認証
規制プログラムとの連携
SquidはURLフィルタリングなどのウェブリダイレクトプログラムと連携することができる。アクセス制御と組み合わせ、特定のユーザに対してURLフィルタリングをかけることで、ペアレントコントロールなどの機能を持たせることもできる。規制プログラムとの連携では、ICAP(Internet Content Adaptation Protocol)をサポートしている。
アクセス監査
Squidには、キャッシュログとアクセスログの2つのログがある。そのうち、アクセスログには利用者が閲覧しているすべてのURLの情報が記録される。したがって、組織内からのすべてのWebアクセスをSquid経由にしておくことで、誰がどのサイトを閲覧したかという監査ログを残すことができる。
デージーネットのサービス
デージーネットでは、Squidを使ったプロキシサーバの構築と、構築後のサポートを提供している。デージーネットは、インターネットサービスプロバイダのシステム構築の実績が多く、認証やセキュリティ配慮したシステム構築を手がけている。そのため、そうした厳しい環境でSquidを利用することも多い。特に、ISPでの利用に耐えられるURLフィルタリングやウィルスチェックの仕組みをオープンソースソフトウェアで構築する場合に利用している。これは、外部認証プログラムやICAPなどを使って外部と連携できる仕組みが用意されているからである。こうしたインタフェースを利用したカスタマイズなどの事例も多い。
Squidのサポート
Squidは、多くのLinuxディストリビューションに採用されている。そのため、脆弱性が発見された場合のアップデートなども容易に入手できる。さらに、RedHat Enterprise Linuxなどの商用ディストリビューションを利用すれば、設定方法に関するQ&Aや、問題が発生した場合の問い合わせを受けることもできる。
【カテゴリ】:セキュリティ  オープンソースソフトウェア  
【Webセミナー】Rocket.Chatだけじゃない!OSSビジネスチャットの最新情報
日程: | 12月19日(木)Webセミナー「BigBlueButton」を使用します。 |
内容: | Rocket.Chatの機能制限でお困りの方も必見!ライセンスフリーで利用できるOSSのビジネスチャットを紹介します。 |
ご興味のあるかたはぜひご参加ください。 |