CentOS7 + Squid3.5系でBasic認証プロキシを構築する

  • CentOS
  • Squid
  • Proxy
  • Linux

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

CentOS7にSquidを入れてBasic認証つきのフォワードプロキシを立てた時のメモ。当時のバージョンはCentOS7標準リポジトリのSquid 3.5系。

インストール

sudo yum -y install squid

CentOS7の標準リポジトリからそのまま入る。EPELなど追加リポジトリは不要だった。

Basic認証用のパスワードファイルを作る

echo "username:$(openssl passwd -apr1 password)" > /etc/squid/passwd

2人目以降のユーザーを追加する時は > だと上書きされるので >> にする。

あと /etc/squid/passwd はsquidプロセスから読めないと認証が通らない。デフォルトだと権限が足りないことがあるので、

chown root:squid /etc/squid/passwd
chmod 640 /etc/squid/passwd

を忘れずにやっておく。ここでハマった。

squid.confの設定

Basic認証部分。

# Basic認証
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
# credentials ttl
auth_param basic credentialsttl 10 hours
auth_param basic casesensitive on
# ACL
acl authenticated proxy_auth REQUIRED
# allow acl
http_access allow authenticated
http_access deny all

basic_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 off
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all

forwarded_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など後継ディストリビューションへの移行が前提になる。