Drupalサイトを
セキュアに運用するには
(入門編)
Yoshikazu Aoyama
セキュアに運用すると言っても
● 普通の事をやるだけです
○ セキュリティ更新をすぐ適用する
○ 不安定なコードをデプロイしない
○ スパムの対策
○ パスワードのポリシー制御
などなど..
どこに情報あるの?
● https://drupal.org/documentation/adminis
ter にサイト管理者向けのガイドがあります
○ 日本語のリソースはないので英語を読みましょう
○ とは言ってもすごい量なのでポイントだけ紹介しま
す
Drupalに関わるセキュリティの構成要素
● Server
● OS
● Database
● Web Server
● PHP
● Drupal
https://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
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
ログインの制限
● 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」の権限は一
般ユーザーには付与しない
roles & permission
● https://drupal.org/node/1938536
Directory & File Permission
● https://drupal.org/node/244924
添付ファイルのアクセス制御
● 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 モジュールを使うとエスケープやサニタイズ、
プレースホルダの利用などが適切に行われているか
チェックできる
その他のセキュリティ改善に役立つモジュール
● https://drupal.org/node/382752
周辺要素のセキュリティ
● Server
● OS
● Database
● Web Server
● PHP
● Drupal
● OSのパッケージ更新
● mysql, apacheなどのアクセ
ス制御
● iptablesなどによるパケット
フィルタ
● Zabbix/Negiosなどによるパ
フォーマンス監視
● etc..
Fin

Drupalサイトをセキュアに運用するには(入門編)