08 February 2012

MediaWikiを使ったウエブサイト「title=http://...」クエリを送りつける攻撃を防ぐ

MediaWikiでページ管理しているウエブサイトのApacheログを見ていると、どうも連続攻撃を受け続けているようだ。

つぎのような設定で、ログオンしていないユーザは、記事を「編集」できないようにしているので、今のところ防御は破られていないようだが…

LocalSettings.php
$wgGroupPermissions['*' ]['createaccount'] = false; #$wgGroupPermissions['*' ]['read'] = true; $wgGroupPermissions['*' ]['edit'] = false; $wgGroupPermissions['*' ]['createpage'] = false; $wgGroupPermissions['*' ]['createtalk'] = false;

Apacheに記録されているエラーは

access_log
p32113-ipngn100102yosemiya.okinawa.ocn.ne.jp - - [07/Feb/2012:09:01:37 +0900] "GET /mw/index.php?title=http://210.1.60.156:2082/index.html? HTTP/1.1" 301 5 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" p32113-ipngn100102yosemiya.okinawa.ocn.ne.jp - - [07/Feb/2012:09:01:37 +0900] "GET /mw/index.php?title=Http://210.1.60.156:2082/index.html%3F HTTP/1.1" 404 5781 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" host-92-9-199-86.as43234.net - - [07/Feb/2012:09:16:35 +0900] "GET /mw/index.php?title=http://210.1.60.156:2082/index.html? HTTP/1.1" 301 5 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" host-92-9-199-86.as43234.net - - [07/Feb/2012:09:16:36 +0900] "GET /mw/index.php?title=Http://210.1.60.156:2082/index.html%3F HTTP/1.1" 404 5778 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"

とにかく、1日に何百回と連続攻撃がやって来る。サーバにも負荷が掛かるのでこの辺りで反転攻勢に出るべきだろう。

ApacheのRewrite機能を使って、httpサーバの段階でアクセスを拒否することにする。MediaWikiルートフォルダにある .htaccess にちょこっと追加

.htaccess
# 通常、外部からアクセスする必要性のないファイルは接続拒否 <Files ~ "(AdminSettings.php*|LocalSettings.php|StartProfiler.sample|api.php*|img_auth.php*|opensearch_desc.php*|profileinfo.php|redirect.ph*|thumb.php*|trackback.php*|wiki.phtml|COPYING|CREDITS|FAQ|HISTORY|INSTALL|README|UPGRADE)"> Deny from all </Files> RewriteEngine on # http://xxxx のキーワードを感知した場合は、接続拒否する RewriteCond %{QUERY_STRING} title=http: [NC,OR] RewriteCond %{THE_REQUEST} index.php/http: [NC] RewriteRule index.php - [F]

こんな感じで…  多分うまく行くだろう。