보곤(Bogon) IP 차단 방법은?
인터넷에는 공인IP만 다닐 수 있는데 사설IP나 예약된 다른 IP 대역이 들어올 수는 없습니다.
공인IP가 아니기 때문에 중간에 라우팅이 안되기 때문에 그렇지요.
하지만 문제는 정상적인 사용자도 있을 수 있기 때문 프록시 서버를 통해서 들어오는 경우인데 이런 경우는 프록시서버의 IP를 막을 수는 없습니다.
막는 통로는 방화벽, 웹서버, 프로그램 등을 통해서 막는 방법이 있겠지만 여기서 배포방식이 아닌 오래전에 대형 업체에서 많이 사용하는 방법으로 갱신시키는 형태로 적용을 시킨다면 모니터링과 대응이 빠른 프로그램을 이용하는것도 괜찮습니다.
function blockBogonIp(): void
{
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$clientIp = trim($ips[0]);
// IP 형식 자체가 잘못된 경우 차단
if (!filter_var($clientIp, FILTER_VALIDATE_IP)) {
header('HTTP/1.1 403 Forbidden');
exit('Access Denied: Invalid IP.');
}
// 사설 / 예약 IP 차단
if (!filter_var(
$clientIp,
FILTER_VALIDATE_IP,
FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE
)) {
header('HTTP/1.1 403 Forbidden');
exit('Access Denied: Bogon IP detected.');
}
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
blockBogonIp();
}
AWS처럼 앞단의 방화벽에서 전문적인 담당자가 있으면 이미 알아서 잘 하고 계시겠지요.
하지만 중소규모에선 느려터진 방법보다는 빠르게 대응 할 수 있는 방법을 사용한다면 모니터링 하면서 확실히 문제 없다고 판단이 되면 그때 막으면 됩니다.
( 오버 엔지니어링을 조심 하세요~ )
