3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

ターミナルサーバユーザがi-Filterをプロキシとして使うとなりすましができる

プロキシとしてデジタルアーツ社のi-Filter7 を Windows Server 上で使ってます。

これでユーザ認証をNTLM認証としているのですが、ターミナルサーバを利用しているユーザがi-Filterを介してWEB閲覧した場合に、おかしな現象が発生しました。

ブロックログに引っ掛かっているユーザが、実際には別のユーザだったのです。

実際に自身のアカウントでターミナルサーバにログオンし、フィルタに引っ掛かるページを表示したのですが、ブロックページの禁止メッセージには別のユーザのアカウント名が表示されていました。

つまり、ログに表示されるユーザが全く信頼おけないということです。

とりあえずデジタルアーツ社の Q&A を検索すると、「i-FILTER」の「NTLM認証」で、同じ端末からログオンユーザーの切り替えをした際に、前回ログオンしたユーザー設定が残る現象が発生するのは何故ですか。 というのを見つけました。

このページによると、i-Filter には ActiveDirectory(ドメインコントローラ)の負荷軽減のために、「Cache Time to Live」という認証情報をキャッシュする機能が有るようです。

デフォルト値が 600秒(10分) なんですが、ブラウザ起動し i-Filter 認証されてから10分間は認証情報がキャッシュされます。この時間内に別アカウトでログオンしてブロックページ表示したとしても、i-Filterは10分間キャッシュされているユーザがフィルタに引っ掛かったと判断してしまうようですね。

たしかに普通のPCなら、10分以内にログインして使うユーザはそうそう無いと思うのですが、今回のようにターミナルサーバを使ったシンクライアントで百数十人が同時使用している場合は非常に困ったことになります。

この件で、デジタルアーツのサポートにターミナルサーバでちゃんと運用できる方法は無いのかと問い合わせたんですが、キャッシュ時間を短くするしか無いとのことでした。上記Q&AにはCache Time to Liveキャッシュ時間を30秒以下にすると過負荷になる可能性があるので十分に検討しろと書いていますし、サポート担当に規模を伝えてもどれくらいの値が最適かわからないようでした。(0にはできないため1秒で利用している事例は少数ながらあるとのことでしたが、まったく使い物にならんサポートです。)

どうやらこの製品はターミナルサーバでの利用は眼中にないようですね。

おまけにこのキャッシュの時間の設定変更を行うとi-Filterの再起動をしないといけないようです。

WEB上でキャッシュ時間の設定変更だけしておいて、i-Filterサービスを再起動するだけで構わないようなので、業務時間中に設定してバッチファイルでサービスの再起動をしてやる方法が使えます。(この点もサポート担当に聞いてみたんですが要領を得ない回答でしたね。)