리눅스맨

dDos 공격

dDos 공격 route 방어 기술

dDos 공격

제일 아까운 기술 중 하나라고 보는 dDos 공격 기술은 좋은 의미로는 서버를 해킹까지하여 지식의 과시라고 볼 수 있지만

실제로 지금 시대에서 상대의 서버를 공격한다는 것은 악의적인 측면만 보더라도 너무 나쁜 행위이다.

dDos 공격을 막기 위해 해야할 부분은 방화벽 부분인데 대부분 iptable을 이용하여 아이피를 차단하는 경우가 많다.

나 역시 따로 방화벽 장비를 구성하지않다보니 AWS 유료서비스보다는 단순 무식한 route 명령어로 ip를 차단하는 방법을 주로 사용한다.

이 방법은 서버를 직접 운영할 경우에 route명령어를 apache 계정으로 실행 할 수 있을때 가능하다.

dDos 공격
dDos 공격 route 방어 기술 3

아파치 권한을 우선 visudo 설정에 넣는다

www-data 계정이라면

www-data ALL=(ALL) NOPASSWD: /sbin/route

apache 계정이라면

apache ALL=(ALL) NOPASSWD: /sbin/route

이렇게 입력한다.

그리고 워드프레스에서 명령어를 아래처럼 넣으면 된다.
$cmd = “sudo /sbin/route add -host $ip reject”;
shell_exec($cmd);

워드프레스 스니핏 자동화

이를 워드프레스에서 스니핏을 이용하여 자동화시키는 방법은 아래와같다

// 아래 링크를 통해 사용방법을 꼭 확인하고 사용하세요!! - 프로그래머 문호영
// https://snippets.stofarm.com/iptables

// 최상단에서 차단될 접근 횟수와 접근 제어할 페이지 리스트 설정
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);
			header("Location: https://snippets.stofarm.com/from_iptables");
            wp_die('Your IP has been blocked.'); 
        }
    }
}

add_action('init', 'check_and_block_ip');

이 코드를 이용할 경우 1분동안 20회 공격이 들어오면 자동으로 IP가 차단되게 된다.


게시됨

카테고리

작성자

태그: