プロが教えるわが家の防犯対策術!

Linux初心者です。

くだらない質問かどうかさえもわかりませんが、困っています。

netstatコマンドを実行すると「セグメンテーション違反です」とだけが結果として表示されてしまい、
必要な情報が何も出力されません。
---こんな感じ-----------------------
[root@centos ~]# netstat
セグメンテーション違反です
------------------------------------



とりあえず少しくらいは頑張ろうと、gdbでcore dumpを取ってみました。
(これが正しい原因調査方法かはわかっていません。)
そして出てきた情報がこんなのです。
---こんな感じ-----------------------
[root@centos ~]# gdb netstat -c core.3166
GNU gdb Red Hat Linux (6.5-25.el5rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".


warning: Can't read pathname for load map: 入力/出力エラーです.
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2

(no debugging symbols found)
Core was generated by `netstat'.
Program terminated with signal 11, Segmentation fault.
#0 0x00923ac0 in strcpy () from /lib/libc.so.6
(gdb) bt
#0 0x00923ac0 in strcpy () from /lib/libc.so.6
#1 0x08051274 in strcpy ()
#2 0x081707a8 in ?? ()
#3 0x00000000 in ?? ()
------------------------------------

意味も分からず悪戦苦闘した結果、コイツ(/lib/libc.so.6)が悪さをしているのか?と
思ってきましたが、そもそも何者か?などがわからず、
viで開いてみてもなんだかバイナリファイルでギブアップでした。





どなたか、原因・解決方法をご存知の方がいらっしゃいましたらご教授ください。
ディストリビューションは
CentOS release 5 (Final)





ちなみに、そもそもの目的はipablesの設定をしようと思って、
内部ネットワークアドレス取得を行おうとしたところで思った出力が
できなかったのが事の発端です。。。
---iptabels-----------------------
[root@centos ~]# vi iptables.sh
#!/bin/bash

#---------------------------------------#
# 設定開始 #
#---------------------------------------#

# インタフェース名定義
LAN=eth0

#---------------------------------------#
# 設定終了 #
#---------------------------------------#

# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`

# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '` ★★★ここ★★★
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK

A 回答 (2件)

netstatでセグメンテーション違反とか…


普通に使っていれば出るハズないんですが…。

gdbの状態見ると…
>#0 0x00923ac0 in strcpy () from /lib/libc.so.6

strcpy()で……ですか。
ヘンなアドレス渡せば、そういうエラーが出る可能性はあるでしょう。
が…オプションなしでnetstat起動しただけで出る。
というのはいくらなんでもおかしいような。

既に侵入されてrootkitでも仕込まれているんでしょうかね??
rpm -V glibc
とかしたらどうなります?

>LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
netstat -rnの代わりにrouteコマンドでも行けそうですけどね。
というか…ネットワークのアドレスとかそうそう頻繁に変わる訳でもないのですから、スクリプトではなく直書きでも良さそうですが。
# どっかのサイトの設定用スクリプトなんでしょうけど。
# って、 http://centossrv.com/iptables.shtml ですか……
http://evilblade.blog24.fc2.com/blog-entry-792.h …
こちらの方はコメント化して直書きしてなすね。
    • good
    • 0
この回答へのお礼

Wr5様

コメントありがとうございます。
早速、「rpm -V glibc」を叩いてみました。
結果としては、何も表示されずに終了。
---------------------------------
[root@centos ~]# rpm -V glibc
[root@centos ~]#
---------------------------------

言われてみれば確かにアドレス直書きの方がシンプルで良さそうです。
(サイトは、そこでした。)

ただ、何故できないのかを原因つきとめてきちんとしとかないと…と思いまして。
ご記載頂いている通り何かのウィルスに汚染されていたらそれも問題なのでご質問させていただきました。

お礼日時:2012/06/17 18:09

>早速、「rpm -V glibc」を叩いてみました。


>結果としては、何も表示されずに終了。

rpmパッケージのデータベースにあるものとの差違はない。
ということになります。
# データベースまでいぢられていたらどうにもなりませんが。

which netstat で表示されるのは正しい位置のモノ…でしょうか?
# 手元のCentOS5.8では/bin/netstatでしたが。

これ以上は…ちょっと判らないですね。
# 侵入されたならきっちり調べるべき…ではありますが……。
    • good
    • 0
この回答へのお礼

Wr5様

レスが遅くなり申し訳ございません。
which netstatで結果は「/bin/netstat」でした。
難しそうな問題のようなので、アドレスの直書きにするか?
はたまた、ウィルスが怖い場合は一旦Linuxの再インストールでもしてみようかと思います。

お忙しい中ご助言を頂きありがとうございました。

お礼日時:2012/06/18 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!