脱☆DDOS攻撃処女wwww

目次

「攻撃される!」と君が言ったから六月十一日はDDOS記念日

はい、ふざけたタイトルですがこのブログ、攻撃されていました。

超びっくりしました。

すぐに対応策から知りたい人はこちら

スポンサーリンク
広告




経緯

一次対応

6/11 ブロクにアクセスしたところ、「データベース接続確立エラー」とか「Error establishing a database connection」という表示が出てくる。

error_kogeki

エラーメッセージ+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ページ埋まるくらいでてる。

kogeki1

「xmlrpc.php」で検索したところ、xmlrpc.phpの脆弱性を利用したDDoS攻撃らしい。まじかよ。

対応法

原因は「xmlrpc.phpの脆弱性を利用したDDoS攻撃」だとわかったので、どんな対応をしたか。にうつります。

.htaccessにxmlrpc.phpへのアクセスを禁止する記述をする

.htaccessの内容を以下のように変更しました。これで、URL/xmlrpc.phpにアクセスしても0.0.0.0に飛ばされるようになる。
ぬいぐるみは管理コンソールからしか記事を書いていないので、これでOKでしたが、他のアプリ経由で記事を書いている方はこれだと自分のアクセスも弾かれてしまいます。こちらのページが詳しく解説していて分かりやすかったです。

# 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

httpをリスタートさせてみても、先ほどのように鬼みたいにロードアベレージが増えることはなかった。とりあえず、ほっ
/var/log/error-logを確認。よしよし、200(成功)が301(リダイレクト)になってるな。
after-kogeki

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年の時点でこの攻撃ニュースになってんのね…。

参考にさせていただきました。

攻撃されて超怖かったからネタにしてやったぜひゃっはー。

セキュリティエンジニアの教科書

応援
応援ポチっとよろしくです。 ブログランキング・にほんブログ村へ
スポンサーリンク
広告




広告




★役に立った!と思ったらシェアをお願いします。★

  • このエントリーをはてなブックマークに追加

★フォローはこちら★

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です