February 13, 2016MacOSX 10.5.8 に clamav[Computer]
かなり古いMac mini (2007年のCore 2 Duo)のメンテをして、ウイルス対策をほどこすことにしました。といってもMac mini自体のウイルス対策をするというよりは、プロキシと組み合わせてウイルススキャンゲートウェイとし、他のPCのインターネットアクセスを保護しようという使い方をしています。プロキシにはsquid-3.4.13、ウイルススキャンにはclamav-0.99、間をつなぐのはc_icap-0.4.2 + c_icap_module-0.4.2 で構成しました。『icap連携をしてみる』や『ウイルス対策の組込み(ClamAV)』を参考にしつつ、全てセルフビルドで構成してみました。 中でも古いMacOSX 10.5.8にclamavの導入には苦労したので、備忘録をここに残しておこうと思います。必要なライブラリ(最低限zlib)が揃っていれば configure && make && make install まで通るのですが、いざ動かしてみようとすると、例えばウイルス定義データベースを更新するfreshclamを実行すると WARNING: [LibClamAV] cli_cvdload: Corrupted CVD header
ERROR: Verification: Malformed database となって死んでしまいます。これは結局のところ、MacOSX 10.5.8に入っているzlibが古くzlib-1.2.3であることが原因でした。以下、対処方法を書いておきます。 気を取り直して最も新しいzlib-1.2.8をビルド、インストール。なお元からある古いものはそのままにしておきたいので、別のディレクトリ(ここでは /usr/local/zlib)にいれることにします。 $ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar zvxf zlib-1.2.8.tar.gz $ (cd zlib-1.2.8 && ./configure --prefix=/usr/local/zlib && make && sudo make install) zlibはlibxml2とも依存関係があるようなのでlibxml2も更新。 $ wget ftp://xmlsoft.org/libxml2/libxml2-2.9.3.tar.gz
$ tar zvxf libxml2-2.9.3.tar.gz $ (cd libxml2-2.9.3 && ./configure --prefix=/usr/local/libxml2 --with-zlib=/usr/local/zlib && make && sudo make install) そして上記のライブラリを見るようにclamavをビルド、インストール。ちなみにopensslも古いものだと良くないので /usr/local/ssl に新しいものを作ってあることを想定しています。 $ wget http://www.clamav.net/downloads/production/clamav-0.99.tar.gz
$ tar zvxf clamav-0.99.tar.gz $ (cd clamav-0.99 && ./configure -with-openssl=/usr/local/ssl --with-zlib=/usr/local/zlib --with-xml=/usr/local/libxml2 && make && sudo make install) これを気を取り直してfreshclamをかけてみると通りました。念のため調査してみます。 $ otool -L /usr/local/lib/libclamav.dylib
/usr/local/lib/libclamav.dylib: /usr/local/lib/libclamav.7.dylib (compatibility version 9.0.0, current version 9.1.0) /usr/local/libxml2/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.3.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.7) /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) /usr/local/ssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/local/ssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/local/zlib/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8) /usr/local/lib/libpcre.1.dylib (compatibility version 4.0.0, current version 4.6.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) うまくいきました。最悪リンクしているライブラリが違う場合はinstall_name_toolを使って強引に修正するということも可能です(『otool と install_name_tool を使ったライブラリのパス変更』に詳しい)。 さらに追記ですが、c_icap-0.4.2、c_icap_modeule-0.4.2には、ビルド前に以下のパッチをあてて対応しています。 パッチをあてることで、c_icap-0.4.2はビルドエラーの修正、c_icap_modeule-0.4.2はファイルソケットに対応できる(clamd_mod.ClamdSocketが使える)ようになります。 コメント
コメントする
|
スポンサード リンク
|