この設定はDebian 13のパッケージを含むSquid 6.13向けです。squid -vでインストール済みのバージョンを確認してください。Squidのディレクティブ参照では、バージョン8でhttp_accessは利用できないとされています。

まずアドレスを選ぶ

リスナーにはサーバーに割り当てられたアドレスが必要です。クライアント規則にはSquidが観測する送信元アドレスが必要で、ノートPCのプライベートアドレスではなくNATネットワークの公開出口アドレスかもしれません。

以下のドキュメント用アドレスを置き換えてください。クライアント制限は一つのアドレスを/32で表しています。

http_port 192.0.2.10:3128
acl proxy_client src 198.51.100.27/32
acl Safe_ports port 80 443
acl SSL_ports port 443
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny manager
http_access deny to_localhost
http_access deny to_linklocal
http_access allow proxy_client
http_access deny all

パッケージ設定内の該当するリスナー、ACL定義、アクセス規則を置き換え、ログとファイルシステムの設定は残します。既存のクライアント許可より下にこの規則を追加すると、制限を回避される場合があります。リスト型ACLの定義を繰り返すと、値が追加されることもあります。

リクエストが規則を通る流れ

最初の拒否は、不要な宛先ポート、管理用リクエスト、ローカルまたはリンクローカルの宛先を拒否します。その確認後に既知のクライアントを許可し、それ以外は最後の拒否に到達します。送信元許可リストだけでは宛先を制限できないため、宛先保護は引き続き必要です。

リスナーを公開する前に、ホストまたはネットワークのファイアウォールを想定する送信元に制限します。バインドはSquidが接続を受け付ける場所を、アクセス規則は許可するリクエストを決めます。

sudo squid -k parse -f /etc/squid/squid.conf

管理されているサービスをリロードする前に、構文解析エラーを修正してください。許可されたクライアントと、拒否されるべき管理下の別の送信元から試します。宛先に許可したリクエストだけが届くことを確認してください。TCP接続だけでは転送許可の証明になりません。

関連記事