6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ELB配下でConcrete5を運用しているとセッションが切れる

Last updated at Posted at 2016-03-01

現象と原因

現象

Concrete5をEC2上にインストールしELB経由でアクセスして、ページを編集しようとログインした後、しばらくするとセッションが切れてしまう。

原因

原因は、ELBのIPアドレス(REMOTE_ADD)がしばしば変わってしまうため、Concrete5のセッションのVaridationで引っ掛かりセッションが無効化されてしまう。Concrete5では管理画面と一般ユーザ閲覧画面の区別がないため、より厳しいセキュリティチェックが行われているようで、同一セッションで接続元IPアドレスが変わる場合にセッションが無効化されてしまう。(セッションハイジャック対策の一部)
ELBの特性として、スケールしたりTTL(デフォで60秒?)が切れたりすると接続先のELBの宛先がコロコロ変わる。そのため、内部IPも変わってしまう。
セキュリティへの取り組み

対策

1.IPアドレスのミスマッチのチェックをオフにしてチェックそのものを無効にしてしまう。

<?php
// application/config/concrete.php

return [
    'security' => [
        'session' => [
            'invalidate_on_ip_mismatch' => false
        ]
    ]
];

/application/config/concrete.php
ファイルが無ければ追加、あれば追記。
本体の設定ファイルではない

参考URL:ロードバランサーを通してconcrete5のセッションを維持する

2.ELBの内部IPアドレスを信頼済みIPアドレスとして設定する

ELB経由でアクセスされることを前提にしているのであれば、信頼済みプロキシアドレスとして設定する。

<?php
/**
 * Always trust incoming request.
 * 
 * For more detail, see: http://symfony.com/doc/current/cookbook/request/load_balancer_reverse_proxy.html
 */
// Get remote address
$remoteIp = $_SERVER['REMOTE_ADDR'];


return array(
    'security' => array(
        'trusted_proxies' => array(
            'ips' => array($remoteIp),
        ),
    ),
);

/application/config/concrete.php
ファイルが無ければ追加、あれば追記。
本体の設定ファイルではない

参考URL:
Cloud9でconcrete5開発環境を作る
How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy

  • Concrete5はSymfony2ベースで作られているので設定等はSymfonyベースのものが基本的に使用できるようだ。

検証環境
Concrete5 5.7.5.6
Amazon AWS ELB
EC2

FYI:設定ファイルの使い方

6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?