セキュリティ:所有者とパーミッション(例 database.php)

akazawa > セキュリティ:所有者とパーミッション(例 database.php) @ 2015/6/22 20:20
こんにちは
baserCMSを使い初めたのですが、セキュリティ上の懸念を感じる点があり、改善いただけないかと思いまして投稿致します。

例を挙げた方がわかりやすいと思いますので、/app/Config/database.php を取り上げます。(以下、database.php)

database.php には以下のようにDBに接続するために必要となるユーザ名とパスワードが記載されています。
---------------------------------------------
'login' => 'hoge_user',
'password' => '***********',
---------------------------------------------

database.php のデフォルトの所有者とパーミッションを見てみますと、
-rw-r--r-- 1 apache apache 917 6月 3 23:54 2015 database.php
というように、第三者の読み込みが許可されています。

この状態ですと、自分と関係無いローカルユーザは(ssh等でアクセス可能だとして)DB接続に必要なユーザ名とパスワードがわかることになりますので、DB内の情報がすべて見えてしまうことになります。公開しているコンテンツであれば見えても良いわけですが、変更も可能です。つまり、改ざん可能状態である、とも言えるのです。

また、サーバ内では多数のプロセスが稼働しており、そのひとつでも第三者に乗っ取られたりすると、リモートからDB内容を閲覧したり、変更(改ざん)、消去が可能となってしまいます。

個人的なサイトであれば「あ〜やられちゃった」で済むかもしれませんが、「コーポレイトサイトにちょうどいい」CMSでこれでは一大事です。

私は次のようにパーミッションを変更しておきました。
-rw-r----- 1 apache apache 917 6月 3 23:54 2015 database.php
つまり、第三者には読み書きさせない、という設定です。

同様なことがほかにも多数あります。
第三者がディレクトリに書き込み可能になっていたりもします。
マニュアルを拝見しても、フォルダのパーミッションは777、ファイルのパーミッションは666という危険な指定をしてあります。

これはとても危険な話ですので、急ぎ改善が必要と考えます。
すでに本番運用されているサイトも多数あるようですので、どこをどう変更すべきか情報提供をよろしくお願い致します。

■baserCMS: 3.0.8
■スマートURL: ON
■制作・開発モード: デバッグモード1
■設置フォルダ: Apacheのドキュメントルート
■レンタルサーバ: さくらインターネットVPS
■OS: CentOS 6
■HTTPサーバ: A

ryuring > Re: セキュリティ:所有者とパーミッション(例 database.php) @ 2015/6/26 13:24
こんにちは、開発メンバーの ryuring と申します。

ご指摘ありがとうございます。
確かにSSHを許容している共用サーバーではリスクがありますね。

もともと baserCMS は、共用サーバーが SSHを開放していない時代に、様々なレンタルサーバーで動作する事を目標に開発を進められていました。
インストーラーや、マニュアルについてもその頃の名残りのままとなっています。
正直なところ、時代の流れについていけてないのが現状です。

ご指摘のとおり、一番リスクが高いのは、app/Config/database.php ですね。
まず、こちらに関しては、注意喚起するアラートを出す等の施策を考えたいと思います。

また、パーミッション設定も具体的な設定数値を明示する方向はやめ、書き込み権限がないというアラートを出すのみにとどめ、可能であれば、PHPの実行ユーザーを判定した上で、推奨書き込み権限を提示したいと思います。

それから、マニュアルに関しては、WordPressに存在するようなセキュリティを高めるコンテンツを準備したいと思います。

http://wpdocs.osdn.jp/WordPress_の安全性を高める

引き続きアドバイス頂けましたら幸いです。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

akazawa > Re: セキュリティ:所有者とパーミッション(例 database.php) @ 2015/6/27 11:11
ryuing様

コメントをいただきありがとうございます。
経緯について承知しました。

たまたまでしたが、一番大事だったという app/Config/database.php について適切な処置がされる方向に進んでいけることとなり、利用者にとっても開発者にとってもよかったのかなと思っております。


他のみなさまの参考になるかもしれませんので、もうひとつ私の対処したことを書いておきます。

★テーマのフォルダ/ファイルのパーミッションを以下のように変更

[デフォルト] 777/666
  ↓
[私の設定]775/664

変更方法:
 1) sshでサーバにログイン
 2) themeディレクトリに移動
 3) 配下に自作テーマの入っているmy_themeディレクトリがあるという場合なら、以下のシェルコマンドを実行

sudo chmod -R o-w my_theme


-----------------------------------
コマンドにあまりなじみのない方向けの解説
-----------------------------------
 上の方法により、my_themeを含め、その中にある全ディレクトリおよび全ファイルのパーミッションを変更できます。
 sudo : OS(Linux等)のスーパユーザとして実行する
 (my_themeディレクトリに書き込み権限があればスーパユーザとなる必要はありませんので、この場合なら sudoは書かなくてOK)
 chmod : パーミッションを変更するためのコマンド
 -R : 配下の(内包している)ディレクトリにも適用する(階層が深くても全階層に適用する)
 o-w : other(第三者)への w(書き込み権限)を -(禁止)するの意
 my_theme : chmodコマンドを適用させるディレクトリ

■baserCMS: 3.0.8
■スマートURL: ON
■制作・開発モード: デバッグモード1
■設置フォルダ: Apacheのドキュメントルート
■レンタルサーバ: さくらインターネットVPS
■OS: CentOS 6
■HTTPサーバ: A

cikakako > Re: セキュリティ:所有者とパーミッション(例 database.php) @ 2016/4/1 22:16
たまたまでしたが、一番大事だったという app/Config/database.php
それは悪質な暗号化につながる可能性があり
http://sakujosuru.jp/guides/locky
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
21 人のユーザが現在オンラインです。 (21 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 21