9.3. プロキシサーバの設定
プロキシサーバはクライアントPCの代理としてサーバとの通信を仲介するサーバのこと。 メリットは以下の通り。
- 特定のWEBサイトへのアクセスを制限できる
- クライアントからのアクセスを制御できる
- 一度アクセスしたサイトをキャッシュしてアクセスの高速化を図れる
9.3.1. Squid
SquidはLinuxで最も使用されているプロキシサーバの1つ。
Squidはsquid.confで設定を行う。
squid.confの主要設定項目
| 設定項目 | 説明 | 
|---|---|
| http_port | Squidが利用するポート番号 | 
| 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_user | anonymousでFTPアクセスするときのパスワード | 
| ftp_passive_on/off | FTPのパッシブモードの有効/無効 | 
| reference_age | キャッシュの保存期間 | 
| request_header_max_size | HTTPリクエストヘッダの最大サイズ | 
| requiest_body_max_size | HTTPリクエストボディの最大サイズ | 
| 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のアクセス制限はaclとhttp_accessで行う。
aclの場合は以下の書式。
acl acl名 ACLタイプ 文字列orファイル名ACLタイプは以下の通り。
| タイプ | 説明 | 
|---|---|
| src | クライアントのIPアドレス | 
| dst | 代理アクセス先サーバのIPアドレス | 
| srcdomain | クライアントのドメイン名 | 
| dstdomain | 代理アクセス先サーバのドメイン名 | 
| port | 代理アクセス先のサーバポート番号 | 
| myport | クライアントのポート番号 | 
| arp | MACアドレス | 
| proto | プロトコル | 
| method | HTTPのメソッド | 
| url_regex | URLにマッチする正規表現 | 
| urlpath_regex | URLからプロトコルとホスト名を除いたパス名にマッチする正規表現 | 
| 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