Kerberos 認証を使用して squid を設定しました。また、Web の通常の悪質な行為をブロックするために、URL リダイレクタとして squidguard を使用しています。ただし、一部のサイトでは特定のユーザーに許可し、他のサイトでは許可しません。ストリーミングを使用していないと仮定すると、これはすべてうまく機能します。
私が行った Squid ログと Wireshark トレースから判断すると、ストリームへの最初のリクエストが送信されると、すべてが正常で、認証されたユーザー名がリクエストとともに Squidguard に送信されます。問題は、後続のトラフィックでユーザー名が Squidguard に送信されず、デフォルト ポリシーに基づいてブロックされることです。
私は squid に組み込まれている許可/拒否機能を使ってみましたが、これはかなり扱いづらく、これまでのところ squidguard は非常に簡単で高速です。
では質問です:
- Squid ですべてのリクエストにユーザー名を渡すにはどうしたらいいでしょうか? (これは最善の方法ではないような気がします)
- ユーザー名が渡されない場合でも、トラフィックが特定のユーザーに認証されていることを Squidguard で確認するにはどうすればよいですか?
- これを実現する他の方法はありますか?
重要と思われるいくつかの詳細:
- squidguard が比較するために、テキスト ファイルに保存されているユーザーのリストを使用しています。
- Squid で完全な Kerberos 認証を使用しています。
- 6.0 の
- イカ 3.1.4
- イカガード 1.3
編集
説明を明確にするために、何が起こっているかを示す次の calamaris スニペットを追加しました。
wsXX.domain.local 534 5.99 34M 3.04 1 69.93
*.outsidedomain.com 204 14.22 5M 20.66 0 92.14
<error> 137 0.00 0M 0.00 0 589.16
[email protected]@wsXX.domain.local 115 0.00 1M 0.00 70 0.16
*.outsidedomain.com 84 0.00 1M 0.00 73 0.17
<error> 24 0.00 0M 0.00 21 0.00
* 編集 *
さらに深く調べていくと、特にHTTPリクエストへの応答に対して認証が行われていないことが分かりました。実際、
http_reply_access deny !auth
https トラフィックは一切許可されませんが、http トラフィックのほとんどは許可されます。私は完全に困惑しています。実際には、認証されていないトラフィックを通過させているように見えます (今日テストします) [テスト済みで、認証されていない http トラフィックは許可されますが、https は許可されます]。ただし、squid.conf には次の行があります。
http_access deny !auth
http_access allow auth
http_access deny all
* 編集 * 認証されていない http と httpsm を修正しました。ストリーミング サイトを除いて、すべて正常に動作しているようです :(
参考までに、設定で次の行を変更する必要がありました
http_access deny !Safe_ports
に
http_access deny !Safe_ports !auth
答え1
そこで、私はこれを理解しました。私の squid.conf には、プロキシを通過する認証されていないトラフィックを許可している他の ACL がいくつかあることがわかりました。これらのルールは、認証されていないトラフィックを拒否するルールよりも先にヒットしていたため、トラフィックは認証されずに送信されていました。
同様のことをしようとしている人にとって、これが良いリソースとなることを願っています。