記事一覧

2017開始に向けセキュリティ対策

2016.11.02

Web Diary Professional Professional復活前にセキュリティ対策

参考サイト→ http://www.web-liberty.net/security.html#module

作者サイト閉鎖で困らないよう、そしてスムーズな対策をするため
自分なりに整理しました。ファイルやディレクトリ名は変更前。

◆パーミッションの設定◆

 1. /data/user.log (暗号化管理者パスワードファイル) パーミッション変更(600 に設定)をする。
 
 2. lib/webliberty/App/Init.pm (初期値制御ファイル)  パーミッション変更(600 に設定)をする。
  
 3.lib フォルダ内の拡張子が .pm(プログラムモジュール)パーミッション変更(600 に設定)をする。

 4. 主プログラムファイルのパーミッション変更(700 に設定)をする。動作NGの場合は701→705→755

 5. 下記ファイル種類のとおり、パーミッションの設定をする。

ファイルの種類      suEXEC対応    suEXEC非対応
CGIプログラム      700または(701)  705(または755)
ログファイル      600        606(または666)
ライブラリ・モジュール 600        604(または644)
ファイル作成ディレクトリ700または(701)  707(または777)

 ※ファイルをFTPで上書きした場合は、再度設定を確認すること。

■suEXECに対応させる手順

各CGIファイルを設置する前に、lib/webliberty/App/Init.pm の「初期設定」にある
suexec_mode => 0,

suexec_mode => 1,  に設定する。
この状態でセットアップすると、自動的にsuEXECに適したパーミッション設定される。
    diary.cgi など、セットアップ前にパーミッション設定するファイルは、手動でパーミッション設定する。
すでにセットアップ済みの場合は上記設定し、FTPソフトから各ファイルのパーミッションを変更する。
   

◆ログファイルへのアクセス禁止対策◆

 設置したフォルダまたはその上位フォルダに下記内容の .htaccess ファイルを置くことで拡張子.log のアクセスを排除する。

<Files ~ "\.log$">
deny from all
</Files>

◆Cookie情報の暗号化対策◆

lib/webliberty/App/Init.pm の「初期設定」にある  des_key => '',  に
半角24文字までの任意の文字列を指定する。

例) des_key => 'KA9QFeZ6EzQDpZYYM3lcR8MX',

同一の鍵が無ければ復元できない可逆式秘密鍵型暗号方式に使用する、鍵となる文字列を設定。
鍵となる文字列はどこかで入力を求めたりするものでは無く、覚えやすい文字列は無用。
変更前Cookietが読み出せなくなるので、一旦設定したら変更しない方が良い。


◆既知情報の変更(ファイル名の変更) 

 ●CGIファイルの名前変更

  CGIファイル名の設定は lib/webliberty/App/Init.pm の「初期設定」で定義。
  script_file => './diary.cgi',
  tb_file => './diary-tb.cgi',
  paint_file => './diary-paint.cgi',

  という項目が並んでいる箇所、これらがCGIファイル名の設定。
  例えば
  script_file => './diary.cgi',
  を
  script_file => './index.cgi',
  に変更すると、CGIファイル名が diary.cgi から index.cgi に変わる。

  設定変更後に、各ファイル名を変更する。


 ●ログファイルの名前変更

  各ログファイル名の設定は lib/webliberty/App/Init.pm の「初期設定」で定義。
  #ログファイル
  data_dir => './data/',
  data_config => './data/init.cgi',
  data_user => './data/user.log',

  という項目が並んでいる箇所、これらがログファイル名の設定。
  例えば
  data_field => './data/field.log',
  を
  data_field => './data/diary_field.dat',
  に変更すると、分類情報のファイル名が field.log から diary_field.dat に変わる。

  同じ要領でディレクトリ名も変更可。(初期はデータファイルはすべて data ディレクトリに存在)

  設定を変更してからセットアップするとそのファイル名でデータファイルが作成されるが、
  セットアップ後に変更した場合は各ファイル名の変更が必要。


◆付録◆
●suEXEC について
 suEXECは、CGIプログラムを所有者権限で起動し、ファイルの読み書きを所有者権限で行う仕組み。
 元々CGIプログラムは nobody 権限で実行されるため、suEXECがあるとパーミッション値をより低く設定できる。

 例)ログファイルのパーミッションは通常 606 「所有者」と「その他」に対して書き込み権限のため
 「その他」の権限にてブラウザからログファイルをURLで直接アクセスされるとダウンロードされてしまう。
 suEXECなら所有者の権限で動作可能のため「その他」の権限は不要でパーミッション600 に設定できる。

●パスワード
 ある程度長く複雑な英数字の混在として、かつ、定期的に変更する。

◇アップ画像の上限を 5から9へ改造する方法◇ 
下記3ファイルの1~5の配列処理部に1~9を追記修正する。
  webliberty/App/Diary.pm
  webliberty/App/Admin.pm
skin/admin_form.html
  
  Diary.pmの修正
  下記変数文字列の行を検索して1~5で定義している部分に6~9を追記する。
  form_file , check , delfile , article_file

Admin.pmの修正
#アップロードファイル保存 と ### プレビュー表示 の部分
foreach (1 .. 5) を foreach (1 .. 9) に修正
FORM_EXT の1~5の部分をまねて6~9を追加

admin_form.htmlの修正
投稿フォーム と FORM_FILE_START 部分の1~5をまねて6~9を追加する。

ページ移動