迷惑メールの防止とクリーンアップを行う
Confluence サイトが一般に公開されている場合、スパムの影響を受ける場合があります。
スパムを停止する
スパムを防止する方法:
- Captcha を有効にします。「スパム対策のための Captcha 設定」を参照してください。
- Apache web サーバーの後ろで Confluence を実行し、攻撃者の IP アドレスをブロックするルールを作成します。
Apache またはシステム レベルでのスパムのブロック
スパム ボットが Confluence を攻撃している場合、おそらく1つの IP アドレスまたは狭い範囲の IP アドレスを使用しています。攻撃者の IP アドレスを見つけて、リアルタイムで Apache アクセス ログを監視し、攻撃者されているページでフィルタリングします。
たとえば、攻撃者がユーザーを作成している場合、signup.action
を検索します。
$ tail -f confluence.atlassian.com.log | grep signup.action
1.2.3.4 - - [13/Jan/2010:00:14:51 -0600] "GET /signup.action HTTP/1.1" 200 9956 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" 37750
作成された実際のスパム ユーザーをログ エントリで比較し、正当なユーザーをブロックしないように注意してください。デフォルトでは、Apache はログの行の最初のフィールドにクライアントの IP アドレスを記録します。
攻撃者の IP アドレスまたは IP アドレスの範囲がわかったら、ファイアウォールのブラックリストにそれを追加します。たとえば、Linux 用ファイアウォールとして一般的な Shorewall を使用して、以下のように追加します。
# echo "1.2.3.4" >> /etc/shorewall/blacklist
# /etc/init.d/shorewall reload
IP アドレスを Apache レベルでブロックするには、Apache の vhost 設定に以下の行を追加します。
Deny from 1.2.3.4
クライアント セッションを切断すること無く変更を適用する "graceful" コマンドで Apache を再起動することができます。
これでもスパムが止まらない場合、パブリック サインアップをオフにすることを検討します。
スパムの削除
プロフィール スパム
「プロフィール スパム」とは、Confluence でアカウントを作成し、プロフェール ページにリンクを投稿するスパムのことです。
そのような作成されたスパム プロフィールが大量にある場合、SQL で簡単に削除することができます。
スパム プロフィールを削除する方法:
- Confluence を停止し、データベースをバックアップします。注:
この手順は、データベースで SQL コマンドを実行する前に実行する必要があります。 スパムではない最後のプロフィールを見つけます。
SELECT bodycontentid,body FROM bodycontent WHERE contentid IN (SELECT contentid FROM content WHERE contenttype='USERINFO') ORDER BY bodycontentid DESC;
- スパムが見つかり始めるまで、プロフィール ページの本文に目を通します。大量の範囲を特定する必要がある場合があります。
killset を検索します。
CREATE TEMP TABLE killset AS SELECT bc.bodycontentid,c.contentid,c.username FROM bodycontent bc JOIN content c ON bc.contentid=c.contentid WHERE bodycontentid >= BOTTOM_OF_SPAM_RANGE AND bodycontentID <= TOP_OF_SPAM_RANGE AND c.contenttype='USERINFO'; DELETE FROM bodycontent WHERE bodycontentid IN (SELECT bodycontentid FROM killset); DELETE FROM links WHERE contentid IN (SELECT contentid FROM killset); DELETE FROM content WHERE prevver IN (SELECT contentid FROM killset); DELETE FROM content WHERE pageid IN (SELECT contentid FROM killset); DELETE FROM content WHERE contentid IN (SELECT contentid FROM killset); DELETE FROM os_user_group WHERE user_id IN (SELECT id FROM killset k JOIN os_user o ON o.username=k.username); DELETE FROM os_user WHERE username IN (SELECT username FROM killset);
Confluence 5.6 以前のバージョンを使用している場合、以下の SQL コマンドを使用します。
- スパムが削除されたら Confluence を再起動し、インデックスを再構築します。これによって、検索インデックスからスパムへの参照が削除されます。