DDoS 방어 스니핏 코드

워드프레스 오류 500에러 관리자 해킹 당해 접속안될때 방어전략

워드프레스 오류

워드프레스 오류 해킹으로 관리자 접속 안될때

이미 워드프레스 블로그를 접속할 수 없을 상태이지만..

아래 과정은 접속 되는 시점에 필히 등록해야합니다.

플러그인: Snippets 액션 추가

워드프레스 오류 대비한 스니핏 소스 추가

추가 항목은 아래 내용 그대로 복사 붙여넣기 하면 됩니다.

소스코드에 대한 설명은 아래 링크를 클릭하면 자세한 방법을 알 수 있습니다

사용방법부터 확인하고 설치해보세요
// 최상단에서 차단될 접근 횟수와 접근 제어할 페이지 리스트 설정
define('MAX_ACCESS_COUNT', 20);
define('BLOCKED_URLS', serialize(array('/xmlrpc.php', '//xmlrpc.php', '/wp-admin/admin.php')));

function should_block_ip($ip) {
    $access_count = get_transient('access_count_' . $ip) ?: 0;
    if ($access_count >= MAX_ACCESS_COUNT) {
        return true;
    }
    return false;
}

function block_ip_with_route($ip) {
    $cmd = "sudo /sbin/route add -host $ip reject";
    shell_exec($cmd);
}

function unblock_ip_with_route($ip) {
    $cmd = "sudo /sbin/route del -host $ip reject";
    shell_exec($cmd);
}

function check_and_block_ip() {
    $client_ip = $_SERVER['REMOTE_ADDR'];
    $current_url = $_SERVER['REQUEST_URI'];

    $blocked_urls = unserialize(BLOCKED_URLS);

    if (in_array($current_url, $blocked_urls) || is_404()) {
        $access_count = get_transient('access_count_' . $client_ip) ?: 0;
        set_transient('access_count_' . $client_ip, ++$access_count, 60); // 1분 동안 저장

        if (should_block_ip($client_ip)) {
            block_ip_with_route($client_ip);
            wp_die('Your IP has been blocked.'); 
        }
    }
}

add_action('init', 'check_and_block_ip');

위의 내용을 추가하면 아래처럼 됩니다. Description 설명부분은 알아서 입력하면 되고요 태그항목도 정렬을 위한 부분이니 생략해도 상관없습니다.

워드프레스 해킹 방어

이렇게 해놓으면 실수로 내가 F5번을 관리자에서 엄청 빠르게 누르지 않고선 차단이 되진 않습니다. 처음에 실수로 모든 페이지에 위 항목이 적용되도록 했더니 ip 차단당해서 제가 제 서버에 접속을 할 수 없었네요.

지금은 2개의 URL에 대해 접근을 제어하므로 일부로 F5버튼을 누르지만 마세요.

예전에 만든 스니핏도 있는데

이 모델이 서버의 명령어 접근이 안될 경우 이전 스니핏을 사용해보세요

DDoS 방어 스니핏 PHP 소스코드 1분 10회공격 IP차단

DDoS 또는 워드프레스 해킹 당하기 이전에 왜 방화벽이 필수인지 어느정도 감을 잡기 시작할겁니다. 로알남이 왜 자신의 서버에 2중으로 DNS 방화벽을 걸어놓고 사용하는지 이해가 됩니다. 아님 말궁~

로알남 워드프레스 블로그 사이트 주소에 2중 DNS 방화벽 쓰는 이유

댓글

댓글 남기기