せっかく立ててみんなで遊んでいたマイクラサーバーが荒らされた。
今後の荒らし対策としてやったことのメモ。
マイクラサーバーとして
①CoreProtectの導入
Spigotサーバーで使えるプラグイン、
CoreProductを導入しました。
使い方はこのサイトがわかりやすかった。
https://genkoku.city/coreprotect
特定のユーザーの操作だけロールバックできる。
AWSとして
①EBSのライフサイクルマネージャーでバックアップ
いつでもロールバックできるようにした。(最初から設定はしていたつもりだったのだが、ミスってた。)
24時間ごとに1度のバックアップを7日間保持するのと、
6時間ごとのバックアップを1日だけ保持。
荒らしが来ても最悪6時間前には戻せるようにした。
②ネットワークACLで荒らしのIPをブロック
セキュリティグループはホワイトリスト方式なので、特定のIPのインバウンド通信を拒否、っていうのができない。
マイクラで/banしたあと、念のためIPごとブロック。
まあ荒らしってIPころころ変えてそうだから、どのくらい意味があるかはわからないけど。
③海外IPをまとめて拒否設定
これが結構頭を使った。
日本国内のIPは調べると一覧を取得できる(こことか)ので、要はホワイトリスト方式で日本のIPをすべて許可すれば良いんだけど、
・セキュリティグループ・・許可できるルールの上限が1000。足りない。
・WAF・・ALBかCloudFrontにしか設定できず、HTTP通信じゃないとダメ。マイクラのTCP通信には使えない。
・.htaccess・・これもApacheが動いてないとダメ。
ってことで、どうやったかと言うと、基本に返ってiptablesで設定した。
参考にしたのはこれ。
このサービス定義の個所に、こんな感じで日本のIPの許可設定をする。
##### サービス設定ここから ##### iptables -A INPUT -s 1.0.16.0/20 -p tcp --dport 25565 -j ACCEPT iptables -A INPUT -s 1.0.64.0/18 -p tcp --dport 25565 -j ACCEPT ・・・(2600行くらい続く) ##### サービス設定ここまで #####
海外が手放したIPを日本で取得した場合とか、ブロックしたくない人が弾かれる可能性もあるけど、
そういう場合は個別で/32で許可設定を入れれば対応できるので許容することにした。
この設定だけだと、拒否した通信のログがkern.logに出力されてしまうので
出力先を分ける設定もしてみた。
これ、ディストリビューションによって結構やり方が違って、
最初ubuntuじゃないディストリビューションの記事を参考にしちゃったりしてちょっとハマった。
ついでにログローテートも設定しておいた。
余談
iptablesで設定した直後から、ログにDROPしたパケットの情報がモリモリ表示されるように。
IPを検索してみたら、「MinecraftHacking」って出てきて、
要はポートを25565で固定してランダムでIPアドレス設定して、稼働しているマイクラサーバーをスキャンしている人がいるらしい。
私の立てたサーバー、IP公開してないのに荒らしが来たのもたぶんこれが原因。
マイクラサーバー立てる人は、完全ホワイトリスト方式にするとか、やったほうが良いです。
念のため、スキャンっぽいIPは全部ネットワークACLで拒否設定しておいた。
同じIPでログが埋まるのも嫌だしね。
追記
上記の設定だと、ubuntuを再起動するためにシェルを叩き直さないといけない。
こちらを参考に永続化の設定をした。