Infrastructure/Security

xtables 를 이용한 한국 IP만 허용하도록 등록 + docker 적용

light_meal 2022. 8. 13. 21:02
728x90

xtables 를 이용한 한국 IP만 허용하도록 등록

OS Version : Ubuntu v20.04

 

ufw 활성화

sudo ufw enable

 

필수 패키지 설치

sudo apt-get update
sudo apt-get install -y curl unzip perl
sudo apt-get install -y xtables-addons-common
sudo apt-get install -y libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl

xtables-addons-common 설치 시 다음 파일들이 생성됨

 

cd /usr/lib/xtables-addons/
ls /usr/lib/xtables-addons/

 

shell script 실행하여 csv 파일 다운로드

루트로 접속해서 실행한다. 왜냐? 루트 아닌상태로 실행하면 터미널 종료된다.

source xt_geoip_dl

 

dbip-country-lite.csv 파일이 생성 된 것을 알 수 있다.

cd /usr/lib/xtables-addons/
ll

 

less dbip-country-lite.csv

 

생성된 파일을 저장할 폴더 생성 및 빌드

sudo mkdir -p /usr/share/xt_geoip/
# 빌드 파일 권한부여
sudo chmod 755 /usr/lib/xtables-addons/xt_geoip_build

# 다음 코드를 작성 yes 입력
sudo perl -MCPAN -e'install Text::CSV_XS'

 

sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/ -S /usr/lib/xtables-addons/

-D는 빌드 된 파일이 저장될 위치

-S는 빌드 할 파일이 저장된 위치

 

모듈 실행 및 확인

sudo modprobe xt_geoip
lsmod | grep ^xt_geoip

 

기본 사용방법

다음 위치에서 추가

sudo vim /etc/ufw/before.rules
# 출발지가 중국이고
# TCP 프로토콜로
# 목적지 포트가 22번이면
# ufw-before-input을 할 때
# DROP 시켜라
-A ufw-before-input -m geoip -p tcp --dport 22 --src-cc CN -j DROP

 

도커 컨테이너에 대해 포워딩을 한국 제외한 IP 차단하도록 등록

  • iptables에 직접 등록하는 방법
# 포워드 할 경우
# 172.16.0.0/12 대역 (사설ip 대역) 이 목적지 ip일 경우
# ! --src-cc KR  : 한국이 아닌 나라는
# 드랍시켜라
iptables -I FORWARD -d 172.16.0.0/12 -m geoip ! --src-cc KR -j DROP

 

  • iptables 등록한 것에 대해 저장
sudo apt-get install iptables-persistent netfilter-persistent

 

  • iptables 활성화
systemctl enable iptables
systemctl start iptables

 

  • 룰 확인 가능
vi /etc/iptables/rules.v4

 

  • 저장
service iptables save

netfilter-persistent save # 저장 후
netfilter-persistent start # 로드

 

참고

https://www.2cpu.co.kr/lec/4201

728x90