Kernel 2.6.22 geoip, connlimit적용
SMILESERV
Jump to: navigation, 찾기
1. patch-o-matic-ng, iptables, 커널 소스, geoip-match-patch 다운로드
patch-o-match-ng --> ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
IPTABLES --> ftp.netfilter.org/pub/iptables
KERNEL --> ftp.kernel.org/pub/linux/kernel
geoip-match.patch -->http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz
* 되도록 /usr/src로 해당 파일들을 위치시키는 것이 오류가 나지 않음
커널 make시에 용량이 커지므로 /usr 파티션 용량이 모자랄경우 다른 파티션에 커널 이미지를 풀고
ln -s 커널이미지경로 /usr/src/linux로 심볼릭 링크를 걸어준다.
2. geoip, connlimit 커널에 패치
tar xfz patch-o-matic-ng-XXXXXX.tar.gz
cd patch-o-matic-ng
IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme --download --> patch-o-matic에서 geoip 및 기타 다른 패키지를 자동으로 다운로드 하여 설치
IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme geoip --> 커널에 geoip 패치
IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme connlimit --> 커널에 connlimit 패치
cd /usr/src/linux/net/ipv4/netfilter/
cp /usr/src/geoip-match-2.6.22.patch /usr/src/linux/net/ipv4/netfilter/
patch -p1 < geoip-match.patch --> 위 명령 실행시 패치 할 원본 파일을 묻게되며 원본 파일은 ipt_geoip.c를 입력해야 하며 커널 2.6.22는 ipt_geoip.c를 패치해 주어야 make에서 오류가 발생하지 않음
3. 커널 컴파일 --> 커널 컴파일 관련 모든 명령은 커널소스 디렉토리 내에서 실행해야함
3-1 make memuconfig 아래 항목에서 geoip 및 connlimit선택, connlimit의 경우 해당 Netfilter Configuration 하위 메뉴에 있는 모든 메뉴를 선택해 주어야 make상에서 오류가 발생하지 않음 -> Device Drivers -> Networking support -> Networking support -> Networking options -> Network packet filtering (replaces ipchains) -> IP: Netfilter Configuration -> [*] geoip match support
3-2 make --> 커널 버전 변동없이 geoip만 추가 할 경우는 아래의 순서로 컴파일을 진행함
make oldconfig
make modules
make modules_install
3-3 make modules
3-4 make modules_install
3-5 make install
4. 국가 DB 최신 정보로 업데이트
geoip 모듈은 /var/geoip 경로의 DB파일 참조함
- CSV 파일 변환 wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz tar zxfp csv2bin-20041103.tar.gz cd csv2bin make
- 국가별 DB 다운로드 wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip unzip GeoIPCountryCSV.zip ./csv2bin ../GeoIPCountryWhois.csv mkdir /var/geoip cp geoipdb.bin /var/geoip/ cp geoipdb.idx /var/geoip/
cp /usr/src/iptables/iptables /sbin -> iptables 소스파일의 iptables를 /sbin으로 복사
5. IPTABLES geoip 룰 적용
예제)
- 일본과 미국에서의 웹 접속을 차단하고 다른 곳에서의 접속은 허용할 때
iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc JP,US -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
또는 iptables -A INPUT -p tcp --dport 21 -m geoip ! --src-cc KR -j DROP
[출처] iptables-connlimit & geoip 설치설정|작성자 친절한 지게꾼