[Linuxメモ]利用ポートからプロセスを調べる

netstat

コマンドを利用するとサーバにアクセスしているリモートホストやポートなどの情報を見ることができます。

> netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.10:www-http xx-x-xxx-xx.ads:xxxyxkx SYN_RECV
tcp        0      0 192.168.0.10:www-http ZLxxx065.ppp:iwlxxxener SYN_RECV
tcp        0      0 192.168.0.10:www-http ZLxxx065.ppp.di:xxx-vpn SYN_RECV
tcp        0      0 192.168.0.10:www-http catv-xx-xx8-:ibm-xxxact SYN_RECV
tcp        0      0 192.168.0.10:www-http ZLxxx065.pp:xxxs-portal SYN_RECV
tcp        0      0 192.168.0.10:www-http p2xxx-ipbfp204tok:xxx26 SYN_RECV
tcp        0      0 192.168.0.10:smtp     41.xxx.227:di-txxxeware SYN_RECV
tcp        0      0 192.168.0.10:www-http pxxx20.tkyeaxxx.a:xxx92 TIME_WAIT
tcp        0      0 192.168.0.10:www-http 112-xx-31-63.e:xxxelink TIME_WAIT
tcp        0      0 192.168.0.10:www-http 207.xxx.xxx.111.a:xxx16 TIME_WAIT
tcp        0      0 192.168.0.10:www-http h124-xxx-xxx-247.:xxx93 TIME_WAIT
tcp        0      0 192.168.0.10:www-http 72.xx.xxx.87:xxx92      TIME_WAIT
tcp        0      0 192.168.0.10:www-http crawl-66-249-69-1:xxx24 TIME_WAIT
tcp        0      0 192.168.0.10:www-http pxxxa20.tkyeaxxx.a:xx82 TIME_WAIT
tcp        0      0 192.168.0.10:www-http crawl-66-249-69-2:xxx12 TIME_WAIT
tcp        0      0 192.168.0.10:www-http crawl-66-249-69-5:xxx15 TIME_WAIT
tcp        0      0 192.168.0.10:www-http pwxxx224xxx038.30:xxx71 TIME_WAIT
tcp        0      0 192.168.0.10:www-http crawl-66-249-69-3:xxx05 TIME_WAIT
tcp        0      0 192.168.0.10:www-http crawl-66-249-69-8:xxx28 TIME_WAIT
tcp        0      0 192.168.0.10:www-http softbankxxx01:xxxed-zpp TIME_WAIT
tcp        0      0 192.168.0.10:www-http softbankxxx01:xxxed-zpp TIME_WAIT

(以下略)

サーバを運用していると怪しいアクセスがあったりします。

不明なプロトコルだったり、不明なポートだったり、海外のクラッキングで有名なお国からのアクセスだったりそういうところからコネクションが大量にはられていたりと色々あったりするわけです。

通常udpのコネクションはあんまり貼られないのでそういうところに変な海外のサイトからコネクションが張られていたりするとドキッとするわけです。通常使われないポートへのアクセスも気になります。

そういう時このポートはどのプログラムへのアクセスに使われているんだろうというのが知りたくなります。もしかするとバックドアが仕込まれてしまっていてそこへのアクセスかもしれないわけです。

そういう場合、fuserやlsofでそのポートを利用しているプロセスを調べることができます。

大体下のようにしてポート番号を指定して使います。

fuser -vn udp 4067
lsof -i:703

下はlsofコマンドでポート2525を調べた時の表示です。

# lsof -i:2515
COMMAND   PID  USER   FD   TYPE   DEVICE SIZE NODE NAME
sshd    26095  root    3u  IPv6 70406369       TCP www.example.com:ssh->example.com:2515 (ESTABLISHED)
sshd    26097 admin    3u  IPv6 70406369       TCP www.example.com:ssh->example.com:2515 (ESTABLISHED)
#

詳しいオプションなどはmanコマンドなどで確認してください。

rootkit(ルートキット)でサーバが既に乗っ取られていてコマンドを置き換えられていたりするとこの手のコマンドは偽物に置き換えられて嘘の出力をするようになり、怪しい接続の発見が困難になります。

そういう事態に対応するためにも、rkhunterやchkrootkitをインストールしてcronなどで定期的に実行するようにしておくのが普通です。

タグ :