Squid 6.13プロキシにBasic認証を追加する
Squid 6.13のNCSAヘルパーを設定し、許可するクライアントIPと有効なログインを組み合わせ、Basic認証の保護範囲を理解します。
この手順では、接続元を制限したSquid 6.13プロキシにNCSAベースのBasic認証を追加します。Debian 13のヘルパーは/usr/lib/squid/basic_ncsa_authです。利用するパッケージのパスとサービスアカウントを確認してください。
最初のアカウントを作る
ディストリビューションのhtpasswdを使い、対話的にパスワードを入力します。
sudo htpasswd -c /etc/squid/users proxyuser
sudo chown root:proxy /etc/squid/users
sudo chmod 640 /etc/squid/users所有者設定はDebianのサービスグループを前提とします。Squidはファイルを読む必要がありますが、ほかのユーザーは読めないようにします。追加アカウントでは-cを省いてください。これは新しいファイルを作成し、既存の項目を置き換える可能性があります。
同じ許可ルールで接続元とログインを要求する
既存の接続先ポート、管理、localhost、リンクローカルの保護ルールの後に配置します。
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/users
auth_param basic realm PrivateProxy
acl proxy_client src 198.51.100.27/32
acl logged_in proxy_auth REQUIRED
http_access allow proxy_client logged_in
http_access deny allクライアントアドレスをSquidから見える接続元に置き換えます。両方の条件に一致する必要があります。ログインルールを迂回する、前にある広範なクライアント許可を削除し、待ち受けとファイアウォールの制限は維持してください。
構文解析、再読み込み、2つのリクエストの比較
sudo squid -k parse -f /etc/squid/squid.conf解析エラーを直し、テスト前に管理下のSquidサービスを再読み込みします。許可された接続元から認証情報なしで送ると、認証を要求されるはずです。実際のプロキシホスト名を使い、認証済みリクエストと比べます。
curl --proxy http://proxy.example:3128 --proxy-basic --proxy-user proxyuser --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/ユーザー名だけを渡すと、curlがパスワードを尋ねます。有効なリクエストは接続先に到達するはずです。
Basic認証はクライアントとプロキシ間の交換を暗号化しません。後段の接続先HTTPSでは、平文プロキシへ既に送った認証情報を保護できません。適切に保護された経路を使ってください。これらのディレクティブはSquid 6.13向けです。Squid 8ではバージョン固有の設定を確認します。