▼flatten8ツールを最近のLinuxで使用する▼

$Keywords: SGS, Symantec Gateway Security, remote tools, flatten8, error while loading shared libraries, Segmentation fault $

Symantec Gateway Security (SGS) では、ログファイルを SGMI管理コンソールからローカルに 保存 することができますが、 このファイルはバイナリなのでそのままでは活用できません。

このバイナリログは、CDROMやホットフィックスで提供されている 「リモートツール」の flatten コマンドでテキストにできる
らしいですが、 SGS内蔵のLinuxで使っているものをそのまんま抜き出しただけらしく、 READMEの指示通りにLinuxに展開して実行しても 共有ライブラリエラーで実行できなかったりします。

% ./flatten8
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
./flatten8: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory
% _

$Id: flatten8.html,v 1.3 2007/05/21 07:21:09 kabe Exp $


▽解法:SGS上で使う

解決になってませんが、SRL (コマンドラインツール srl8) で SGSローカルに入り込んで、flatten8ツールを叩けば普通に使えるので、 できたテキスト版を ftp かなんかで外へ持ち出します。

▽解法:*.so用のシンボリックリンクを張る

% ln -s /usr/lib/libstdc++-libc6.3-2.so.3 ./libstdc++-libc6.2-2.so.3
% ln -s /usr/lib/libstdc++-libc6.3-2.so.3 ./libstdc++-libc6.1-1.so.2

左側のシステムライブラリ部分はOSによって違ったりするので、 各自の環境に合わせてください。 例は Vine Linux 4.1 です。 rpmでは libstdc++2_10 といった感じのパッケージになっています。

RedHatでは、シンボリックリンクしなくても compat-libstdc++ といったパッケージの中に互換品が入っていることがあります。

▽解法:bundleパッチの変換用*.xmlを抽出しておく

% ./flatten8 -b -i ../logfile.20070510 < /tmp/flat.out
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
ERROR - Could not translate binary to text.
% _

原因が全然分からないので閉口しますが、 食わせたログファイルに lang/en/*.xml (AlertDictionary.xmlとか)で 定義されていないエラーコードが入っているとこうなるようです。 SGS本体はbundleパッチで*.xmlも同時に更新されるので問題ないが、 外部使用の remtools-80l.tgz は更新されていないのでこうなると。

幸い SGS 2.0.X 系のbundleパッチは単なるtarなので、 ホットフィックス一覧 にある SGS201-bundle*.tgz の中から flatten/lang/en/*.xml と同じファイルを抜き出して展開しておけば 使えるかもしれません


▽考察

まず flatten8 バイナリ単体は libstdc++-libc6.2-2.so.3 に依存しています。

% ldd flatten8
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
        linux-gate.so.1 =>  (0xffffe000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7fc5000)
        libstdc++-libc6.2-2.so.3 => not found
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0xb7f72000)
        libc.so.6 => /lib/i686/libc.so.6 (0xb7e50000)
        /lib/ld-linux.so.2 (0xb7fd3000)
% _

libstdc++-libc6.2-2.so.3 のシンボリックリンクだけだと 途中でコア吐いて死にますが、

% ln -s /usr/lib/libstdc++-libc6.3-2.so.3 ./libstdc++-libc6.2-2.so.3
% env LD_LIBRARY_PATH=`pwd` ./flatten8 ~/logfile.20070510
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
セグメンテーション違反です
% _

よくよく調べてみると、動的に引き込んでいる libIdsXmlParser.so, libSesaXmlParser.so, libxerces-c1_6_0.so は libstdc++-libc6.1-1.so.2 に依存しています。 (ライブラリを再コンパイルせず使いまわしてる?)

% env LD_LIBRARY_PATH=. ldd ./libIdsXmlParser.so
        linux-gate.so.1 =>  (0xffffe000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7ee1000)
        libxerces-c1_6_0.so => ./libxerces-c1_6_0.so (0xb7be5000)
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0xb7b93000)
        libstdc++-libc6.2-2.so.3 => ./libstdc++-libc6.2-2.so.3 (0xb7b4a000)
        libm.so.6 => /lib/i686/libm.so.6 (0xb7b27000)
        libc.so.6 => /lib/i686/libc.so.6 (0xb7a05000)
        /lib/ld-linux.so.2 (0x80000000)
        libstdc++-libc6.1-1.so.2 => not found
% _

SGSローカルや互換ライブラリを入れたRedHatだと動きますが、他では libstdc++-libc6.1-1.so.2 もシンボリックリンクしてやると動くようになります。

% ln -s /usr/lib/libstdc++-libc6.3-2.so.3 ./libstdc++-libc6.1-1.so.2
% env LD_LIBRARY_PATH=`pwd` ./flatten8 ~/logfile.20070510
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
May 09, 2007    21:53:17.747            127.0.0.1 logServiced   481     117    INFORMATIONAL    Daemon starting Program Name    logServiced     Operation      Initialize       Resource        logservice      Status  Success State   StartingMay 09, 2007    21:54:35.804            127.0.0.1 kernel        588     470    ERROR    Intel(R) PRO/1000 Network Driver - version 4.4.12 NAPI
May 09, 2007    21:54:35.804            127.0.0.1 kernel        588     470    ERROR    Copyright (c) 1999-2002 Intel Corporation.
May 09, 2007    21:54:35.804            127.0.0.1 kernel        588     170    INFORMATIONAL    Something other than up/down happened in adapter event  5 device=eth0
...
% _


▽参考文献

ホットフィックス一覧: Symantec Gateway Security 2.0.1 モデル 5400 シリーズ
リモートツール最新版のダウンロード。
なおナレッジベースにはflatten8についての文書はありません。

かべ@sra-tohoku.co.jp