自宅のプロキシサーバの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等は通信禁止にしている。
コメント