Ubuntu 20.04 GeoIP UFW Àû¿ë
https://www.ehostidc.co.kr/hosting/domestic.php (1040)https://www.ehostidc.co.kr/cscenter/consulting.php (1004)
Ubuntu 20.04 버전의 기본 방화벽은 UFW이며 UFW에 GeoIP 를 적용하는 방법입니다.
- UFW 활성화
1-1. UFW 활성화 |
#sudo ufw enable |
- 필수 패키지 설치
2-1. 필수 패키지 설치 |
#sudo apt-get update #sudo apt-get -y upgrade #sudo apt-get install curl unzip perl #sudo apt-get install xtables-addons-common #sudo apt-get install libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl |
2-2. db-ip 의 무료 GeoIP 데이터베이스 다운 |
#sudo ./usr/lib/xtables-addons/xt_geoip_dl xt_geoip_dl 이라는 GeoIP csv 파일 자동 다운 및 압축해제 스크립트가 생성됩니다. 쉘 스크립트 실행 시 현재 위치에 dbip-country-lite.csv 파일이 생깁니다. |
2-3. GeoIP DB 빌드 |
#sudo mkdir /usr/share/xt_geoip/ #sudo chmod 755 /usr/lib/xtables-addons/xt_geoip_build -> 빌드 파일 권한 부여 #sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/ -S / -> -D 뒤에 빌드 된 파일 저장 위치 -S 뒤에 상단에서 받은 dbip-country-lite.csv 파일이 있는 위치 |
2-4. 프로그램 실행 |
#sudo modprobe xt_geoip #lsmod | grep ^xt_geoip |
- 방화벽 적용
3-1. 방화벽 적용 |
테스트를 위해 ping.chinaz.com 에서 통신 체크 적용 전 적용 후 테스트를 위해 tool.chinaz.com/port/ 에서 포트 체크 적용 전 적용 후 |
#sudo vi /etc/ufw/before.rules -> 해당 파일에 정책 삽입 #sudo ufw reload -> 정책 추가 후 ufw 리로드로 정책 적용 Ex) -A ufw-before-input -m geoip -p tcp --dport 22 --src-cc CN -j DROP -> 출발지 IP가 중국IP이면 22번 포트 차단 Ex) -A ufw-before-input -m geoip -p icmp --icmp-type echo-request --src-cc CN -j DROP |
- 추가 스크립트
4-1 추가적인 스크립트 |
#sudo vi /usr/local/bin/geo_auto_update.sh -> 자동 설치 스크립트 파일 생성 후 하단 내용 복사 mkdir로 /usr/share/xt_geoip 폴더 생성 필요 #!/bin/bash #무료 DB 자동 다운로드 wget -O /usr/share/xt_geoip/dbip-country-lite.csv.gz "https://download.db-ip.com/free/dbip-country-lite-$(date +'%Y-%m').csv.gz" #해당 월의 무료 DB가 없을 경우 전월 DB 다운로드 if [ $? -ne 0 ]; then wget -O /usr/share/xt_geoip/dbip-country-lite.csv.gz "https://download.db-ip.com/free/dbip-country-lite-$(date -d '-1 month' +'%Y-%m').csv.gz" fi # 받은 DB파일 압축 해제 gunzip /usr/share/xt_geoip/dbip-country-lite.csv.gz #csv 파일 빌드 /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/ -S /usr/share/xt_geoip/ #기존 DB파일 삭제 rm /usr/share/xt_geoip/dbip-country-lite.csv exit $? |
상단 스크립트 작성 후 월 1회 실행 cronjob 설정 시 매월 GeoIP DB 업데이트 가능 |
참고 : https://ultramookie.com/2020/10/geoip-blocking-ubuntu-20.04/