설정

Shieldon 방화벽에는 사용자가 동작을 사용자 정의하는 데 사용할 수 있는 풍부한 구성 세트가 있습니다. 다음은 구성 가능한 속성에 대한 설명입니다:

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);

기본값

유형
time_unit_quota 배열 ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]
time_reset_limit 정수 3600
interval_check_referer 정수 5
interval_check_session 정수 30
limit_unusual_behavior 배열 ['cookie' => 5, 'session' => 5, 'referer' => 10]
cookie_name 문자열 ssjd
cookie_domain 문자열 "

매개변수

time_unit_quota

이 설정을 사용하면 특정 시간 단위를 기준으로 웹 사이트의 사용자에 대한 페이지 조회 수 제한을 정의할 수 있습니다. 배열의 키는 's' (초), 'm' (분), 'h' (시간) 및 'd' (일)이며, 각 키는 해당 시간 단위에 대한 사용자 당 페이지 조회 수 제한과 대응합니다. 기본값은 ['s' => 2, 'm' => 10, 'h' => 30, 'd' => 60]입니다.

  • 배열
설명
s 정수 방문자당 페이지 조회 수
m 정수 방문자당 페이지 조회 수
h 정수 방문자시간당 페이지 조회 수
d 정수 방문자당 페이지 조회 수
  • 단순히 사용자가 하루에 100페이지를 제한하려면, s, m, h를 매우 큰 수로 설정하고 d100으로 설정하면 됩니다.

  • 사용자가 제한에 도달하면 일시적으로 차단되며, Captcha를 해결하여 차단을 해제할 수 있습니다. 따라서 값이 너무 느슨하게 설정되지 않도록 주의하십시오. 그렇지 않으면 이 라이브러리를 사용하는 의미가 없습니다.

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]입니다.

웹 사이트의 방문자에 대해 이상한 동작으로 표시되는 제한과 할당량을 설정합니다.

  • 배열
설명
cookie 정수 JavaScript에 의해 생성된 쿠키
session 정수 PHP 세션
referer 정수 HTTP_REFERER

cookie_name

이 속성은 Shieldon이 사용하는 쿠키의 이름을 지정하는 데 사용됩니다. 기본값은 ssjd입니다.

cookie_domain

이 속성은 쿠키가 제한되는 도메인을 정의합니다. 기본적으로 쿠키는 서버의 모든 하위 도메인에서 사용할 수 있습니다.

deny_attempt_enable

이 옵션을 활성화하면 Shieldon은 연속적인 CAPTCHA 실패를 기록합니다. 사용자가 지정된 제한에 도달하면 Shieldon은 해당 IP를 룰 테이블에서 차단된 IP로 분류합니다. 새로운 데이터 주기가 시작될 때까지 이 차단은 유지됩니다.

차단된 사용자는 경고 페이지에 여전히 액세스할 수 있습니다. 그러나 CAPTCHA를 일관되게 풀지 못한다면, 그들은 인간이 아닐 가능성이 높습니다. 이에 Shieldon은 그들을 시스템 방화벽의 차단 목록에 추가하여 영구적으로 차단합니다.

기본값:

'deny_attempt_enable' => [
        'data_circle'     => false,
        'system_firewall' => false,
    ],

record_attempt_detection_period

Facebook, Line 등에서 웹 페이지의 스냅샷을 가져오는 등 소셜 플랫폼 봇을 iptables 방화벽에 추가하는 것을 방지하기 위해, 아래의 값을 조정하여 필요에 맞게 조정해야 합니다. (단위: 초)

기본값:

'record_attempt_detection_period' => 5,

reset_attempt_counter

이 매개변수는 시도 횟수 카운터가 리셋되는 시간(초)을 결정합니다. 이 경우, 카운터는 30분마다 리셋됩니다.

기본값:

'reset_attempt_counter' => 1800,

iptables_watching_folder

이 매개변수는 iptables 서비스가 Shieldon 방화벽으로부터의 명령을 감시하는 디렉토리를 정의합니다. 여기서는 임시 /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를 사용하여 설정할 수 있습니다.