Linux

Squidでユーザ認証を行う方法【NTLM +Basic認証】

Linux

CentOS上のプロキシサーバ(squid)でWindows統合認証(NTLM認証)を行う方法について記載します。

プロキシサーバを認証化することで、ActiveDirectoryアカウントを持っていない外部ユーザの利用が制限できると共に、誰がどこにアクセスしているかをログから取得することができます。NTLM認証なので、ドメインユーザの場合にはSSO(シングルサインオン)です。最近はNTML認証ではなく、kerberos認証を使う方が推奨されていますが、その方法はまた別途紹介します。

また、NTLM認証に対応していないアプリがあるため、NTLM認証に失敗した後にBasic認証で対応できるようにします。

作業手順

環境としてCentOS+squidで、 認証用のADドメイン環境はすでにある状態 での作業を想定しています。 具体的な作業手順は以下になります。

  1. CentOSのドメイン参加
  2. Squidの設定(NTML認証)
  3. Squidの設定(Basic認証)

CentOSのドメイン参加

LinuxサーバをWindowsのActiveDirectoryに参加させます。ドメイン参加の手順は以下の記事を参考にしてください。

Squidの設定(NTML認証)

/etc/squid/squid.confを修正します。以下の設定を追加します。

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
 auth_param ntlm children 5
 auth_param ntlm keep_alive on

※注意
Squidのバージョンで使用できないオプションがあるので注意。
オリジナルのSquid.confを参照すること。

確認

プロキシサーバへアクセスした際に、認証ダイヤログが表示後、認証がクリアされればオッケーです。

SSOの場合には表示されません。Squidのログ(/var/log/squid/access.log)内にユーザ名が入っていればOKです。

Squidの設定(Basic認証)

NTLM認証化を行うと、認証を行っていない環境に比べて幾つかのトラブルが発生します。
基本的にIEやFireFoxなどのブラウザを介してのアクセスは問題ありませんが、
独自のアプリケーション(javaなど)からプロキシを介してインターネットへアクセスしようとした際に、
独自のアプリケーションがNTLM認証に対応していないと、エラーとなり、アクセスできません。

具体的に私が把握している限りでは、
・WindowsUpdateサイト
・駅すぱあと
・Microsoft アクティベーション
・Microsoft Officeアクティベーション
・Verisignアクティベーション
・Macintosh アップデート
・Adobe update
・IE Fishing機能
・各種ウイルスソフトのアップデート
 → Live OneCare、McAfee、ウイルスバスター、ノートンアンチウイルス等、、、
・JAVA アップデート
・Linux yumコマンド

などなど、かなりたくさんのアプリが利用できません。 これでは困るという場合があります。 そこで、そういう場合にはNTLM認証で失敗した際に、Basic認証を行う様にします。

/etc/squid/squid.confを修正します。

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on

auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid Basic Auth 
auth_param basic credentialsttl 2 hours

(略)

acl password proxy_auth REQUIRED
http_access allow password

注意!
NTLM認証の際には、パスワードは暗号化されているので保護されますが、
Basic認証の際はパスワードが平文でながれてしまいます。
セキュリティ的にBasic認証が問題な場合には使用しないほうがよいでしょう。
とくにActiveDirectoryユーザパスワードは再重要パスワードですよ!

また、NTLM認証ではドメインユーザの場合だとSSO(シングルサインオン)ですが、Basic認証の場合にはSSOにはなりません。

今回は以上となります。

コメント