レンタルサーバーなどでWordpressを運用している方は気づかないかもしれませんが、自宅もしくはVPSで運用していたら、一度はブルートフォース攻撃されていたなんて経験はあるのではないでしょうか?本日はLightsailで運用している本ブログがブルートフォース攻撃されていたので、その経験と対策について書きたいと思います。
Lightsailからのアラームに気づく
最近Lightsailではメトリクスに基づくアラーム通知が行えるようになりました。設定は簡単でしきい値と通知先(メール or SMS)を設定するだけです。自身のLightsailでは持続可能ゾーンとされるCPU使用率10%でアラームを仕掛けていたのですが、最初のその通知が届きました。
3時間経っても止まらないので不審に思う
初めはなにも不審に思っていませんでした、Googleに登録した直後だったこともあり、GoogleBotによるアクセスではないかと思っていたからです。しかしそれが、3時間経っても止まらないので不審に思い始めました。
NGINXのログをみて驚く
LightsailにログインしてNGINXを確認して驚きました。同一のIPアドレスからwp-adminに連続的にPOSTされています。IPアドレスを見たら北インドのジャスミンから・・・直ぐに攻撃されていると思い該当のIPアドレスを規制しようと思いました。
UFWを利用して簡単にフィルターをかける
UFWの詳細は別途調べてほしいのですが、Wikipediaには以下の記載があります。
Uncomplicated Firewall(UFW)は、簡単に使用できるように設計された、netfilter(英語版)ファイアウォールの管理プログラムである。少数のシンプルなコマンドからなるコマンドラインインターフェイスを使用する。内部の設定には、iptablesを使用している。UFWは、8.04 LTS以降のすべてのUbuntuインストールでデフォルトで使用可能である。
https://ja.wikipedia.org/wiki/Uncomplicated_Firewall
以下のコマンドを利用して設定しました。
$ufw enable #ufwを有効化 $ufw default ALLOW #全通信を許可 $ufw deny from XXX.XXX.XXX.XXX to any #指定したIPアドレスからの通信拒否 $ufw reload #コンフィグを読み込み $ufw status #設定のステータスを確認する
UFWが機能しない
UFWを上記のように設定を行ったのですが、攻撃が続きます。UFWが全く効いてないように思えます。理由が全然わからなかったのですが、調べていったら以下の事がわかりました。
dockerとufwの設定が独立なせいで無駄にポートが開いてしまう
https://qiita.com/jqtype/items/9574ef74868b73323939
詳しいことは調べてほしいのですが、UFWも設定を行うとiptablesに反映されるのですが、Dockerも -p や port オプションを付けると、iptablesに設定が反映されるのです。この設定が独立しており、Docker向けの通信に関してUFWが全く反映されないということのようです。
どうやって規制するか?
オプション設定することでDockerの設定をiptablesに反映しない方法など、色々な対応策があるようなのですが、そもそもDockerとUFWの相性が悪そうです。iptablesできちんと設定するほうが良いと思いました。
NGINXで暫定対策する
NGINXのコンフィグに新たにdeny.confを作って対応することとしました。記述は簡単です。
$ cat ./nginx/conf.d/deny.conf $ deny 'XXX.XXX.XXX.XXX';
コンフィグ読み込みのためNGINXの再起動が必要ですが、上記で無事に規制することができました。規制されたIPからアクセスすると403が返るようになります。
追加で必要な対応
上記は暫定対策です。攻撃を検知したら自動でiptablesに反映するような対策をしたいと考えています。
追記
さらに攻撃を確認しました。今度はwp-adminではなく、xmlrpcへの攻撃がありました。どうやら引数テキストを与えると効率的にアタックできる模様です。さっそく、deny登録しました。以下参考
WordPressにおけるxmlrpcへの脆弱性対応のお願い
https://support.mngsv.jp/info/news/1429/
“WordPressのアタック対策をする(IPアドレス規制)” に1件のコメント