discordのセキュリティを固めた件について
こんにちは。TRPGをテーマとしたdiscord汎用サーバ(これは誰でも入室できるdiscordサーバを指す)をいくつも運営しているもの、阿まねです。
このたび、よりによって非公式の索引を置いているサーバにスパムが侵入、何故かチャンネルの管理権限をみんなに配っていたせいで(おそらく誤操作)チャンネルのほとんどが破壊されてしまったので、慌てて全ての管理しているサーバのセキュリティについて見直し、甘い点については強化を行いました。
こんな悲劇をなるべく起こさないために、使えそうなところはお役立てください。
ただし、セキュリティ対策に100%はあり得ないのと、ツールもスパムも常にバージョンアップすること、私が素人であることは胸に留めておいてください。
今回のスパム被害概要
参加者ならだれでも閲覧できるチャンネルのみ削除されていた。
おそらく上記チャンネルは参加者全員にチャンネル管理権限が付与されていた(チャンネル個別の状況は分からないがデフォルトの設定がそうであったため)
管理人のみが閲覧、使用、管理できるチャンネルは削除されていなかった。
サーバ名やアイコンの変更、サーバ自体の削除などは行われなかった。
チャンネルが新たに作成され、「@evryone」宛てにdiscordサーバへの誘導URLのようなものを大量に貼られた。
上記より、スパムの挙動と被害をまとめると
管理人の権限が奪われたわけではなかった。
参加者にチャンネル管理権限を(おそらく誤操作で)与えていたためチャンネル削除およびチャンネル作成が行われた。
スパムに「@everyone」を多用された。
スパムにdiscordサーバへのリンクを貼られた。
はじめにやったこと
1.スパムの除去
まず被害に遭ったサーバをたまたま開いていたので迅速にスパムをサーバから除去。スクショなどを取れたら……と今更思うのですが、余裕なし。
後から調べて乗っ取りの場合とそうでない場合とあったそうですが、余裕がなかったのでBAN。乗っ取りだった場合はアカウントをクリーンにしてから名乗り上げてください……解除するので……。
2.サーバ参加者へのアナウンス
・スパムに侵入されたこと
・復旧と対策をすること
・不審なリンクが個人に届いた場合の注意
をアナウンスしました。
3.原因の解明
この時点で「管理者権限の乗っ取りなのか」含めスパムの挙動が不明だったため、「何が悪かったのか」「これからどうすればよいか」考えました。
この間、内容が「セキュリティ」に関する話であり、汎用でなくともdiscordを触る人間が多く存在するサーバだと、「自分のサーバに同じようなスパムが来た場合どうしよう」と不安になる人もいるかもしれないと思いました。私が何を考え、どんな結論に至ったか、メモやまとめのチャンネルは公開し、リアルタイムで更新していました。
(今は不要かつ読みにくいものであり、いずれnoteにまとめるつもりだったので当該チャンネルは閉じています)
4.他管理サーバのチャンネル管理権限の確認
一番ヒヤヒヤしたところです。今回のスパムの件について私の重罪の部分。大丈夫でした。
5.他サーバのバックアップの取得
他サーバに置いている、管理人投稿のサーバオリジナルのデータについてバックアップをとりました。
本格的なセキュリティ対策
ひとまずdiscordでできるセキュリティ対策を確認、甘い部分があれば強化しました。
参考にさせていただいた記事は以下3つ(この際、記事の時期とdiscordの最新の機能について確認しています)
1.管理者(私)のアカウントの2段階認証確認
今回はなかったのですが乗っ取り防止です。
2.安全設定>レイドプロテクション&キャプチャ
すべてON、どのチャンネルに通知が流れるか確認。
3.安全設定>ダイレクトメッセージ&スパムプロテクション
認証レベルは「中」。これはサブアカウントを使用している人を考慮して「高」以上にはしませんでした。乗っ取り系にはたぶん効果はないでしょうが、アカウント量産系には対応する程度。
サーバによって、できそうなら「高」以上にしているものもあります。
4.安全設定>AutoMod
すべてON、どのチャンネルに通知が流れるか確認。
Block Mention Spam
とりあえず20件一度に送る人を1時間タイムアウト(設定した時間メッセージが送付できないだけのペナルティ)する設定にしました。discordに注意書きに送らないでねと記載した上で間違えて20件一度に送る人、スパム以外にいらっしゃる……?と思って1時間のタイムアウトです。
フラッグされることの多い語句をブロック
英語のみ差別的、侮蔑的言葉をブロックするものです。ブロックされたメッセージは他の人に見えず、管理人の通知用チャンネルと送付しようとした本人のみに見えます。
TRPGシナリオタイトルで稀に引っ掛かる可能性も考えられたのですが、一旦テストかねてチェックつけています。タイムアウトのペナルティはないです。
カスタムワードをブロック
正規表現の部分は、以下を参考に設定しています。
設定したものは
discordの招待URL
メールアドレス
電話番号(ハイフンで区切るもの)
discordのトークン
です。
トークンはアカウントの身分証明みたいなものなんですが、これをスパムに連投されることによってサーバが凍結された例があるらしくて、メッセージのブロックと60秒のタイムアウトを設定しています。
(これは何らかのミス、似ているなどで誤ってはじかれる場合があるのでタイムアウトの時間は短めです)
トークンとホームページURLが似ていてホームページURLがはじかれる例があったため、「単語や語句を許可する」の部分に「http:*, https:*」(*は半角にしてください)を設定しています。
「語句の設定」の部分では、日本語の差別的、侮蔑的ワードをちまちま設定していきます(継続中)
5.安全設定>権限
全てONになっているか確認します。
6.everyone, hereメンション権限をオフにする
すべてのロールについてこの権限をオフにしています。
代わりに「Member」というロールを全員にbotを通して取得してもらい、管理者以外が全体に連絡したい場合はこのロールに向かってメンションしてもらいます。ロールを取得しなければチャンネルのほとんどが使用できないようにもなっています。
他、こまごまと用途に応じたロールを作成、同じくbotを通じて希望者に付与しています。
スパムが通知を悪用することを防ぐほか、チャンネルを使用する人を絞ることでスパムが悪用できるチャンネルを絞る意図もあります。
ロールの配布に使用したbotは「Carl-bot」です。亀がモチーフの。絵文字を押すと絵文字に紐づけているロールが付与されます。
URLを貼ることは控えておきますね。botの紹介と見せかけてスパム踏ませる例もあるらしいので公式のURLを探しに行ってください。
7.セキュリティ対策bot
discordデフォルト以外でセキュリティを補ってくれるbotを探しました。
いくつか候補がある中で、「スパム判定が加点式である」「管理人も疑ってくれる」ことから「Wick」を導入しています。
AutoMod
メンションや絵文字あたりでスパムっぽい動きをすると加点されていき、そのうちタイムアウトを食らいます。ただ、時差で下がったりしますので普通にしていたら何も起こらないです。デフォルトの設定で大丈夫です。
AntiNuke
管理者を見張ってくれます。デフォルトの設定で大丈夫です。管理者権限を失った管理者は「Quarantine」ロールが付与されるので「Quarantine」を確認しておきます。
ServerJoins
サーバに入ってくる人をチェックします。個人的には助かる機能にチェックを入れてキックはせず、ログを取っています。
Logging
セキュリティにとどまらないdiscord管理ログが取れます。助かります。なお、「Carl-bot」のほうでもログがとれるらしいのでログとる機能だけ欲しい人は「Carl-bot」を触るのもアリかもですね。
最後に
再三言いますがこの記事を読んだ方、セキュリティ対策に100%はあり得ないのと、ツールもスパムも常にバージョンアップすることは胸に留めておいてください。
discord単体でみても参考にした記事3年の中でセキュリティ強化が行われています。スパム側も同じく研究されていることでしょう。また、どんな犯罪がそうであるように100%の安全はあり得ないのです。(なんならスパムじゃない理由でdiscordがある日消えてなくなることもあります)
他私の管理サーバにも怪しいリンクは踏まないこと、必要なバックアップを各自でとる必要があることはお伝えしました。
今回私の管理の甘さでとても悲しいことが起き、驚いた人や悲しんだ人もいらっしゃったかと思い、申し訳なく思います。今後も「対策が終わった!」と安心せず、日々変わるものを見ていきたいと思っています。
この記事が気に入ったらサポートをしてみませんか?