Drupalサイトをセキュアに運用するには
(入門編 )
Yoshikazu Aoyama
セキュアに運用すると言っても
● 普通の事をやるだけです○ セキュリティ更新をすぐ適用する○ 不安定なコードをデプロイしない○ スパムの対策○ パスワードのポリシー制御などなど ..
どこに情報あるの?
● https://drupal.org/documentation/administer にサイト管理者向けのガイドがあります○ 日本語のリソースはないので英語を読みましょう○ とは言ってもすごい量なのでポイントだけ紹介します
Drupalに関わるセキュリティの構成要素
● Server● OS● Database ● Web Server● PHP● Drupalhttps://drupal.org/node/176052
● core● contributed module/theme● setting● operation● customized code
セキュリティアドバイザリについて
● https://drupal.org/security-advisory-policy
セキュリティアドバイザリの最新情報
● Twitter(@drupalsecurity)● drupal.org
○ https://drupal.org/security○ https://drupal.org/security/contrib○ https://drupal.org/security/psa○ 上記の URL + rss.xml で feedも取れる○ アカウントを持っていればメール通知もできる
セキュリティアドバイザリの対象バージョン
● https://drupal.org/documentation/version-info○ カレントと 1つ前のバージョンが対象
■ 2014/6 時点では Drupal 6/7■ Drupal 8がリリースされると 6のサポートは終了
セキュリティ更新ってどれくらいあるの?
● https://drupal.org/about/security-track-record○ メジャーなモジュールを一通り入れていると、大体月に一回くらい?
○ http://drupalsecurityreport.org/ により詳細なレポートもあります
サイトのセキュリティ更新の適用状況
● admin/reports/updates でチェック
● admin/reports/updates/settings でメール通知もできる
● 緑は最新● 黄色はバグ修正版が出ている
● 赤いとセキュリティ修正版が出ている
セキュリティ更新の適用方法
● ブラウザから (Drupal 7以降 )○ admin/modules/update○ ブラウザからは coreの更新はできない
● シェルから○ $ drush pm-update
● admin/reports/updates/settings でメール通知もできる
alphaとか betaとか rcのものは使って大丈夫?
● https://drupal.org/node/467020○ [alpha]: might include security issues.○ [beta]: all critical data loss and security bugs are
resolved.○ [rc]: no more critical bugs.
Enabling HTTP Secure (HTTPS)
● https://drupal.org/https-information○ デフォルトでは平文でフォームの post内容が飛ぶ
■ ユーザー名、パスワード、メールアドレス、 etc○ secure pages で以下の URLは httpsに
■ node/add*, node/*/edit, node/*/delete■ user, user/*■ admin, admin/*■ webformや form apiを使うページの URL
○ もしくは HTTPサーバで httpsを強制する
ログインの制限
● Login Security○ Limit the number of invalid login attempts before
blocking accounts.○ or denying access by IP address, temporarily or
permanently
パスワードポリシーの設定
● https://drupal.org/node/598562○ The minimum password length is currently 1
character (!)○ password policy モジュールでポリシーを強化
■ 使用する文字数、文字種を強制■ 定期的なパスワードのリセット
● D8で coreにポリシー設定機能が入るかも?
SPAM対策
● お問い合わせフォームやコメントフォームからの SPAM投稿を防止する機能は coreには含まれていない。○ CAPTCHA、 reCAPTCHA、Mollom あたりのモジュールを使いましょう
管理者アカウントの取り扱い
● https://drupal.org/node/947312○ User #1 (インストール時に最初に作成するユーザ )は全てのアクセス制御をバイパスする。インストールが終わったらアカウントをブロックしよう
○ admin, administratorのような名前は使わない○ 普段の保守は別に管理者用ロールとアカウントを作って行う
○ Restrict Login or Role Access by IP Address で接続元 IPアドレスを制限するのも有効な手段
テキストフォーマットの制限
● https://drupal.org/node/224921○ 入力を許可する HTMLタグを制限する○ 特に PHPコードの入力は信頼できるユーザーにのみ許可する
○ 「 Administer text formats and filters」の権限は一般ユーザーには付与しない
添付ファイルのアクセス制御
● https://drupal.org/node/15368○ 添付ファイルの種類は 2つ
■ public: HTTPで直接ファイルにアクセス■ private: アクセス前に drupalでアクセス制御が入る
○ privateにする場合は、ファイルの保存先は HTTP サーバがアクセスできない場所にする
ログの管理
● デフォルトだと DBにのみロギングされ、1000件を超えると古いレコードは消える
● syslogモジュールを有効化してファイルに吐くようにする
● syslogは適当にローテーションさせて、バックアップも取りましょう
Writing secure code
● https://drupal.org/documentation/is-drupal-secure○ セキュリティ・ホールの 90%以上は、 drupal
coreではなく自サイト向けにカスタマイズしたコードが原因
● https://drupal.org/writing-secure-code○ coder モジュールを使うとエスケープやサニタイズ、プレースホルダの利用などが適切に行われているかチェックできる
周辺要素のセキュリティ
● Server● OS● Database ● Web Server● PHP● Drupal
● OSのパッケージ更新● mysql, apacheなどのアクセス制御
● iptablesなどによるパケットフィルタ
● Zabbix/Negiosなどによるパフォーマンス監視
● etc..
Fin