9.3. プロキシサーバの設定

プロキシサーバはクライアントPCの代理としてサーバとの通信を仲介するサーバのこと。 メリットは以下の通り。

  • 特定のWEBサイトへのアクセスを制限できる
  • クライアントからのアクセスを制御できる
  • 一度アクセスしたサイトをキャッシュしてアクセスの高速化を図れる

9.3.1. Squid

SquidはLinuxで最も使用されているプロキシサーバの1つ。
Squidはsquid.confで設定を行う。

squid.confの主要設定項目

設定項目説明
http_portSquidが利用するポート番号
visible_hostnameホスト名
hierarchy_stoplistキャッシュを利用しない文字列
maximum_object_sizeキャッシュ可能な最大ファイル数
minumum_object_sizeキャッシュ可能な最小ファイル数(0は無制限)
maximum_object_size_in_memoryメモリ上の最大ファイルサイズ
ipchache_sizeキャッシュするIPアドレス数
cache_dirキャッシュを格納するディレクトリと容量など
cache_mem総メモリの最大サイズ
cache_accsess_logクライアントのアクセスログ
cache_logキャッシュのログ
ftp_useranonymousでFTPアクセスするときのパスワード
ftp_passive_on/offFTPのパッシブモードの有効/無効
reference_ageキャッシュの保存期間
request_header_max_sizeHTTPリクエストヘッダの最大サイズ
requiest_body_max_sizeHTTPリクエストボディの最大サイズ
reply_body_max_sizeレスポンスの最大ボディサイズ(0は無制限)
aclアクセス制御リスト
http_accsessアクセス制御リストの制御
auth_paramユーザ認証方式などの設定

squid.confの設定例は以下の通り。

# ネットワークオプション
http_port 8080
visible_hostname www.example.com

# cgi-binという文字列があればキャッシュを利用せず直接アクセス
hierarchy_stoplist cgi-bin ?

# 禁止するURLを正規表現で指定
acl QUERY urlpath_regex cgi-bin \?
# 上の設定にACLを適用
no_cachedeny QUERY

# キャッシュサイズの指定
chache_mem 20MB
# キャッシュ可能な最大ファイルサイズの指定
maximum_object_size 4096KB
# 最小オブジェクトの制限
minumum_object_size 0KB
# メモリ上の最大キャッシュサイズ
maximum_object_size_in_memory 8KB
# キャッシュする最大IPアドレス数
ipchache_size 1024

# キャッシュディレクトリとサイズなどの指定
# キャッシュディレクトリ  サイズ(MB) ディレクトリ数  サブディレクトリ数
cache_dir ufs /var/spool/squid 100 16 256
# クライアントのアクセスログ
cache_accsess_log /var/log/squid/accsess.log
# キャッシュのログ
cache_log /var/log/squid/cache.log
# ストレージマネージャの管理ログ
cache_log /var/log/squid/store.log

# 匿名FTPのパスワード
ftp_user passpass
# パッシブモードの有効
ftp_passive on

# HTTPリクエストヘッダの最大サイズ
request_header_max_size 10KB
# HTTPリクエストボディの最大サイズ
requiest_body_max_size 1MB
# レスポンスの最大ボディサイズ
reply_body_max_size 0

アクセス制御の設定

Squidのアクセス制限はaclhttp_accessで行う。
aclの場合は以下の書式。

acl acl名 ACLタイプ 文字列orファイル名

ACLタイプは以下の通り。

タイプ説明
srcクライアントのIPアドレス
dst代理アクセス先サーバのIPアドレス
srcdomainクライアントのドメイン名
dstdomain代理アクセス先サーバのドメイン名
port代理アクセス先のサーバポート番号
myportクライアントのポート番号
arpMACアドレス
protoプロトコル
methodHTTPのメソッド
url_regexURLにマッチする正規表現
urlpath_regexURLからプロトコルとホスト名を除いたパス名にマッチする正規表現
time有効な時刻の指定(例: 10:00-12:00)
proxy_authユーザ認証の対象

設定例は以下の通り。

acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl clients src 192.168.0.0/255.255.255.0
acl denydomain dstdomain x.com twitter.com
acl blacklist url_regex "/etc/squid/url_blacklist.txt"
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT

# Safe_ports以外のアクセスを禁止
http_access deny !Safe_ports
# SSL_ports以外のポートのCONNECTメソッドを禁止
http_access deny CONNECT !SSL_ports

http_access deny denydomain
http_access deny blacklist
http_access allow localhost
http_access allow clients
http_access deny all