Discordサーバーのセキュリティを思う
私が運営しているDiscordサーバーは、あんまり大規模なものではないのだが、これまでいた界隈でDiscord荒らしが比較的身近にあったせいもあって、どれもセキュリティーをキツくしている。
今日は備忘録も兼ねてセキュリティ対策についてまとめていく。なお、セキュリティ対策について言及し、ある意味で手の内を明かすことに抵抗はあるのだが、知られたところでそこまで害のある情報はないので、気にしないものとする。なお、実際に行なっているセキュリティー対策であっても、セキュリティ上の都合から一部紹介しないものもある。
基本方針
セキュリティを強固であることは、ユーザビリティに制限がかかることの十分条件である。私のサーバーでは、必要な部分について制限をかけつつも、可能な限りユーザーを制限しないようにしている。
アカウントについて
サーバーをどれだけ強固にしても、所有者のアカウントが乗っ取られては元も子もない。最低限2段階認証はオンにしておいてほしい。
サーバー所有者のアカウントでは、なるだけ変なリンクを踏まないようにして、普段はサブ垢で生活するようにしています。
サーバーの設定について
Discordの標準機能だけで、防げる部分は多い。まずは、Discordのサーバー設定を見ていこう。なお、私のサーバーではコミュニティ機能をオンにしている(深い理由はなく、だたスレッドが使いたいからという理由)。コミュニティでないサーバーと設定が多少異なるかもしれない。
レイドプロテクション&キャプチャ in 安全設定
全てオンにしている。自分もあまり何の設定がわからないがオンにしていて損はないだろう。
ダイレクトメッセージ&スパムプロテクション in 安全設定
全てオンにしている。
ここの設定項目で非常に悩ましいのが、認証レベルである。ユーザーがサーバーで活動を始めるのに必要な条件であり、レベルが高いほど安全だがユーザーの手間が増える。
注意:ここで設定していても、ロールを付与するとこの設定は無効になります。AutoRoleを設定する際は注意してください。
私のサーバーでは中に設定している。
最高
セキュリティは強固だが、電話番号を持たないユーザーが利用できず、私のサブ垢も使えない。サブ垢なしのコミュニティであれば最高でも構わないかもしれない。
高
これはおそらく、参加者が荒らしなどだった場合、入ってからの10分で対処できるようにという設定だろう。しかし、私のサーバーだと(管理人のオンライン率的に)10分あったところで対処できるか怪しいのと、そもそもこれを突破されても荒らしができないだろうと思っているので過剰。
ユーザー目線では、サーバーに入って10分間何もできないのが暇。
中
私のサーバーはこの設定。
アカウントを大量に作って参加させるという荒らしには一定の効果があるかもしれないが、荒らしは不正したアカウントTOKEN(ログイン情報)を使って荒らしているイメージがあるので、あまり効果がないように思う。
低
メール認証をしていないDiscordユーザーはほとんどいないと思うので、この設定以上は必須。
AutoMod
私のサーバーセキュリティのベースは、このAutoModである。この機能は、条件に合致するメッセージを送信するのを防いでくれる。
色々なボットで同様の機能を目にするが、それらはサーバーに送られた文字を読み取って後から消しているに過ぎない。一方、AutoModはそもそもメッセージが送信される前に止めるという点で優れている。
デフォルトのAutoMod
プロフィール名内の語句をブロック以外オン。プロフィールのブロックは、プロフィールで荒らす人をあんまり見たことがないので不要かなと思っている。
招待リンク
大体の荒らしは招待リンクを貼ってくるイメージがあるので、対策している。文字列は下の通り(正規表現にするのをお忘れなく)。
discord(?:app.com|.gg|.com)[/invite/]?(?:[a-zA-Z0-9-]{2,32})
なお、これではDiscordのメッセージリンクも消してしまうが、正規表現の知識がないので、放置している。
処罰はタイムアウト60秒。本当は3分間にしたかったが設定できなかったので。
荒らし系のワード
荒らし系のワードについては、個別に設定している。この辺のワードを決めるために、Discordの荒らし動画を数時間分視聴した。間違えて荒らしワードを言うことはないだろうと言うことで、タイムアウト1時間にしている。
その他の暴言等
特に必要は感じないが一応設定している。
注意:AutoModに設定するときは「*禁止用語*」のように禁止用語の前後に「*」をつけてください。そうでないと、英語のように禁止用語の前後にスペースがある時にしか反応しなくなります。
権限
両方オンにしている。「モデレータに2段階認証を要求」をオンにすることで、ほとんどの乗っ取りを防げるはず。
ロール設定について
私のサーバーでは多くの場合、次のようなロール分けにしている。
Owner
Admin
Moderator
Bot
Member
Muted
メンション用のロール等はここでは省略する。なお、後述する「Wick Bot」を導入する際はWickをAdmin権限(もしくはModerator権限)より上位に持ってくるようにしてほしい。詳しくは後述する。
Owner
サーバーの所有者のアカウントに付与
なくてもいいが、名前の横に王冠マークがつくのが好きじゃないので設定している。(王冠マークを消すには、オーナーに管理権限付のロールを付与する必要があったはず)
Admin
一部の管理者に付与
サーバーの運営の内、ほぼ全権限を与えている
ログチャンネル(後述)の管理権限と、サーバー管理権限以外を付与
Wickのロールよりは下位
なお、AutoModは招待リンクのみ制限を受けない
Moderator
管理者全員に付与
サーバーの運営の内、Adminより制限された権限
ログチャンネル(後述)の管理権限と、サーバー管理権限以外を付与
Wickのロールよりは下位
なお、AutoModは招待リンクのみ制限を受けない
Bot
ボットに付与
権限はなし(ボットの権限はそれぞれのボットのロールで設定するようにしている)
ボットを別に表示するためだけのロール
Member
ボット以外の全アカウントに付与
以前は、ボットの機能で全員にサーバーに入ったタイミングで付与していたが、「サーバーに入って5分以上経過したアカウントのみ」をバイパスできてしまうので、リアクションロールで付与するようにしている。
Muted
その時々で付与
ありとあらゆる権限を奪っている
私のサーバーでは、WickのQuarantineロールで代用している。
荒らしとかにボットで付与する
ボットについて
ボットについては、セキュリティ関係の機能を使っているものだけ紹介する。
あなたが入れていいボットは、このように2種類しかありません。認証済みボットか、あなた自身が作ったボットです。「ボット入れろは、すべて荒らし!」です。
よく、「ボットを入れて」というお願いを聞いて、ボットを入れて荒らされる動画をYouTubeで目にしますがくれぐれも入れないようにしましょう。
Wick
メインのセキュリティボット。現状、公開されてるボットで一番強い気がする。
注意:ロール設定で、Wickのロールを管理者以外の全てのロールより上位に持ってきてください。そうでないと適切に機能しません。
AutoMod
これはDiscordのAutoModとは別物。メンションスパムや、絵文字スパムなど色々対応している。「Heat」と呼ばれるシステムがあり、メンションや絵文字スパムなど"悪いこと"をすればメーターが上がっていき、100を超えるとタイムアウトを喰らいます。時間経過でメーターは下がっていくので、普通にしているとタイムアウトを喰らうことはありません。
AntiNuke
管理者のアカウントが乗っ取られた時のための機能。
大量のバンを短時間で行ったりすると、管理者にQuarantineロールが付与されて、権限を一時的に失います。
ServerJoins
サーバーに入ってくる人を確認します。
アイコンが設定されてなかったり、新しすぎるアカウントだと、キックされるようにすることができます。が、アイコン未設定の人やアカウント作ったばかりの人が参加することもよくあるのでオフにしています。
ボットの追加の制限は行なっています。
Logging
サーバーで起こった出来事を記録します。
私は全て記録するようにして、閲覧権限をAdmin以上に与えています。
Carl
サブの、セキュリティーボット。正直、リアクションロール以外の機能は使ってない。
リアクションロール
リアクションするとロールを付与する機能。認証モードや、単一選択モードがあるので、そこをきちんと設定すると良い。
少しは荒らしの防止になるとは思う。
Logging
サーバーで起こった出来事を記録します。
私はWickのものを使っているので、Carlは使っていません。
SevenBot
セキュリティというよりかは便利ボット。名前を忘れましたが、チャンネルを一掃してしまう機能があって怖いので、設定が終わった後でSevenBotのプレフィックスである「sb#」を送信できないようにしています。
ExpandMessage
メッセージリンクを展開します。これをオンにすると、メッセージリンクを送った時に、その内容を表示してくれます。普通に便利。
LockMessage
メッセージをチャンネルの最下部に固定します。
あんまり使わない。