$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 $
解決になってませんが、SRL (コマンドラインツール srl8
) で
SGSローカルに入り込んで、flatten8
ツールを叩けば普通に使えるので、
できたテキスト版を ftp かなんかで外へ持ち出します。
% 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++ といったパッケージの中に互換品が入っていることがあります。
% ./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 ... % _