ポート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 #表示される。
ポートを使っているデーモンを特定したいことがありました。久々にサーバーにログインしたとき、身に覚えのないポートをサーバーが使っていたからです。もしかして侵入された?侵入されて、踏み台のアプリケーションが待ち受けているのか?とヒヤヒヤして調べていました。
これを使って、ポートが不正なアプリからの理由でないことを確認しました。助かった。