目次
「攻撃される!」と君が言ったから六月十一日はDDOS記念日
はい、ふざけたタイトルですがこのブログ、攻撃されていました。
超びっくりしました。
すぐに対応策から知りたい人はこちら
経緯
一次対応
6/11 ブロクにアクセスしたところ、「データベース接続確立エラー」とか「Error establishing a database connection」という表示が出てくる。
エラーメッセージ+wordpressで検索を掛けてみたところ、原因は以下の2つじゃねーの?とのこと。
1.レンタルサーバ側の問題
2.設定ミス
1.AWS Cloud WatchとStatus Checkを確認してみる。特におかしいところはなさそうだ。リアルタイム検索でAWS系のことについてもひっかからない。
2.についてはここ最近特に何も変えていない…しかし、念のため確認してみる。
wp-config.phpに書いてある情報でwebサーバからDBサーバに入れるか?
mysql -u username -p -h db-host
できた。そもそも昨日まではアクセスできてたんだよね。さすがに設定が間違えていた説はないか次。
ログを読む
データベース接続確立エラーってくらいだからDBかな?
DBサーバを確認 ※結局違かった
dbサーバにログインして、mysqlに入ってみる。
show processlist;でプロセスを確認してみる。うわ、なんか変なのがめっちゃいる。(スクショとるの忘れた)
変なプロセスが溜まったせいで重くなったとか?
service mysql stop
service mysql start
とりあえずmysql restartしてみた。
一瞬大丈夫になるけど、すぐに「データベース接続確立エラー」になる。
じゃあwebサーバかな?
webサーバへのログインができない。できてもめっちゃ重くてまともに動かない。
topコマンドで確認したところ、ロードアベレージが40を超えている…(普段のロードアベレージは0.2くらい)
t2.microインスタンスなのでいくらなんでもこれは異常。
httpがやたらとCPUを喰っているので、httpを停止させる。
service httpd stop
すぐに落ち着くロードアベレージ。これで落ち着いて確認ができそうだ。
もしこれで、sshもtopもstopもできないくらい重いならAWSコンソールから一旦再起動をさせる+セキュリティグループで80ポートを閉じるのが良いと思う。
/var/log/http/error-log
確認。変なものは出てなさそうだ。
/var/log/http/access-log
確認。なんかやたら変なところへのアクセスがある。これだけで1ページ埋まるくらいでてる。
「xmlrpc.php」で検索したところ、xmlrpc.phpの脆弱性を利用したDDoS攻撃らしい。まじかよ。
対応法
原因は「xmlrpc.phpの脆弱性を利用したDDoS攻撃」だとわかったので、どんな対応をしたか。にうつります。
.htaccessにxmlrpc.phpへのアクセスを禁止する記述をする
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<files wp-config.php>
order allow,deny
deny from all
</files>
# END WordPress
IPアドレスごと拒否
上記対応で一旦は負荷が収まったものの、それでも増え続けていくログを見るのは気持ちが悪いものがあります…。
アクセスログを読んでいると、どうやら数個のIPアドレスからのみ、アクセスが来ているみたいです。もうこのIPアドレスブロックしちゃいましょ!
iptablesにポチポチかくことも検討したのですが、拒否するためのリソースを使ってしまうので却下。微々たるものかもしれませんが、t2.microインスタンスの少ないリソースをそこに使いたくはありません。。
AWS VPCだったら拒否ができるらしいので、やっていきましょう。(セキュリティグループは受け入れる設定はできても、拒否する設定はできない)
AWSの管理コンソールを開く→サービス→すべてのAWSサービス→VPC
「セキュリティ」項目内にある「ネットワークACL」をクリック
すでにあるルールをクリック→「インバウンドルール」→「編集」
ルール#
1~までの数字の中で記載する。小さいほうが優先順位が高い
すでに「すべてのトラフィック」「すべて」「すべて」「0.0.0.0/0」が作成してあると思うので、それよりも小さい数字を記載する。(わたしはここでドはまりしました)
タイプ→すべてのトラフィック
プロトコル→すべて
ポート範囲→すべて
送信元→アクセスログに記載してあった、攻撃を仕掛けてきているIPアドレス/32とかってかけばOK
アクセスログを確認して、不審なログのIPアドレスをこのリストにひたすら突っ込んでいく。
Default VPCでよかった!!
zabbixで監視
もともと監視していたのですが、サーバ費高いしもったいないなーと思って監視を停止させてました。攻撃されたからじゃ遅いので、zabbixでの監視を再開させました。
サーバが動かないほうがもっと怖い。
調べてみたら、2014年の時点でこの攻撃ニュースになってんのね…。
参考にさせていただきました。
攻撃されて超怖かったからネタにしてやったぜひゃっはー。