設定

Shieldon Firewallは、その動作をカスタマイズできる設定の豊富なセットを持っています。以下に、設定できるプロパティの概要を示します:

Shieldonインスタンスを初期化するときや、後でsetPropertyまたはsetProperties APIを使用して設定を調整できます。

初期化


$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel = new \Shieldon\Shieldon($config);

setProperty

$kernel->setProperty('time_unit_quota', [
    's' => 2, 'm' => 10, 'h' => 30, 'd' => 60
]);

setProperties


$config = [
    'time_unit_quota' => [
        ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
    ]
];

$kernel->setProperties($config);

デフォルト値

key type value
time_unit_quota array ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
time_reset_limit integer 3600
interval_check_referer integer 5
interval_check_session integer 30
limit_unusual_behavior array ['cookie' => 5, 'session' => 5, 'referer' => 10]
cookie_name string ssjd
cookie_domain string "

パラメーター

time_unit_quota

この設定は、特定の時間単位に基づいてウェブサイトのユーザーに対するページビューの上限を定義できるようにします。配列のキーは 's'(秒)、'm'(分)、'h'(時間)、'd'(日)で、各キーはその時間単位でのユーザーごとのページビューの上限に対応します。デフォルトは ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]です。

  • 配列
key value description
s integer 訪問者ごとのごとのページビュー
m integer 訪問者ごとのごとのページビュー
h integer 訪問者ごとの時間ごとのページビュー
d integer 訪問者ごとのごとのページビュー
  • ユーザーが1日に100ページを表示することを制限したいだけの場合は、smhを非常に高い数値に設定し、d100に設定します。

  • ユーザーが上限に達すると一時的に禁止されるだけであり、キャプチャを解決することで禁止を解除できるため、値をあまり緩く設定しないでください。それはこのライブラリを使用する意味がないからです。

time_reset_limit

これは、フィルターにフラグが立てられた数がリセットされるまでの秒数です。デフォルト値は3600(1時間)です。

interval_check_referer

interval_check_refererと同様に、このプロパティは、ShieldonがユーザーのSESSIONクッキーをチェックし始めるまでの秒単位の遅延を設定します。デフォルトは30秒です。

ユーザーが最初にウェブサイトを訪れてブラウザのURLを入力すると、HTTP_REFERERは空です。interval_check_referer秒後、ShieldonはHTTP_REFERERをチェックし始めます。

この値は無視できます。

interval_check_session

ユーザーが初めてウェブサイトを訪れると、interval_check_session秒後にShieldonがSESSIONクッキーをチェックし始めます。

limit_unusual_behavior

この設定では、特定の条件に基づいて通常とは異なる行動としてフラグが立てられる上限を定義できます。

デフォルトは['cookie' => 5, 'session' => 5, 'referer' => 10]です。

ウェブサイトの訪問者に対して通常とは異なる行動としてフラグが立てられる上限とクオータを設定します。

  • 配列
key value description
cookie integer JavaScriptによって生成されたクッキー。
session integer PHPセッション
referer integer HTTP_REFERER

cookie_name

このプロパティは、Shieldonが使用するクッキーの名前を指定するために使用されます。デフォルトはssjdです。

cookie_domain

このプロパティは、クッキーが制限されるドメインを定義します。デフォルトでは、クッキーはサーバー上のすべてのサブドメインで利用可能です。

deny_attempt_enable

このオプションを有効にすると、Shieldonは連続したCAPTCHAの失敗をすべて記録します。 ユーザーが指定された制限に達すると、Shieldonはそのユーザーをルールテーブルのブラックリストに追加します。

デフォルト値はtrueです。

deny_attempt_buffer

このプロパティは、ユーザーが何回CAPTCHAを解決できなかった後にブラックリストに追加されるかを定義します。 デフォルト値は10です。

deny_attempt_count

このプロパティは、ユーザーがブラックリストに追加されるまでのCAPTCHAの失敗回数を指定します。 デフォルト値は3です。

reset_attempt_count_period

このパラメータは、試行回数がリセットされるまでの時間(秒単位)を定義します。デフォルトでは、カウンターは30分ごとにリセットされます。

'reset_attempt_count_period' => 1800,

iptables_watching_folder

このパラメータは、iptablesサービスがShieldon Firewallからのコマンドを監視するディレクトリを定義します。この場合、一時的に'/tmp/'ディレクトリを監視しています。

その他

ここで述べられていないプロパティについては、Shieldon\Firewall\Helpersクラスのget_default_properties()関数を参照してください。

/**
 * Shieldonのコアのデフォルト設定。
 *
 * @return array
 */
function get_default_properties(): array
{
    return [
        'time_unit_quota' => [
            's' => 2,
            'm' => 10,
            'h' => 30,
            'd' => 60
        ],
        'time_reset_limit' => 3600,
        'interval_check_referer' => 5,
        'interval_check_session' => 5,
        'limit_unusual_behavior' => [
            'cookie' => 5,
            'session' => 5,
            'referer' => 10
        ],
        'cookie_name' => 'ssjd',
        'cookie_domain' => '',
        'cookie_value' => '1',
        'display_online_info' => true,
        'display_user_info' => false,
        'display_http_code' => false,
        'display_reason_code' => false,
        'display_reason_text' => false,
        'deny_attempt_enable' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_notify' => [
            'data_circle' => false,
            'system_firewall' => false,
        ],
        'deny_attempt_buffer' => [
            'data_circle' => 10,
            'system_firewall' => 10,
        ],
        'record_attempt_detection_period' => 5,
        'reset_attempt_counter' => 1800,
        'iptables_watching_folder' => '/tmp/',
    ];
}

注:これらのプロパティは、Shieldonインスタンスの初期化時またはsetPropertyまたはsetProperties APIを後で使用して設定できます。