oops-firewall에서 국가 기반의 filtering을 하기 위해서는 kmod-geoip가 설치되어 있어야 하고, Netfilter용 GeoIP database를 생성해야 합니다. (kmod-geoip 설치시에 post script 작업으로 2~3분 정도 설치 중 먹통이 된 것 같은 느낌이 나니, 인내하시기 바랍니다.)
안녕 리눅스에서는 이 작업을 간편하게 하기 위하여 geoip-csv2bin 이라는 실행 명령을 제공합니다.
주의!!
GeoIP database를 배포하는 Maxmind의 경우, 연속해서 2번 이상의 다운로드를 시도하면 하루 동안 IP를 block 시켜 버립니다. 그렇기 때문에 여러 대에서 GeoIP database를 사용한다면 각 서버에서 다운로드를 받지 말고, 한 대의 서버에서 다운로드를 받은 후에, 사용할 서버들로 배포하는 정책을 취하시기 바랍니다. 안 그러면 금방 block 되어 버려 업데이트가 불가능해 집니다.
Maxmind의 Geo lite(free) database는 한달에 1회 갱신 되며, 보통 4~8일 사이에 업데이트가 됩니다. 그러므로 cronjob에 8~10일 사이에 1회 업데이트 되도록 설정해 주시면 됩니다.
* GeoIP.dat - IPv4 Country database
* GeoIPASNum.dat - IPv4 Network AS Number database
* GeoIPASNumv6.dat - IPv6 Network AS Number database
* GeoIPv6.dat - IPv6 Country database
* GeoLiteCity.dat - IPv4 City database (한국 환경에서는 매우 부정확함)
* GeoIPCountryWhois.csv - IPv4 Country database CVS format
* GeoIPv6.csv - IPv6 Country database CVS format
GeoIPCountryWhois.csv 와 GeoIPv6.csv를 이용하여 netfilter용 database 생성
* /usr/share/GeoIP/BE/ - Big endian을 사용하는 cpu용
* /usr/share/GeoIP/LE/ - intel machine용
GeoIPCountryWhois.csv 와 GeoIPv6.csv를 이용하여 netfilter용 이전 database 생성
* 안녕 리눅스 1/2 에서 사용하는 format
* geoipdb.bin
* geoipdb.idx
GeoIP database가 준비 되었다면, /etc/oops-firewall/user.conf 에서 다음의 rule을 이용하여 관리할 수 있습니다.
# Rusia로 부터의 접근을 모두 막는다.%-AINPUT-mgeoip--src-ccRU-jDROP# 한국을 제외하고 ssh 연결을 모두 막는다.%-AINPUT-ptcp--dport22-mgeoip!--src-ccKR-jDROP
다음, geoip database 업데이트를 Cronjob에 등록해 줍니다.
[root@an3 ~] cat/etc/cron.d/geoip-update# GeoIP database update cronjob## GeoIP Lite/Free database는 매월 4~7일 사이에 업데이트가 됩니다.# 그러므로, 한국 시간으로 8~10 사이에 업데이트를 등록해 놓으면 됩니다.## 여러대에서 동시에 업데이트를 하면 block이 되니 여러대를 관리할 경우# 한대에서 다운로드 받은 다음, 다른 서버로 배포하는 정책으로 운영하세요.## Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed# 매월 11일 새벽 3시 14분에 실행14311**root/usr/bin/geoip-csv2bin&> /dev/null [root@an3 ~]