

CentOS7 + Squid3.5系でBasic認証プロキシを構築する
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
CentOS7にSquidを入れてBasic認証つきのフォワードプロキシを立てた時のメモ。当時のバージョンはCentOS7標準リポジトリのSquid 3.5系。
インストール
sudo yum -y install squidCentOS7の標準リポジトリからそのまま入る。EPELなど追加リポジトリは不要だった。
Basic認証用のパスワードファイルを作る
echo "username:$(openssl passwd -apr1 password)" > /etc/squid/passwd2人目以降のユーザーを追加する時は > だと上書きされるので >> にする。
あと /etc/squid/passwd はsquidプロセスから読めないと認証が通らない。デフォルトだと権限が足りないことがあるので、
chown root:squid /etc/squid/passwdchmod 640 /etc/squid/passwdを忘れずにやっておく。ここでハマった。
squid.confの設定
Basic認証部分。
# Basic認証auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
# credentials ttlauth_param basic credentialsttl 10 hours
auth_param basic casesensitive on
# ACLacl authenticated proxy_auth REQUIRED
# allow aclhttp_access allow authenticatedhttp_access deny allbasic_ncsa_auth のパスは /usr/lib64/squid/ 配下。CentOS7のsquidパッケージ(3.5.20系)ではこの場所に入る。
ACL名は最初 password にしていたけどディレクティブの proxy_auth と紛らわしいので authenticated に変えた。あと http_access allow authenticated の後に明示的に http_access deny all を置いておかないと、意図しないアクセスが素通りする可能性がある。最初これを書き忘れていた。
ヘッダー情報を消す
プロキシ経由だとバレる系のヘッダーを消す設定。
forwarded_for offrequest_header_access X-Forwarded-For deny allrequest_header_access Via deny allrequest_header_access Cache-Control deny allforwarded_for off で X-Forwarded-For 自体は付与されなくなるので、直後の request_header_access X-Forwarded-For deny all は実質重複している。害はないので残しているが、forwarded_for off だけでも目的は達成できるはず(実機で厳密に差分検証はしていない)。
request_header_access はSquid3.x系では動くディレクティブ。4系以降での扱いは未確認。
補足(2021年1月時点の構成であることについて)
これはCentOS7 + Squid3.5系という当時の組み合わせでの手順。CentOS7は2024年6月30日にEOLを迎えているので、今から同じ構成で新規に立てるのはおすすめしない。Rocky LinuxやAlmaLinuxなど後継ディストリビューションへの移行が前提になる。