それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ポート80番を使っているのがApacheかnginxか調べる。

ポート80や8080など色々なアプリケーションがポートを使います。
"nmap localhost" や "netstat -a" を使い、ポートはlisten中だと分かったとしても、
そのポートを使っているアプリケーションがナニカが分からないと意味がなかったりします。

ポートを使っているDaemonをがナニか調べる

今回は80番を使っているアプリがナニか調べます。

lsof コマンド
takuya@debian00:~$ sudo lsof -i:80 #rootで実行
[sudo] password for takuya:
COMMAND   PID     USER   FD   TYPE  DEVICE SIZE NODE NAME
apache2  8772     root    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2 10160 www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2 10161 www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2 10162 www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2 10163 www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2 10164 www-data    6u  IPv4 5143530       TCP *:www (LISTEN)

Apache2をwww-dataユーザーで起動して使っていることが分かります。必ずRootで実行します。

ポイントは well-known-port でポートが表現されている点です。80ではなく、wwwとして
表示されています。


lsof コマンドをは -i を使ってポートをオープンしているプロセスを知ることが出来ます
とりあえず、全ポートについて調べてみました。Hadoopが起動しているので大量のポートが表示されます。

takuya@debian00:~$ sudo lsof -ib | more #rootで実行
COMMAND     PID        USER   FD   TYPE  DEVICE SIZE NODE NAME
portmap    1913      daemon    4u  IPv4    5784       UDP *:sunrpc
portmap    1913      daemon    5u  IPv4    5791       TCP *:sunrpc (LISTEN)
sshd       2236        root    3u  IPv4    6292       TCP *:ssh (LISTEN)
exim4      2724 Debian-exim    3u  IPv4    7011       TCP localhost:smtp (LISTEN)
snmpd      2853        snmp    7u  IPv4    7484       UDP localhost:snmp
ntpd       2912         ntp   16u  IPv4    7594       UDP *:ntp
ntpd       2912         ntp   17u  IPv4    7598       UDP localhost:ntp
ntpd       2912         ntp   18u  IPv4    7599       UDP debian00:ntp
apt-cache  4241    www-data    3u  IPv4 5035095       TCP *:3142 (LISTEN)
apache2    8772        root    6u  IPv4 5143530       TCP *:www (LISTEN)
cupsd      9767        root    0u  IPv4 5775112       TCP localhost:ipp (LISTEN)
cupsd      9767        root    4u  IPv4 5775116       UDP *:ipp
apache2   10160    www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2   10161    www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2   10162    www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2   10163    www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
apache2   10164    www-data    6u  IPv4 5143530       TCP *:www (LISTEN)
puppet    10207      puppet    8u  IPv4 5775352       TCP *:8140 (LISTEN)
avahi-dae 10317       avahi   14u  IPv4 5042448       UDP *:mdns
avahi-dae 10317       avahi   15u  IPv4 5042450       UDP *:54857
java      13094      hadoop   41u  IPv4 4436394       TCP *:38147 (LISTEN)
java      13094      hadoop   46u  IPv4 4438602       TCP *:50075 (LISTEN)
java      13094      hadoop   51u  IPv4 4439204       TCP *:50020 (LISTEN)
java      13094      hadoop   53u  IPv4 4438429       TCP *:50010 (LISTEN)
java      13094      hadoop   65u  IPv4 4439208       TCP debian00:50421->debian00:8020 (ESTABLISHED)
java      13267      hadoop   41u  IPv4 4436819       TCP *:34422 (LISTEN)
java      13267      hadoop   45u  IPv4 4436822       TCP debian00:zope-ftp (LISTEN)
java      13267      hadoop   49u  IPv4 4437689       TCP *:50030 (LISTEN)
java      13267      hadoop   63u  IPv4 4438210       TCP debian00:50414->debian00:8020 (ESTABLISHED)
java      13445      hadoop   41u  IPv4 4437117       TCP *:47526 (LISTEN)
java      13445      hadoop   45u  IPv4 4437120       TCP debian00:8020 (LISTEN)
java      13445      hadoop   55u  IPv4 4438196       TCP *:50070 (LISTEN)
java      13445      hadoop   60u  IPv4 4439209       TCP debian00:8020->debian00:50421 (ESTABLISHED)
java      13445      hadoop   61u  IPv4 4438201       TCP debian00:8020->debian01:60720 (ESTABLISHED)
java      13445      hadoop   62u  IPv4 4438202       TCP debian00:8020->debian02:34884 (ESTABLISHED)
java      13445      hadoop   63u  IPv4 4446068       TCP debian00:8020->debian02:55648 (ESTABLISHED)
java      13445      hadoop   64u  IPv4 4446693       TCP debian00:8020->debian01:60721 (ESTABLISHED)
java      13445      hadoop   67u  IPv4 4447976       TCP debian00:8020->debian00:49971 (ESTABLISHED)
java      13445      hadoop   68u  IPv4 4438211       TCP debian00:8020->debian00:50414 (ESTABLISHED)
java      13650      hadoop   41u  IPv4 4437882       TCP *:46349 (LISTEN)
java      13650      hadoop   47u  IPv4 4447975       TCP debian00:49971->debian00:8020 (ESTABLISHED)
java      13650      hadoop   52u  IPv4 4438585       TCP *:50090 (LISTEN)
java      13845      hadoop   40u  IPv4 4438808       TCP *:50060 (LISTEN)
java      13845      hadoop   48u  IPv4 4439148       TCP localhost:50394 (LISTEN)
java      13845      hadoop   56u  IPv4 4439202       TCP debian00:46883->debian00:zope-ftp (ESTABLISHED)
mysqld    14196       mysql   11u  IPv4 5050821       TCP localhost:mysql (LISTEN)
sshd      14429        root    3r  IPv4 5873076       TCP debian00:ssh->no.example.ne.jp:42215 (ESTABLISHED)
sshd      14434      takuya    3u  IPv4 5873076       TCP debian00:ssh->no.example.ne.jp:42215 (ESTABLISHED)
dnsmasq   14945     dnsmasq    4u  IPv4 4401428       UDP *:domain
dnsmasq   14945     dnsmasq    5u  IPv4 4401429       TCP *:domain (LISTEN)
rpc.statd 21677       statd    6u  IPv4 4374191       UDP *:653
rpc.statd 21677       statd    8u  IPv4 4374201       UDP *:37792
MORE (以下略・・・)

ポートは番号でなく、名前で表示されます。

ですので grep を使うと面食らうかもしれません(実際、該当ポートが見つからなくて焦りました)

takuya@debian00:~$ sudo lsof -i | grep 80 #なにもない・・・
takuya@debian00:~$ sudo lsof -i  | grep www #Apacheが表示される。 
takuya@debian00:~$ sudo lsof -i | grep 8080  #なにもない・・・
takuya@debian00:~$ sudo lsof -i:8080  | more #表示される。


ポートを使っているデーモンを特定したいことがありました。久々にサーバーにログインしたとき、身に覚えのないポートをサーバーが使っていたからです。もしかして侵入された?侵入されて、踏み台のアプリケーションが待ち受けているのか?とヒヤヒヤして調べていました。


これを使って、ポートが不正なアプリからの理由でないことを確認しました。助かった。

tomcat とか nginx とか lighttpd とかいろいろあるからね。