squid3.4.9のtransparent(透過)について

スポンサーリンク
スポンサーリンク

自宅のプロキシサーバのVerUpで少し躓いたのでメモ。

2015/1/7現在CentOS-Baseに登録されているsquid3.1系も悪くは無いのだが、セキュリティ的に3.4系に乗り換えた方がよさそうだと聞いたので変更する事に。

squidのconfはVerによってディレクティブが使えなくなったりするので念のためBackup。ここまではよかった。

rootユーザになるかsudo付きで作業する。

service squid stop
yum remove squid

このあとsquidサイトにあるバイナリをyumでインストールできるようにレポジトリ追加。新規で/etc/yum.repos.d/squid.repoなどを作る。

[squid]
name=Squid repo for CentOS Linux 6 - $basearch
#IL mirror
baseurl=http://www1.ngtech.co.il/rpm/centos/6/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
priority=9

priority指定はCentOS-Baseより若い番号で指定。でインストール。

yum install squid

これで2015/1/7現在squid3.4.9がインストールされる。

ここで先ほど取っておいたsquid.confを書き直す。ちなみに我が家のsquidはキャッシュはされていない。squidclamavと連携のために存在する。要するに端末のウィルスチェックだけでは不安なので経路上に一段かませている。squid.confはこんな感じ。(3.4.9用)

http_port 3128
http_port 3129 transparent
shutdown_lifetime 0 seconds
server_persistent_connections off
client_persistent_connections off
acl NOCACHE src all
cache deny NOCACHE
no_cache deny all
#acl localhost src 127.0.0.1/32 ::1
#acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 192.168.1.0/24
acl DenyOS browser -i windows.95
acl DenyOS browser -i windows.98
acl DenyOS browser -i windows.me
acl DenyOS browser -i windows.nt.4\.0
acl DenyOS browser -i windows.nt.5\.0
acl DenyOS browser -i windows.nt.5\.1
acl DenyBrowser browser -i MSIE.4
acl DenyBrowser browser -i MSIE.5
acl DenyBrowser browser -i MSIE.6
acl DenyBrowser browser -i MSIE.7
http_access deny DenyOS
http_access deny DenyBrowser
http_access allow localhost
http_access allow localnet
http_access deny all
visible_hostname unkown
error_default_language Japanese
forwarded_for off
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

ここでミソは1,2行目と9,10行目。

1,2行目は透過プロキシを設定している。

3.1系だとひとつのPortで透過とブラウザプロキシ両方まかなえたのだが、3.4系ではtransparent指定した場合、そのPortでブラウザプロキシを設定すると、Port80とぶつかり通信できなくなるばかりか、ループ状態に陥るのでCPUリソースを食いつぶす。手がつけられたからよかったものの、危うくサーバを再インストールする可能性もあったのだ。squidサイトにPortを分けて書かれたサンプルがあったのでそれを見て設定。なおSSLも透過させる事ができそうなサンプルだったのだが

SSLは証明書を正確に受け取れる状態にしたい。

ということからあえてSSL透過まではしていない。SSLで経路を安全にするくらいだ。ウィルスもそうそう入ってくるとは思っていない。危険な考え方ではあるが。

続いては9,10行目。これは3.1系では設定しておかなければLocalhostでプロキシを経由させる場合通信できないのだが、3.4系ではlocalhost,to_localhostは予約済みとなっていて設定自体不要であるためコメントアウトしてある。

このconfを使ってsquidを起動する。

service squid start

そしてiptablesで設定している透過用のPortを書き換えれば動くようになる。

ちなみにDenyOSとDenyBrowserはそのままの意味でパッチも当てることもできないようなOS等は通信禁止にしている。

コメント

タイトルとURLをコピーしました