最初に読んでね ダウンロード 検索 ユーザー登録する 連絡 マイストア ログイン  
トピックに返信する [Tips] あなたのphpBBフォーラムをハッカーから守るには このエントリーを含むはてなブックマーク
あなたのphpBBフォーラムをハッカーから守るには
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
あなたのphpBBフォーラムをハッカーから守るには

How to protect your phpBB forum against hackers

の中から、簡単で有用そうなものをボチボチ紹介してみます。
ただし、すでにphpBB側で対応済みのものもあります。
また、実行はもちろん自己責任でお願いします。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Tip 1: フォーラムをハッカーに見つけられない様にする
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
どれだけ効果があるか不明ですし、なんか悲しいですが「phpBB」という文字をフォーラムから消してGoogle等の検索順位を下げる方法です。santyなどGoogle検索を利用したワームがちょっと前に話題になりましたし、それでなくともまず検索して攻撃する対象を決めることが多いはずなので、その検索結果で上位に来ないようにすることは意味はあります。

本文とはちょっとはずれますが、ポイントを纏めると

(1) フォーラムのタイトル等、表に出る文字に「phpBB」を含まない様にする。特にフォーラム全体の名前には使わないこと。
(2) フッター(templates/subSilver/overall_footer.tpl)の中の「Powered by phpBB」の文字を画像にするか、「php BB」や「php.BB」などと変更する
(3) フォルダ名に「phpBB」ないし「phpBB2」を含むものを使わないこと

最初のリンク先に「Powered by phpBB」を画像にしたものが貼ってあります。
ウチのサイトも画像化してますが、phpBBの方は無許可なのでアレです(多分問題ないとは思いますが)

念のためですが、phpBB.comへのリンクを完全に削除してはいけません。
phpBBの使用許諾違反となります。もちろんこのフォーラムから日本語版をダウンロードした方はここへのリンクも。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Tip 2: 管理者のコンパネから文書等が削除されるのを防ぐ
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
侵入された場合に、簡単に大量の文書が削除されるのを防ぐ方法です。このTipの対象となるのは、非常に重要でハッカーにとって有用な割に日頃あまり使わないこちらのphp群

・admin/admin_db_utilities.php
・admin/admin_forums.php
・modcp.php

です。後に出てくるadminフォルダへのアクセス制御を行えば、上の二つは原則として(パスワードを抜かれない限り)放置しても構わないとは思います。
この部分は僕自身は理解不足ですので、処理方法についてはできるだけ元ページに忠実に書きます。

ただし、正直なところ管理者として操作が面倒くさくなる割に、効果が薄いのではないかと僕は感じていますので、ウチでは適用していません。


・admin/admin_db_utilities.php

「最も重要だけど、毎日フォーラムの管理を行わない限りもっとも不要なもの」と書かれています。
必ずバックアップした後に、単に削除するか、リネームします。

・admin/admin_forums.php/

フォーラムの記述や構築、名前の変更を行わない限り不要なものです。
バックアップした後に、同じく削除かリネームします。

・modcp.php

これはトピックを動かしたり削除したり、結合したり分割したりするためのものなので、リネームや削除を行うのはうまくないです。その代わりに、トピック丸ごとの削除ができない様にすることが有用です。すなわち、

コード:
$delete = ( isset($HTTP_POST_VARS['delete']) ) ? TRUE : FALSE;


コード:
$delete = ( isset($HTTP_POST_VARS['delete']) ) ? FALSE: FALSE;


に変更します。これによってトピック丸ごとの削除はできなくなり、一つ一つ文書を削除する必要が出てきますが、通常たくさんの文書があるトピックを削除することは少ないはずです。
もちろんハッカー側も一つ一つ文書を削除すれば同じことですが、ずっと手間がかかって面倒くさいので、これを防ぐ効果はあると思います。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Tip 3: 管理者コンパネへのアクセスを防ぐ
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
色々な方法が紹介されていますが、結局のところ.htaccessを使って「admin」フォルダにパスワードをかけるのが最も有効だと思います。

本文にも「.htaccess.zip」が添付されていますが、こちらの

「.htaccess パスワード」でGoogle検索した結果

も参考にしてください。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Tip 6: Santyワームを防ぐ(%2527の脆弱性)
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
ちょっと飛びますが、.htaccessの話のついでにこちらに行きます。

phpBBのセキュリティ問題はいくつかありましたが、これが史上最大最悪のもので、数々のphpBBフォーラムがハックされる原因となりました。おそらく現在のバージョンではphpBB側で対応済みのはずです。が、設定して悪いことは無いと思うのでウチでは一応入れてます。

一言で言うと「%27(シングルクォート)」、「%25("%")」をSQLにphpBB経由で直接ぶち込まれるバグがあり、現在はphpBB側で弾いていますが、これを鯖で弾こうという設定です。(というのは、Mech.Mozillaさんの受け売りです。以下も)

phpBBの設置してあるルートフォルダに.htaccessを置いて、

コード:
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^.*$
RewriteRule ^.*%27.*$ http://127.0.0.1/ [redirect,last]
RewriteRule ^.*%25.*$ http://127.0.0.1/ [redirect,last]
RewriteRule ^.*rush=.*$ http://127.0.0.1/ [redirect,last]
RewriteRule ^.*echr.*$ http://127.0.0.1/ [redirect,last]
RewriteRule ^.*esystem.*$ http://127.0.0.1/ [redirect,last]
RewriteRule ^.*wget.*$ http://127.0.0.1/ [redirect,last]

# prevent pre php 4.3.10 bug
RewriteCond %{HTTP_COOKIE}% s:(.*):\%22test1\%22\%3b
RewriteRule ^.*$ http://127.0.0.1/ [R,L]

# prevent perl user agent (most often used by santy)
RewriteCond %{HTTP_USER_AGENT} ^lwp.* [NC]
RewriteRule ^.*$ http://127.0.0.1/ [R,L]
RewriteCond %{HTTP_REFERER} ^.*$


を記述します。これらは不正なSQLコードを防ぐものです。
同じことなのですが、コードに統一性を持たせたいのでウチはこちらで設定してます。

コード:
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^.*$
RewriteRule ^.*%27.*$ http://127.0.0.1/ [R,L]
RewriteRule ^.*%25.*$ http://127.0.0.1/ [R,L]
RewriteRule ^.*rush=.*$ http://127.0.0.1/ [R,L]
RewriteRule ^.*echr.*$ http://127.0.0.1/ [R,L]
RewriteRule ^.*esystem.*$ http://127.0.0.1/ [R,L]
RewriteRule ^.*wget.*$ http://127.0.0.1/ [R,L]

# prevent pre php 4.3.10 bug
RewriteCond %{HTTP_COOKIE}% s:(.*):\%22test1\%22\%3b
RewriteRule ^.*$ http://127.0.0.1/ [R,L]

# prevent perl user agent (most often used by santy)
RewriteCond %{HTTP_USER_AGENT} ^lwp.* [NC]
RewriteRule ^.*$ http://127.0.0.1/ [R,L]
RewriteCond %{HTTP_REFERER} ^.*$
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
バリュードメイン
Tip 4: SQLインジェクションを防ぐためにprefixを変更する
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
デフォルトでインストールすると、phpBBで使うテーブルのprefix(各テーブルの前に付く接頭辞)あるは「phpbb_」で設定されます。もちろん通常はこれで問題ないのですが、ハックする側から見ると的を絞りやすくなってしまいます。

僕自身、「もう設定しているし、変えるのは大変そうだ」と思ってためらっていたのですが、実際にやってみると非常に簡単。
ミスにさえ気をつけて慎重にやればすぐに設定変更可能です。


まず変更するprefixを決めます。意味のないランダムなものが良いです。いったん設定してしまえば忘れてしまっても構いませんし、「config.php」を見ればいつでも確認できます。ここでは「xyz14xyz_」に変更する例が挙げられています。

prefixは、インストール時に「config.php」に定義されています。サーバにある「config.php」をダウンロードして確認して下さい。

コード:
$table_prefix = 'phpbb_'


という記述が見つかるはずです。まずこれを、

コード:
$table_prefix = 'xyz14xyz_'


に変更します。アップロードしてしまうと当然フォーラムは動かなくなるのでとりあえずこの状態でローカルに置いておきます。


次にSQLのテーブルを変更します。SQLクエリの書式は、

コード:
ALTER TABLE phpbb_auth_access RENAME TO xyz14xyz_auth_access;


となります。通常だと、元ページに挙げられている、

コード:
ALTER TABLE phpbb_auth_access      RENAME TO xyz14xyz_auth_access;
ALTER TABLE phpbb_banlist          RENAME TO xyz14xyz_banlist;
ALTER TABLE phpbb_categories       RENAME TO xyz14xyz_categories;
ALTER TABLE phpbb_config           RENAME TO xyz14xyz_config;
ALTER TABLE phpbb_confirm          RENAME TO xyz14xyz_confirm;
ALTER TABLE phpbb_disallow         RENAME TO xyz14xyz_disallow;
ALTER TABLE phpbb_forum_prune      RENAME TO xyz14xyz_forum_prune;
ALTER TABLE phpbb_forums           RENAME TO xyz14xyz_forums;
ALTER TABLE phpbb_groups           RENAME TO xyz14xyz_groups;
ALTER TABLE phpbb_posts            RENAME TO xyz14xyz_posts;
ALTER TABLE phpbb_posts_text       RENAME TO xyz14xyz_posts_text;
ALTER TABLE phpbb_privmsgs         RENAME TO xyz14xyz_privmsgs;
ALTER TABLE phpbb_privmsgs_text    RENAME TO xyz14xyz_privmsgs_text;
ALTER TABLE phpbb_ranks            RENAME TO xyz14xyz_ranks;
ALTER TABLE phpbb_search_results   RENAME TO xyz14xyz_search_results;
ALTER TABLE phpbb_search_wordlist  RENAME TO xyz14xyz_search_wordlist;
ALTER TABLE phpbb_search_wordmatch RENAME TO xyz14xyz_search_wordmatch;
ALTER TABLE phpbb_sessions         RENAME TO xyz14xyz_sessions;
ALTER TABLE phpbb_smilies          RENAME TO xyz14xyz_smilies;
ALTER TABLE phpbb_themes           RENAME TO xyz14xyz_themes;
ALTER TABLE phpbb_themes_name      RENAME TO xyz14xyz_themes_name;
ALTER TABLE phpbb_topics           RENAME TO xyz14xyz_topics;
ALTER TABLE phpbb_topics_watch     RENAME TO xyz14xyz_topics_watch;
ALTER TABLE phpbb_user_group       RENAME TO xyz14xyz_user_group;
ALTER TABLE phpbb_users            RENAME TO xyz14xyz_users;
ALTER TABLE phpbb_vote_desc        RENAME TO xyz14xyz_vote_desc;
ALTER TABLE phpbb_vote_results     RENAME TO xyz14xyz_vote_results;
ALTER TABLE phpbb_vote_voters      RENAME TO xyz14xyz_vote_voters;
ALTER TABLE phpbb_words            RENAME TO xyz14xyz_words;


でOKなのですが、例えばAttachment MODなどを適用しているとテーブルが増えているはずなので、すべてのテーブルがリストされているか確認し、漏れているものは追加します。もっとも、漏れていたものがあれば、後でSQLクエリを打てば変更できますが。

phpMyAdminを使っていれば、phpBBで使用しているデータベースを開き、「SQL」のタブをクリック。
現れたテキストボックスに上のクエリをコピー&ペーストして実行すればOKです。

すべてのテーブルのprefixが変更されたのを確認したら、「config.php」をアップロードします。


これで終了です。従来通りフォーラムが動くことを確認して下さい。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Tip 5: クッキーを偽装する手法でパスワードを盗まれるのを防ぐ
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
*注: 僕はまだ未検証です
*注2: 最新バージョンではこの脆弱性は修正されている様です。ただし、最後の警告文書も参照して下さい

・追記: ちょっと見てみましたが、そもそも「sessions.php」の構造が変わっているみたいです。ということで保留。


クッキーを偽装して、管理者ないしユーザーになりすますことで、パスワード等を盗むクラックの手法があります。通常のブラウザではクッキーの変更はできなくなっていますが、もちろん100%不可能な訳ではありません。

自動ログインさえ無効にしておけば全く問題ないのですが、管理者はともかくユーザーにとってはかなり面倒くさい作業になってしまいます。

ここではその折衷案として、

・ユーザーは、以前投稿した時と同じIPを使う場合以外は自動ログインできなくする
・管理者はもっと厳密に、定義したIP以外では自動ログインできなくする

というMODが紹介されています。設定方法は、

(1) includes/sessions.phpをダウンロードして開く

(2) ファイルの中から、

コード:
if ( $auto_create )
        {

を探し、その後に

コード:
@include_once('allowedadminipsforautologin.php');
if (!allow_autologin_based_on_ips($userdata,$user_ip))
    {
    unset($sessiondata['autologinid']);
    }

を追加する。

(3) 元文書に添付されている「allowedadminipsforautologin.zip」をダウンロードして解凍する

(4) 「allowedadminipsforautologin.php」を開き、管理者のIPを定義する(複数IPや範囲指定も可能)。

管理者以外にユーザーのIPを定義することも可能ですが通常は不要

(5) includesフォルダに「sessions.php」と「allowedadminipsforautologin.php」をアップロード

以上で設定は終了です。


以下は警告文書

引 用:
もしあなたがこの問題を修正した「新しいバージョンのphpBBを使っているから大丈夫だ」と考えているならそれは間違っています。

・1年前にバグが存在した時点で、すでにパスワードを盗まれてしまって、それを悪用しないと誰が保証できるでしょうか。

・あなたが他のphpBBフォーラムにユーザーとして書き込んでいて同じパスワードを使っていて、
そのフォーラムにバグが残っていた場合にそれを利用されないと誰が保証できるでしょうか。

・あなたの書き込んだ他のphpBBフォーラムの管理者がすべて善良だと誰が保証できるでしょうか。
つまり、同じパスワードを使っていた場合それを使って管理者コンパネにログインしないと誰が保証できるでしょうか。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
とりあえずこんなところで
群青
投稿上級者さん
投稿上級者さん

登録日: 2005.04.17
記事: 75
所在地: 【アダ被の部屋】
引用付きで返信する
これ以降のものにも目を通しましたが、すでに改善されているものやファイルの構造が変わっているものが多いので紹介するまでもないかと。


phpBB.com側もこれも参考にしてアップデートしてるんでしょうね、きっと。



コメント等々あれば歓迎いたしますです。
ユーザーのプロフィールを表示群青 の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
Re: とりあえずこんなところで
hiikun
あどみん
あどみん

登録日: 2005.03.16
記事: 830
所在地: 大阪府
引用付きで返信する
群青 の記述を引用:
コメント等々あれば歓迎いたしますです。

翻訳ご苦労様でした。

やはり、phpBB2 は世界的に使用シェアの高い掲示板スクリプトですから、アナを狙われるシェア(?)も高いんでしょうね。
そして、それを阻止すべく立ち上がる勇志たちも居らっしゃるワケで。

何はともあれ、どうもありがとうございました。

_________________

Arrow 【ニューリリース】2.0.23/3.0.0

マイホームノートアイテム探索小都市
ユーザーのプロフィールを表示hiikun の記事をすべて検索プライベートメッセージを送信投稿者のウェブサイトに移動
instnet
投稿入門者さん
投稿入門者さん

登録日: 2010.01.11
記事: 2
引用付きで返信する
エラーはいっぱいですね。
ユーザーのプロフィールを表示instnet の記事をすべて検索プライベートメッセージを送信
[Tips] あなたのphpBBフォーラムをハッカーから守るには
新規投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
投票参加: 不可
添付アップロード: 不可
添付ダウンロード: 不可
All times are GMT + 9 Hours (JST)  
Page 1 of 1  

  
  
 トピックに返信する    

Board Security

3145 Attacks blocked

Powered by phpBB © phpBB Group
Design by phpBBStyles.com | Styles Database.
Traduction par : PHPBB JAPAN / UTF-8 i18n Edition : JP Support Forum
Content © phpBB2 日本語サポートフォーラム
[ Debug on | page generation = 0.31693 seconds | sql queries = 18 ]
Feed RSS 2.0
JP Support Forum
SourceForge.jp