俺の個人的な思いだが、サーバ管理者というのは、本来、自分のサーバで稼働しているサービスと、そのポート番号ぐらいは把握しているのが普通だと考えている。しかし、失礼な言い方だが、今現在Unixサーバを抱えてる企業の管理者は、前述したような事を把握しているだろうか?俺は、「No」だと思う。せめて、自分のサーバで動いているウェルノウンポート(httpのポート80番とかDNSのポート53番とか、既にポートに対するサービス名が決められているポートのことを言う)ぐらいは把握して頂きたいものだ!管理者本人のスキル不足がクラックな方々の喜びにもつながるので肝に命じて頂きたい。なにも、故意に悪人を喜ばせることはないのである。
さて、不審なサービスポートがLISTEN(今既に待ち受け状態)している場合は、バッファオーバーフロー攻撃を食らって侵入されてしまっているか、もしくは、バックドアを仕掛けられていて、そのバックドア経由で侵入されリモート通信状態のTCPセッションが確立されている状態にあると判断しても過言ではないだろう。
サービスポートのLISTEN状態を確認するには、一般的にはnetstatコマンドを使って確認する。以下は、俺のサーバをnetstatコマンドでViewした結果である。
sub2:~# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:80 61.213.95.228:63455 TIME_WAIT
tcp 0 0 192.168.255.103:80 61.213.95.228:61747 TIME_WAIT
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 1736 ::ffff:192.168.255.1:22 ::ffff:210.196.76:61777 ESTABLISHED
udp 0 0 0.0.0.0:32779 0.0.0.0:*
udp 0 0 192.168.255.103:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp 0 0 192.168.255.103:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp6 0 0 :::32780 :::*
udp6 0 0 fe80::2a0:c9ff:fe15:123 :::*
udp6 0 0 ::1:123 :::*
udp6 0 0 :::123 :::*
省略
ここでは、ポート3306がLISTENしている。例えば、これが怪しいと感じたときは、この親プロセスのオーナーは誰かを確認する。その確認は、以下のようにfuserコマンドを使う。
sub2:~# fuser -vn tcp 3306
USER PID ACCESS COMMAND
3306/tcp: mysql 2025 F…. mysqld
結果として、mysqlデーモンが使っているポートだと言うことが解り、怪しいものではないと言うことが解った。
さらに、もう一つ。
sub2:~# fuser -vn tcp 113
USER PID ACCESS COMMAND
113/tcp: root 2034 F…. inetd
fuserコマンドしてみると、inetd?スーパーデーモンで何が動いてる?と言うことでinetd.confを調べてみる。
sub2:~# more /etc/inetd.conf
#<off># smtp stream tcp nowait root /usr/sbin/sendmail sendmail -Am-bs
#<off># submission stream tcp nowait root /usr/sbin/sendmail sendmail -Am -bs
#<off># smtps stream tcp nowait root /usr/sbin/sendmail sendmail -Am-bs
ident stream tcp wait identd /usr/sbin/identd identd
やっぱ、identが動いていたのね。と言うことで、こいつは不要なサービスなのでコメント。
sub2:~# vi /etc/inetd.conf
省略
# ident stream tcp wait identd /usr/sbin/identd identd
sub2:~# killall -HUP inetd
再び、netstatコマンドを打ってみる。
sub2:~# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.255.103:80 202.221.140.250:41233 TIME_WAIT
tcp 0 0 192.168.255.103:80 74.6.20.49:34333 TIME_WAIT
tcp 0 0 192.168.255.103:80 211.5.198.126:62492 FIN_WAIT2
tcp 0 12600 192.168.255.103:80 133.13.182.59:1109 ESTABLISHED
tcp 0 0 192.168.255.103:80 202.221.140.250:41202 TIME_WAIT
tcp 0 0 192.168.255.103:80 211.5.198.126:63009 TIME_WAIT
tcp 0 0 192.168.255.103:80 163.135.10.36:32948 TIME_WAIT
tcp 0 0 192.168.255.103:80 202.221.140.250:41831 TIME_WAIT
tcp 0 0 192.168.255.103:80 163.135.10.36:32933 TIME_WAIT
tcp 0 0 192.168.255.103:80 211.5.198.126:62128 TIME_WAIT
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 2660 ::ffff:192.168.255.1:22 ::ffff:210.196.76:61777 ESTABLISHED
udp 0 0 0.0.0.0:32779 0.0.0.0:*
udp 0 0 192.168.255.103:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp 0 0 192.168.255.103:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp6 0 0 :::32780 :::*
udp6 0 0 fe80::2a0:c9ff:fe15:123 :::*
udp6 0 0 ::1:123 :::*
udp6 0 0 :::123 :::*
省略
よし、113番のidentサービスが消えますた。
同様の事が、以下のようにlsofコマンドでも確認できる。
sub2:~# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
lighttpd 526 nobody 4u IPv4 330109 TCP *:www (LISTEN)
sshd 884 root 3r IPv6 334422 TCP sub2.kozupon.com:ssh->210.196.76.146:62385 (ESTABLISHED)
sshd 886 mity 3u IPv6 334422 TCP sub2.kozupon.com:ssh->210.196.76.146:62385 (ESTABLISHED)
sshd 1882 root 3u IPv6 5913 TCP *:ssh (LISTEN)
mysqld 2025 mysql 10u IPv4 6288 TCP *:mysql (LISTEN)
vsftpd 2043 root 3u IPv4 6220 TCP *:ftp (LISTEN)
ntpd 2142 ntp 16u IPv4 6336 UDP *:ntp
ntpd 2142 ntp 17u IPv6 6337 UDP *:ntp
ntpd 2142 ntp 18u IPv6 6339 UDP ip6-localhost:ntp
ntpd 2142 ntp 19u IPv6 6340 UDP [fe80::2a0:c9ff:fe15:c60a]:ntp
ntpd 2142 ntp 20u IPv4 6341 UDP localhost:ntp
ntpd 2142 ntp 21u IPv4 6342 UDP sub2.kozupon.com:ntp
sendmail- 2301 root 4u IPv4 6780 TCP localhost:smtp (LISTEN)
sendmail- 2301 root 5u IPv4 6781 TCP localhost:submission (LISTEN)
named 15800 bind 20u IPv4 93543 UDP localhost:domain
named 15800 bind 21u IPv4 93544 TCP localhost:domain (LISTEN)
named 15800 bind 22u IPv4 93545 UDP sub2.kozupon.com:domain
named 15800 bind 23u IPv4 93546 TCP sub2.kozupon.com:domain (LISTEN)
named 15800 bind 24u IPv4 93547 UDP *:32779
named 15800 bind 25u IPv6 93548 UDP *:32780
named 15800 bind 26u IPv4 93549 TCP localhost:953 (LISTEN)
netstatコマンドでも、もう少し詳しく表示させたければ、以下のようにオプションパラメータを指定する。
sub2:~# netstat -lp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:mysql *:* LISTEN 2025/mysqld
tcp 0 0 localhost:submission *:* LISTEN 2301/sendmail: MTA:
tcp 0 0 *:www *:* LISTEN 526/lighttpd
tcp 0 0 sub2.kozupon.com:domain *:* LISTEN 15800/named
tcp 0 0 localhost:domain *:* LISTEN 15800/named
tcp 0 0 *:ftp *:* LISTEN 2043/vsftpd
tcp 0 0 localhost:953 *:* LISTEN 15800/named
tcp 0 0 localhost:smtp *:* LISTEN 2301/sendmail: MTA:
tcp6 0 0 *:ssh *:* LISTEN 1882/sshd getnameinfo failed
udp 0 0 *:32779 *:* 15800/named
udp 0 0 sub2.kozupon.com:domain *:* 15800/named
udp 0 0 localhost:domain *:* 15800/named
udp 0 0 sub2.kozupon.com:ntp *:* 2142/ntpd
udp 0 0 localhost:ntp *:* 2142/ntpd
udp 0 0 *:ntp *:* 2142/ntpd
udp6 0 0 *:32780 *:* 15800/named
udp6 0 0 fe80::2a0:c9ff:fe15:ntp *:* 2142/ntpd
udp6 0 0 ip6-localhost:ntp *:* 2142/ntpd
udp6 0 0 *:ntp *:* 2142/ntpd
省略
以上
コメント