RedCastle의 서버방화벽을 이용해 중국 IP접속 차단하기

RedCastle은 SecureOS 입니다.

IT인프라의 네트워크 또는 응용프로그램의 취약성을 뚫고 서버 내부로 침투한 이후, 해커의 행위를 통제할 수 있는…어찌보면 보안인프라 중에서도 최후의 보루라 할 수 있죠. 최후의 보루라는 이유는 해커가 서버 운영체제의 SuperUser 권한이나 어플리케이션 관리자 권한을 탈취한 뒤에도 방어가 가능한 유일한 보안 솔루션이기 때문입니다.

SecureOS 이외의 어떤 보안 솔루션도 root 권한…Administrator 권한을 획득한 해커의 공격을 막아낼 수 있는 솔루션은 없습니다. 물론 RedCastle도 한계는 있지만 타 보안 솔루션과 비교할바는 아닙니다.

하지만 RedCastle을 도입한 많은 기관이나 기업에서는 여전히 네트워크를 통해 서버에 접근하는 것을 차단하는데 총력을 기울이고 있습니다. 그리고 그러한 노력은 당연한 것입니다. 서버에 접근하기 전에 위험한 접근은 차단하는 것이 정답이죠. 그래서 RedCaslte에서 제공하는 서버방화벽 기능을 이용해 내외부에서의 접근을 통제하는 경우가 많습니다.

그런데 가끔은 참 어려운 요구를 하는 경우도 있습니다. 바로 중국 때문입니다.

중국의 IP 대역

RedCastle에서 제공하는 방화벽은 SW 방화벽입니다. 그리고 서버 자원인 CPU를 사용합니다. 때문에 너무 많은 방화벽 정책을 적용하기에는 무리가 따릅니다. 그래서 개인적으로는 100라인 이내에서 정책을 적용하는 것을 권장합니다. 그럼에도 “중국”은 모두 막고 싶다는 요청을 하기도 합니다.

중국의 IP 대역은 무척 많습니다. 상상을 초월합니다. KRNIC에서 제공하는 웹페이지에 가면 각 국가별로 필터링이 가능한 IP 대역이 포함된 CSV파일을 다운받거나 조회할 수 있습니다. (KRNIC의 국가별 IP대역 현황)

그 CSV 파일을 살펴보면 다음과 같은 구조로 되어 있습니다.

20150819,CN,43.224.208.0,43.224.211.255,/22,20141126
20150819,CN,43.224.212.0,43.224.215.255,/22,20141126
20150819,CN,43.224.216.0,43.224.219.255,/22,20141126
20150819,IN,43.224.220.0,43.224.223.255,/22,20141126
20150819,CN,43.224.224.0,43.224.227.255,/22,20141127
20150819,HK,43.224.228.0,43.224.231.255,/22,20141127
20150819,HK,43.224.232.0,43.224.235.255,/22,20141127
20150819,PK,43.224.236.0,43.224.239.255,/22,20141127
20150819,CN,43.224.240.0,43.224.243.255,/22,20141127
20150819,HK,43.224.244.0,43.224.247.255,/22,20141127
20150819,TW,43.224.248.0,43.224.249.255,/23,20141128
20150819,NZ,43.224.250.0,43.224.251.255,/23,20141205
20150819,IN,43.224.252.0,43.224.255.255,/22,20141128
20150819,IN,43.225.0.0,43.225.3.255,/22,20141128
20150819,SG,43.225.4.0,43.225.7.255,/22,20141129
20150819,HK,43.225.8.0,43.225.11.255,/22,20141129
20150819,AU,43.225.12.0,43.225.15.255,/22,20141201
…. (생략) ….

각 칼럼은 쉼표(,)로 구분되어 있고 기준일, 국가코드, 시작IP, 끝IP, 프리픽스(CIDR), 할당일자 순서로 되어 있습니다.

전세계 인터넷 IP를 할당받은 모든 국가에 할당된 정보가 포함되어 있는 이 파일은 15만라인이 넘습니다. 그리고 중국의 국가코드인 CN이 포함된 라인은 5825라인입니다. 어마무시하죠. 즉 RedCastle의 서버 방화벽에 최대 5825라인이 들어갈 수도 있다는 이야깁니다.

RedCastle에서 중국IP 차단 방화벽 정책 적용하기

대부분의 기업과 기관에서는 네트워크 방화벽에서 해외 접속을 차단합니다만… 일부 중소기업이나 작은 쇼핑몰 등에서는 값비싼 방화벽 장비를 도입할 수 없는 경우가 많습니다. 제대로 보안을 강화하자면 DMZ 앞단에 외부방화벽을… DMZ와 내부망 사이에 또하나의 방화벽을 두어야 하기 때문이죠. (물론 방화벽 한대로 할 수도 있습니다만..)

그렇기 때문에 포트스캐닝이나 불법적 접속 시도와 같은 기본적인 네트워크 보안도 수행하고 홈페이지 소스파일 위변조도 차단하고 내부 사용자에 대한 보안도 강화하기 위해 이 모두를 한꺼번에 수행할 수 있는 서버보안 제품을 도입하는 경우가 종종 있습니다.

그리고 그런 경우 웹서버 앞단에 방화벽이 없는 경우가 대부분이기 대문에 “중국IP를 모두 차단하고 싶다”는 요구가 이따금씩 발생합니다. 그러기 위해서는 앞에서 살펴본 중국 IP를 차단하는 방화벽 정책을 적용해야 하는데… 이 작업을 수동으로 하자면 끝이 없습니다. 불가능하죠. 중국의 IP 대역을 일일히 네트워크 그룹에 등록해야하고 등록된 네트워크 그룹을 이용해 차단 정책을 넣어줘야 합니다.

그래서 위의 전세계 IP 대역이 포함된 파일에서 중국의 IP 대역만 찾아 네트워크 그룹으로 등록하고 차단 정책을 만들어 주는 쉘 스크립트를 작성했습니다.

소스는 무척 짧습니다.

# cnb.sh (리눅스에서만 테스트 됨)#!/bin/bash

f_geoip=ipv4.csv

IPCT=1
NETCT=1
IPSTR=””
MASKSTR=””

for IPRANGE in `egrep “CN” $f_geoip | cut -d, -f3,5`
do

if [ $IPCT -gt 20 ]; then
echo “network count is $NETCT. initialize…”

echo “CHINA$NETCT|IPV4|$IPSTR|$MASKSTR||CHINANETWORK $NETCT” >> RCFWNwk.Dat
echo “REJECT|IN|LOG|USER|TCP_ANY|CHINA$NETCT|ANY|S/SA|NONE||0|0|0|||” >> RCFW.Dat

IPCT=1
NETCT=$((NETCT + 1))

IPSTR=””
MASKSTR=””
fi
IP=`echo $IPRANGE | cut -d, -f1`
CIDR=`echo $IPRANGE | cut -d, -f2`
SUBNET=`ipcalc $IP$CIDR -m`
SUBNET=`echo $SUBNET | cut -d= -f2`

if [ $IPCT -eq 1 ]; then
IPSTR=$IP
MASKSTR=$SUBNET
else
IPSTR=$IPSTR,$IP
MASKSTR=$MASKSTR,$SUBNET
fi

IPCT=$((IPCT + 1))
done

위의 스크립트를 구동하면 291개의 네트워크 그룹과 291개의 방화벽 정책이 생성됩니다. 이 정책을 RedCastle의 방화벽 정책이 저장되는 리포지토리에 저장하고 매니저에서 불러와 적용하면 중국IP를 차단할 수 있습니다.

그리고 위의 스크립트를 조금만 수정하면 리눅스의 iptables 명령문도 만들어 자동으로 실행되도록 할 수 있습니다.

반대로… 국내에서만 서비스되는 서버라면 우리나라의 IP 대역만 접근을 허용하고 나머지는 차단하는 정책을 적용하는 것이 더 효율적입니다. (우리나라의 IP 대역도 만만치는 않습니다. 1065개나 됩니다.)

다만…

서버의 자원을 사용하는 SW 방화벽이기 때문에 서버의 성능과 네트워크 트래픽 등을 감안하여야 한다는 점을 꼭 유념해야 합니다. (그래도 다른 서버 방화벽 보다는 가볍습니다. 그 이유는 나중에…. ^^)

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top