最終更新日: 2014年1月13日
Squid Home / FAQトップ

LDAP認証

通常、Proxyにてユーザ認証を行うような運用は少ないと思いますが、セキュリティを心配する企業や学校などではProxyを利用する際に、ユーザ側にIDによる認証を求める運用を行うケースもあります。 大規模な組織では、ユーザ管理やユーザ情報の一元化の為にLDAPサーバを既に構築している場合も有ることでしょう。 
Squid には、LDAPを使った認証プログラムが用意されており、これを使ってSquidを利用できるユーザの認証を行うことが可能になっています。これによりユーザ情報自体はSquidと別のサーバに持たせた運用形態になるため、セキュリティ的にも安全性が高める事が可能になります。

SquidからLDAPを使う方法には、バージョンによって使うモジュールが違うようですが、Squid2.5以降にはベーシック認証と同じ場所にLDAP認証に関するモジュールとして、"ldap_auth"と"squid_ldap_group"が存在する筈です。

更にSquidをPAMの使えるOSで起動する場合、PAMを経由してLDAPへのアクセス方法も考えられますが、この方法はLDAPというよりPAMの説明になるため、本資料には記述しませんのであしからず。(PAM認証で記述する予定です)

1.想定する環境

次の図のように、LDAPサーバが存在する環境に Proxy として Squid を構築し、ユーザ認証として LDAP を使った認証によって Proxy をクライアントから使えるようにします。

ユーザがクライアントからHTTPをリクエスト(①)し、それをSquidが受け取ると最初にユーザ認証が働きます。 クライアントに表示された認証ダイアログボックスでユーザIDとパスワードを入力(②)すると、SquidはこれをLDAPサーバに問い合わせ(③)て、ユーザが実際にLDAPサーバ上に存在するなら、リクエストされたHTTPを実際のリクエスト先のWebサーバへと送ります。(④)

2.ldap_authを使ったLDAP認証

ldap_authを使った認証は、認証サーバとしてLDAPを使っている事以外は設定箇所を含めて、ベーシック認証と同じ方法になります。
つまり、ユーザIDとパスワードをクリアテキストでSquidで渡すと、これをSquidはLDAPサーバに問い合わせる訳です。(LDAPパケットは暗号化されてない事に注意してください)

設定は、 squid.conf の以下の部分を編集していきます。

  1. auth_paramでベーシック認証プログラムとして、ldap_authを使うように構成:
    auth_param basic program /usr/lib/squid/ldap_auth -b "dc=robata,dc=org" -f "(&(uid=%s)(objectClass=posixAccount))" ldap-server.robata.org
    auth_param basic children 5
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours
  2. proxy_authを使ったACLエントリのを作成:
    acl foo proxy_auth REQUIRED
    acl localnet src 192.168.1.0/255.255.255.0
    http_access allow localnet foo

上記の設定を行う事で、LDAPサーバ(ldap-server.robata.org)からベース識別名が"dc=robata,dc=org"に属するユーザを検索するようになります。 この時、-fオプションでLDAPサーバから検索するオブジェクトクラスとして一般的な"posixAccount"の情報にある「uid」を使うようにしています。 (このあたりの詳しい意味についてはLDAPの解説書をご覧くださ)

Squid Home / FAQトップ

参考: