GeoIP, iptables 로 국가별 접속 제한하기 > LINUX

본문 바로가기
사이트 내 전체검색

LINUX

GeoIP, iptables 로 국가별 접속 제한하기

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 7,761회 작성일 21-02-10 17:07

본문

###########################################
 ##  기본 방화벽 수정

####
 #    GeoIP, iptables 로 국가별 접속 제한하기
#    http://webzero.tistory.com/653      (명령어 위주로 설명되어 있음)
 #    http://blog.cafe24.com/m/post/2023#  (좀더 자세함)
 ####

 #컴파일러 설치, 커널컴파일, 필요 패키지 설치, iptable 패치
root]# yum install gcc gcc-g++ make automake unzip zip xz kernel-devel-'uname -r' iptables-devel


 #rpm 모듈 설치  (# getconf LONG_BIT 로 비트 확인)
root]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm  (32bit)
 root]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm  (64bit)
 -->  에러 시 http://pkgs.repoforge.org/rpmforge-release/  에서 파일 다운 후 rpm 설치


#파일 라이브러리 설치
root]# yum install perl-Text-CSV_XS


 #iptables 에드온 설치
root]# cd /usr/local/src
 root]# wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/1.37/xtables-addons-1.37.tar.xz
 root]# tar xvf xtables-addons-1.37.tar.xz
 root]# cd xtables-addons-1.37
 root]# ./configure --libdir=/usr/lib64
 root]# make
 root]# make install

    - 정상적으로 컴파일이 되었다면  /lib64/xtables/libxt_geoip.so 파일이 생성되어있어야 한다.
    1. 에러시 조치방법
    [root@fullsearch ~]# rpm -qa gcc*
    gcc-java-4.4.7-11.el6.i686
    gcc-4.4.7-11.el6.i686
    gcc-c++-4.4.7-11.el6.i686
    gcc-gfortran-4.4.7-11.el6.i686

    2. 설치중 아래와 같은 에러가 발생할 경우 해당 소스를 # 처리해주면 된다]
    Xtables-addons 1.37 - Linux 2.6.32-431.el6.x86_64
    if [ -n "/lib/modules/2.6.32-431.el6.x86_64/build" ]; then make -C /lib/modules/2.6.32-431.el6.x86_64/build M=/usr/local/src/xtables-addons-1.37/extensions modules; fi;
    make[3]: Entering directory `/usr/src/kernels/2.6.32-431.el6.x86_64'
      CC [M]  /usr/local/src/xtables-addons-1.37/extensions/xt_RAWNAT.o
    /usr/local/src/xtables-addons-1.37/extensions/xt_RAWNAT.c: In function ‘rawnat6_prepare_l4’:
    /usr/local/src/xtables-addons-1.37/extensions/xt_RAWNAT.c:183: error: too few arguments to function ‘ipv6_find_hdr’
    make[4]: *** [/usr/local/src/xtables-addons-1.37/extensions/xt_RAWNAT.o] 오류 1
    make[3]: *** [_module_/usr/local/src/xtables-addons-1.37/extensions] 오류 2
    make[3]: Leaving directory `/usr/src/kernels/2.6.32-431.el6.x86_64'
    make[2]: *** [modules] 오류 2
    make[2]: Leaving directory `/usr/local/src/xtables-addons-1.37/extensions'
    make[1]: *** [all-recursive] 오류 1
    make[1]: Leaving directory `/usr/local/src/xtables-addons-1.37'
    make: *** [all] 오류 2

    해결을 위해서는 mconfig 라는 파일에서 아래 세개를 주석처리해주면 된다.
    하다보면 몇개정도 에러가나는데 그때마다 해당 모듈을 주석처리한다.
    build_RAWNAT=m
    build_SYSRQ=m
    build_length2=m



 # geoip 모듈 셋팅!
root]# cd geoip
 root]# ./xt_geoip_dl
-- xt_geoip_dl 스크립트  에러시 ----------
rm -f GeoIPv6.csv{,.gz} GeoIPCountryCSV.zip GeoIPCountryWhois.csv
 wget http://geolite.maxmind.com/download/geoip/database/GeoIPv6.csv.gz
 wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
 gzip -d GeoIPv6.csv.gz
 unzip GeoIPCountryCSV.zip
 ------------------------------------
 root]# ./xt_geoip_build GeoIPCountryWhois.csv
--> ls -al 명령어로 보면 2개의 파일이 생성되고 BE,LE 라는 디렉토리가 볼 수 있을것이다.

root]# mkdir -p /usr/share/xt_geoip/
 root]# cp -r {BE,LE} /usr/share/xt_geoip/
 root]# cd /lib64/xtables/
 root]# cp libxt_geoip.so libipt_geoip.so



 # iptables 스크립트 샘플  (하단에 스크립트에 추가)
 #
 # iptables -A INPUT -p tcp -m geoip ! --src-cc KR -j DROP  (국내 이외의 접근 막음)
 # iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc KR -j ACCECP  (국내 IP만 22번 포트 허용)
 # iptables -I INPUT -m geoip --src-cc CN -j DROP  (중국아이피 막기)



 #############################################################################
 # Generated by iptables-save v1.4.7 on Wed Aug  6 13:58:14 2014
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [1:132]
 :RH-Firewall-1-INPUT - [0:0]
 -A INPUT -j RH-Firewall-1-INPUT
 -A FORWARD -j RH-Firewall-1-INPUT
 -A RH-Firewall-1-INPUT -i lo -j ACCEPT
 -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 ## home
 -A RH-Firewall-1-INPUT -p tcp -m tcp -s 111.111.111.111 -j ACCEPT

 ## backup server
 -A RH-Firewall-1-INPUT -m state --state NEW -s 111.111.111.111 -m tcp -p tcp -j ACCEPT

 ##mDNS
 -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
 -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 53 --syn -j ACCEPT
 -A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT

 ######  GeoIP Start #####
 ### 구글허용
-A RH-Firewall-1-INPUT -m iprange --src-range 66.249.64.0-66.249.95.255 -m tcp -p tcp --dport 80 -j ACCEPT
 ### 트위트 허용
-A RH-Firewall-1-INPUT -m iprange --src-range 199.59.148.0-199.59.150.255 -m tcp -p tcp --dport 80 -j ACCEPT
 ###페이스북 허용
-A RH-Firewall-1-INPUT -m iprange --src-range 31.13.0.0-31.13.255.255 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 66.220.144.0-66.220.160.255 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 69.63.176.0-69.63.186.255 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 69.171.224.0-69.171.255.255 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 74.119.76.0-74.119.76.22 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 173.252.64.0-173.252.255.255 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 103.4.96.0-103.4.96.22 -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m iprange --src-range 204.15.20.0-204.15.20.22 -m tcp -p tcp --dport 80 -j ACCEPT
 ## 모든 해외 트래픽 차단
-A RH-Firewall-1-INPUT -p tcp -m geoip ! --src-cc KR -j DROP
 ######  GeoIP End #####

 ## 서비스포트
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT

 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
 COMMIT
 # Completed on Wed Aug  6 13:58:14 2014

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

  • 게시물이 없습니다.

접속자집계

오늘
420
어제
3,408
최대
6,642
전체
1,129,535
contact : webmaster@beautipia.co.kr
Copyright © beautipia.co.kr. All rights reserved.