linux

해외 IP 차단

우유빛 2024. 5. 8. 15:07

온갖 해외 ip로 서버 해킹을 하려 하고

 

온갖 사진들을 추출하고 트레픽이 이만 저만이 아니다.

 

어느정도 서버 관리 능력이 있으면 GEOIP를 사용하고

 

초보자들은 사용하기에 너무 복잡하니 아래와 같은 방법으로 진행한다.

 

.htaccess 나 vhost 쪽에 설정해도 되나 귀찮으니

 

1. 서버 접속시 php 부터 호출하도록

$ php --ini // php.ini파일 확인 후 아래 항목 추가한다.

   auto_prepend_file = "/home/chkip/config.php"

 

2. config.php 작성

헤더쪽 오류가 있을 경우 ob_start() ob_end_flush() 주석처리한다.

<?php

//ob_start();

//session_start();

 

$userIp = $_SERVER['REMOTE_ADDR'];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://get.geojs.io/v1/ip/country/" . $userIp);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($curl);

if ($response === false) {
    curl_close($curl);
    die('Error in connecting to GeoJS API: ' . curl_error($curl));
}
curl_close($curl);

// 받은 응답을 JSON 객체로 변환합니다.
$responseData = json_decode($response, true);

// 국가 코드를 추출합니다.
$countryCode = $responseData['country'];

if ($countryCode !== 'KR')

{
    header('HTTP/1.1 403 Forbidden');
    echo 'bye';
    exit;
}
//ob_end_flush();
?>

 

서버 관리는 항상 조심조심