Mediawikiで運営していたサイトがスパムの被害に遭ったのでその対策と予防

Mediawikiで運営していたサイトがスパムの被害に遭ったのでその対策と予防

MediawikiでWebサイトを運営していたら大量スパムアクセスの被害に遭いました。

Mediawiki-Logo

ソシャゲのWikiでピーク時は20万PV/日程のアクセス数でしたがゲームもWikiも過疎っていたとこにスキが出来て攻撃があったみたいです。

放置Wikiはスパムの温床という事は勿論分かっていたので注意・監視はしているつもりでしたがここ数日忙しかったのとゲーム自体に萎えて来ていたので完全に油断してました・・・。

朝起きてアクセスしたらトップページがスパムリンク付きの記事へと書き換えられていたのでようやく気付いて慌てて対処。

同じような被害に遭った方の為にまずやる事をまとめました。

  1. 権限の変更
  2. Google Adsense等の広告(貼っている場合)を取り除く
  3. スパムページの削除
  4. スパムアカウントのブロック・削除
  5. 既存ページの最終チェック

以上。

1.権限の変更

まずは元を断つ。

何をしても元を断たなければスパムページは分刻みで増えていきます。

新規アカウント作成、ページの作成&編集を制限します。

まずLocalSettings.phpファイルに以下のコードを追加します。

//全ての新規ページ&アカウント作成、既存ページの編集を制限(管理者以外)
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;

Mediawikiの場合、管理者には通常Sysop(≒ビューロクラット)権限を与えて作業します。

$wgGroupPermissions[‘*’]とした場合、このSysop以外を指します。

元を断ったのでスパムページやアカウントはこれ以上増えません。

管理者権限を握られていたら素直にサイト自体閉鎖する事をお勧めしますが、万が一Sysop権限も握られていて管理者も含む全員の権限を制限したい場合は更に以下を加えます。

//管理者の新規ページ&アカウント作成、既存ページの編集を制限
$wgGroupPermissions['sysop']['createpage'] = false;
$wgGroupPermissions['sysop']['createaccount'] = false;
$wgGroupPermissions['sysop']['edit'] = false;

2.Google Adsense等の広告を一旦取り除く

ポルノやドラッグなどアングラなコンテンツはGoogle Adsenseのポリシー違反です。

AdSense プログラム ポリシー

Adsenseに限らず類似サービスには利用規約があり、スパムが作ったコンテンツがそれらに違反している可能性は非常に高いので対処が終わるまでは一旦取り除いておくのが吉。

3.スパムページの削除

先ずは“WikiURL/特別:ページ一覧”にアクセスして状況を把握します。

スパムで一覧が埋まっているようならば手動での削除はほぼ不可能でしょう。

そこで拡張機能NukeのMass Delete機能を利用します。

Mass Delete機能なら一覧からチェックを付けたページを一発で削除してくれます。

1.2.1以降のバージョンにはバンドルされているので、まずextensionディレクトリをチェックしてください。

無ければ以下からDLします。
https://www.mediawiki.org/wiki/Extension:Nuke/ja

拡張機能を有効化したらSysop権限のアカウントから“WikiURL/特別:まとめて削除”にアクセス。

ここでは全ページを取得したいので特に何も入力せずに一覧取得します。

取得した時点ですべての項目にチェックが付いているので、削除したくないページだけチェックを外して“選択されたページを削除”をクリック。

数百ページを一気に削除できます。

4.スパムアカウントのブロック・削除

必要なものは以下。

1.大量にアカウントがブロックできるBlockAndNukeという拡張機能
2.ユーザーを統合する拡張機能UserMerge

スパムアカウントはブロックしてしまえば削除する必要はありません。

というのも本来Mediawikiにはアカウントを削除する機能は付いていません
(データベースを直接弄って削除を試みるとWiki自体がぶっ壊れる可能性もあるようです。)

それでもアカウントが残っていると気持ち悪いと思う方はUserMergeもインストールしてください。

削除する場合もしない場合もやり方は同じです。

まずはBlockAndNukeの使い方。
https://www.mediawiki.org/wiki/Extension:BlockAndNuke

使い方は詳しくリンク先(英語)に書いてあるので箇条書きで説明します。

  1. 拡張機能の有効化
  2. whitelist.txtのパスを指定
  3. whitelist.txtにスパム以外のユーザーを全て書き込む。(1行1アカウント)
  4. “WikiURL/特別:Blockandnuke”へアクセスしてスパム以外のユーザーにチェックが付いてないのを確認して”Block Users”
  5. 選択されたユーザーの”貢献”したページとIPアドレスが表示されるのでスパム以外のページが混じってないかを確認。
  6. 混じっていなければ”Block and Nuke”でスパムアカウントを全員ブロック&スパムユーザーのページも削除完了。

※非スパムのページが混じっている場合の説明は後ほど

ここでUserMergeが有効の場合はブロックの代わりに削除(実質的には統合)されます。

以上でスパムページとユーザーの対処は完了です。

5.最終チェックと予防

BlockAndNukeを実行するときにスパム以外のページが混じっていなければスパムはそれらのページには触れていないという事になります。

もし予期せぬページが混じっているようであれば各ページに飛んで編集履歴を確認。

信頼できるバージョンまで巻き戻します。

終わったらBlockAndNukeの一覧を再度読み込んでチェック。

異常が無ければ実行して完了します。

予防に有効な手段としては拡張機能のConfirmEdit等を使うと今回のようなボットでのスパムは防げます。

他にも参加の敷居を上げれば上げるだけスパム被害は減りますが、編集に参加してくれる人も減るので難しいところですね。

ひとこと

余程人的リソースがあるか思い入れのあるゲームでもない限りWikiの運営はきついです。
トラブルの対処やひな形を作るだけでも大変。
そりゃ同じゲーム扱うんでも2chスレオンしてコピペしてる方が楽に稼げるしやる人いなくなるわなぁという感じ。
自分もゲームWikiの運営はもうやりたくありません・・・。

コメントを残す

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