またきた突然のトラブル
今日の朝、Googleから「おまえんとこのサイトのrobots.txtがアクセスできないぞ」ってメールが来ました。
日本が負けてブルーな朝なのにまたハッキングかなーめんどくさいなーと思いつつブラウザで見てみると、 サイト自体Bad Gateway(502)で見れない。
やばい・・・早く何とかしないと。
最終的には原因はphp5-fpmの自動アップデートだったので、対処のログを残しておきます。 お急ぎの方は後ろのほうまで飛ばしてください。
あ、うちの環境は次のとおりです。
- さくらのVPS
- Ubuntu
- nginx + php5-fpm(socket)
原因究明まで
「え、今回はサイトさえみれないのか。困ったなあ」
前にハッキングでやられたときは、やたら重くなってるけどサイト自体は動いてたんですよね。 しかし、サイト自体見れないというのはビジュアル的にダメージが大きい。
結果的には今回のほうが軽微というかハッキングでも何でもなかったんですが。
まずは偵察ということで、muninでサイトの監視結果を見てみました。 するとまあmuninちのページは普通に見れるんですよね。じゃあウェブサーバーは死んでないと。
ていうか502のページにもnginxって書いてたので動いてましたね。そういえば。 他の原因を調べます。
muninページからわかることは、ある時間からまったく動きがなくなり、 php5-fpm, mysqlが止まってます。いくらアクセスの少ないこのサイトでも これはおかしい。
あとメモリもたくさん空いている状態でした。
これはデータベース、サイト全消しも覚悟しないとと思いつつとりあえずコンソールログインします。
あやしいユーザーがいないことを確認してnginxのログを確認。
1 2 |
$ cd /var/log/nginx $ tail -f error.log |
1 |
2014/06/24 10:30:10 [crit] 3517#0: *507681 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /php5_fpm_status HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "127.0.0.1" |
あーなんかphp5-fpmに接続拒否されてる・・・。
何も触ってないのにこんなことが起きるとは、やっぱり誰かにいじられたかと不安になります。 とりあえず、”connecting to upstream”で検索すると、nginxの設定間違ってるよみたいなのが色々出てきました。
前動いていたのでちょっと違うかな、と思いつつ”php5-fpm connecting to upstream”で検索してみるとこれが出てきました。
ふんふん、とりあえずphp5-fpm.sockってファイルのパーミッションがあやしいみたいです。
確認すると、ルートしか触れないようになってますね。これは動かないはずです。
解決編その1
ひとまずさっきのページで解決策として挙げられてることを試します。
まあ確実に原因これだよねーと思ってたので、迷わずやってみます。
1 2 |
$ cd /var/run $ sudo chmod 0666 php5-fpm.sock |
これで見れるようになったかな? ・・・見れました。
時間がなかったので、対処は暫定として家に帰ってから検証します。
解決編その2
さっきのページに「もっといい方法があるよ」って書いてたので見てみます。 考えてみると確かにだれでも触れるようにするのはちょっと怪しい。
要はsockファイルに実行制限をかけて、php5-fpmが使うユーザーを実行できるものに変更するようです。
ではそれでいきましょう。
1 2 |
$ cd /var/run $ sudo chmod 0660 php5-fpm.sock |
これでまた見えなくなってるはず。
次にphp5-fpmの設定を変更します。
$ sudo emacs /etc/php5/fpm/pool.d/www.conf
コメントになってたところを有効化して、modeを0660に変更しました。
1 2 3 |
listen.owner = www-data listen.group = www-data listen.mode = 0660 |
php5-fpmをリスタートします。
1 |
$ sudo service php5-fpm restart |
サイトを見ると・・・・表示されました。これでOKです。たぶん。
なぜ急に動かなくなったのか?
動かなくなった原因はわかったものの、なぜsockのパーミッションが 変わってたのかがわからないと気持ち悪いので調べました。
どうもphp5-fpmのアップデートをすると起きることがあるようです。 セキュリティを高くした結果なんでしょうかね。
うちは定期的に自動アップデートをかけているので、そのタイミングから アクセスできなくなっていましたということです。
あとで届いたアップデートログのメールをみると、確かにphp5-fpmが アップデートされていました。
これですっきり。