728x90
리눅스 기반 시스템에서 GeoIP 모듈과 connlimit 모듈을 설치하고 구성하여 특정 국가에서 오는 접근을 효과적으로 차단하거나 제한하는 방법입니다.
적용 환경 및 전제 조건
- OS 버전 : CentOS 4.x / 5.x
- Kernel : Linux Kernel 2.6.x (예시: 2.6.18.4)
- iptables : iptables 1.3.x 또는 1.4.x 버전
- 주요 소스 및 패치 :
linux
,iptables
,patch-o-matic-ng
,GeoIP Database
전체 설치 절차 및 명령어
1. 소스 및 필요한 파일 다운로드
# 커널 소스
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.4.tar.bz2
# iptables 소스
wget ftp://ftp.netfilter.org/pub/iptables/iptables-1.3.5.tar.bz2
# patch-o-matic-ng
wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-2023xxxx.tar.bz2
# GeoIP DB 및 변환 스크립트
wget https://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
2. 소스 압축 해제 및 심볼릭 링크 생성
cd /usr/src
tar xvjf linux-2.6.18.4.tar.bz2
tar xvjf iptables-1.3.5.tar.bz2
tar xvjf patch-o-matic-ng-2023xxxx.tar.bz2
ln -s linux-2.6.18.4 linux
ln -s iptables-1.3.5 iptables
3. kernel 및 iptables에 GeoIP, connlimit 패치 적용
cd /usr/src/patch-o-matic-ng-2023xxxx
IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme --download
IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme geoip connlimit
오류 발생시 추가로 Makefile.ladd 적용:
cat patchlets/geoip/linux-2.6/net/ipv4/netfilter/Makefile.ladd >> /usr/src/linux/net/ipv4/netfilter/Makefile
4. 커널 컴파일 준비 및 GeoIP, connlimit 활성화
cd /usr/src/linux
make menuconfig
설정항목 위치
Networking --->
[*] Networking support
Networking options --->
[*] Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
<M> geoip match support
<M> Connection limit match support (connlimit)
5. 커널 컴파일 및 설치
make bzImage
make modules
make modules_install
make install
6. iptables 컴파일 및 설치
cd /usr/src/iptables
make && make install
7. 최신 GeoIP Database 적용
unzip GeoIPCountryCSV.zip
tar xvzf csv2bin-20041103.tar.gz
cd csv2bin
make
./csv2bin ../GeoIPCountryWhois.csv
mkdir -p /var/geoip
cp geoipdb.bin geoipdb.idx /var/geoip/
8. GeoIP 모듈 로드
insmod /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter/ipt_geoip.o
lsmod | grep geoip
iptables GeoIP 활용 규칙 예시
- 한국 이외 모든 국가 접근 차단
iptables -A INPUT -m geoip ! --src-cc KR -j DROP
- 특정 국가 차단 (예: 중국, 미국, 일본에서 웹 접근 차단)
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc CN,US,JP -j DROP iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 한국만 FTP 접속 허용
iptables -A INPUT -p tcp --dport 21 -m geoip --src-cc KR -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j DROP
connlimit 활용 예시 (연결 제한 설정)
- 특정 국가 IP가 동시에 10개 이상의 TCP SYN 접속 시도 시 차단
iptables -A INPUT -p tcp --syn -m geoip --src-cc CN -m connlimit --connlimit-above 10 -j DROP
운영 및 점검 포인트
- 주기적 업데이트
- 매월 1회 이상 GeoIP Database 최신화
- 로그 분석 및 모니터링
/var/log/messages
, Apache 로그 등을 활용하여 차단된 접근 모니터링
- 모듈 및 커널 버전 업그레이드 시 모듈 재빌드 필수
- 운영 룰 변경 전 반드시 테스트 환경에서 사전 검증
- connlimit 설정은 서비스 영향 없도록 적정값 설정
국가코드 주요 예시
국가 | 코드 |
---|---|
대한민국 | KR |
중국 | CN |
일본 | JP |
미국 | US |
독일 | DE |
싱가포르 | SG |
네덜란드 | NL |
- 국가 코드 전체 목록 확인
이를 통해 GeoIP와 connlimit을 iptables와 함께 운영하여 보안성을 높이고 특정 국가 및 IP 대역의 무차별 공격 시도를 효과적으로 차단할 수 있습니다.
728x90
그리드형(광고전용)
댓글