Amazon Linux 2023でSquidサーバを構築する方法

背景

Amazon Linux 2023を使用してSquidプロキシサーバを検証する機会があって、忘れないうちに備忘として残します。

Squidプロキシサーバとは

Squidサーバとは、プロキシサーバやWebキャッシュサーバとして利用される、オープンソースソフトウェアです。主に、クライアントとWebサーバの間で通信を中継し、ネットワークの負荷を軽減したり、アクセス制御やセキュリティ強化など、様々な役割を担います。
Squidサーバの主な機能:

  • プロキシ機能: クライアントからWebサーバへのアクセスを中継し、アクセス元のIPアドレスを隠蔽したり、セキュリティ設定を行うことができます。
  • Webキャッシュ機能: 過去にアクセスしたWebページや画像をキャッシュすることで、再アクセス時にWebサーバへのアクセスを減らし、ネットワークの負荷を軽減できます。
  • アクセス制御: 許可されたクライアントのみがアクセスできるように、IPアドレスやユーザー名などに基づいてアクセスを制限できます。
  • セキュリティ強化: Webサーバへのアクセスを中継することで、Webサーバへの直接的な攻撃を防ぐことができます。

1. Amazon Linux 2023の準備

まず、Amazon EC2インスタンスを作成し、Amazon Linux 2023を選択します。インスタンスの設定は以下の通りです。

  • インスタンスタイプ: t4g.micro(ARM)
  • AMI: al2023-ami-2023.7.20250512.0-kernel-6.1-arm64
  • セキュリティグループ: TCP 3128ポートを開放(Squidのデフォルトポート)
  • IAMロール: 必要に応じてVPC内のリソースにアクセスできる権限を付与

2. Squidのインストール

Amazon Linux 2023の標準リポジトリからSquidをインストールできます。

sudo dnf install -y squid

インストール後、Squidのステータスを確認します。

systemctl status squid

3. Squidの基本設定

Squidの設定ファイル /etc/squid/squid.conf を編集し、基本的なプロキシ設定を行います。

sudo vi /etc/squid/squid.conf

以下の設定を追加または変更します。

http_port 3128
acl localnet src 10.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
http_access allow localnet
http_access deny all

設定を保存したら、Squidを再起動します。

sudo systemctl restart squid

4. Squidの高度な設定

4.1. キャッシュ設定

Squidのキャッシュ機能を有効にすることで、ネットワークの負荷を軽減できます。

cache_dir ufs /var/spool/squid 100 16 256
maximum_object_size 4096 KB
cache_mem 256 MB

4.2. アクセス制御

特定のIPアドレスやドメインへのアクセスを制限することができます。

acl blocked_sites dstdomain .example.com
http_access deny blocked_sites

4.3. ログ管理

Squidのログを適切に管理することで、トラブルシューティングや監査に役立ちます。

access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log

5. Squidの自動起動設定

インスタンスが再起動してもSquidが自動で起動するように設定します。

sudo systemctl enable squid

6. 動作確認

クライアント側でプロキシ設定を行い、Squid経由でインターネットにアクセスできるか確認します。

curl -x http://<EC2のIP>:3128 -L https://www.google.com

ステータスコード 200 が返ってくれば、Squidが正常に動作しています。

7. SSL Bumpの設定(オプション)

tls_outgoing_options capath=/etc/pki/tls/certs options=ALL
sslcrtd_children 3
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB

# Squid normally listens to port 3128
http_port 8080
http_port 3128 transparent ###HTTPアクセス用 Tranceparentモードの有効化
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/cert.cer tls-key=/etc/squid/key.pem cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS tls-dh=prime256v1:/etc/squid/bump_dhparam.pem ###HTTPSアクセス用 Tranceparentモードの有効化&ssldumpの有効化

上3行はSSL Bumpのキャッシュオプションです。下3行はSSL Bumpのポート設定なのですが、http_portが2つ空いているのは3128だけではparseエラー(squid -k parse)が発生してしまったため空けています。

まとめ

Amazon Linux 2023でSquidを構築する手順を紹介しました。Squidは、アクセス制御やキャッシュ機能を活用することで、ネットワークの最適化に役に立ちます。

Last modified: 2025-05-27

Author