EdgeRouter GeoIP Â÷´Ü / Çã¿ë À§ÇÑ Network Group ¸¸µé±â

ÄíÀö   
   Á¶È¸ 26682   Ãßõ 1    

사실 공격도 그리 많지않고 로그에 찍히는건 별로 없지만, 심신의 안정을 위해 geoip 차단을 해보고자 삽질해보고 그 결과를 올려놓습니다.
다음 단계로는 netflow 활성화 / ELK 스택으로 분석까지 해볼 예정입니다..만 쉽지않네요
혹시 하신분이 계신다면 알려주시면 감사하겠습니다



출처: https://www.cron.dk/firewalling-by-country-on-edgerouter/ 

일단 wget 은 설치되어 있다고 가정하며, 아래 모든 명령어는 ssh 상에서 진행됩니다.

EdgeRouter 12 / v2.0.9 Hotfix 4 기준 정상작동 확인했습니다.


1. {FW_GroupName} 을 필요한 networkgroup 이름으로 치환해 networkgroup 생성

> {FW_GroupName}
> {FW_GroupDescription}

configure
set firewall group network-group {FW_GroupName} description '{FW_GroupDescription}'
commit


2. 국가별 서브넷 받는 스크립트 생성.

cd ~/
mkdir GeoIP
touch GeoIP/GeoIP.sh

// 해당 GeoIP폴더 절대경로 기억해두기.
// 예를 들어 user=username인경우, /home/user/GeoIP

> contryList = "kr jp"에 원하는 국가 수정( 에시의 경우는 한국, 일본)

> /home/{user}/GeoIP/ 경로 본인 경로 맞게 수정 필요

>  아래 내용 적절히 수정해 GeoIP.sh 에 추가

vi ~/GeoIP/GeoIP.sh


#!/bin/bash
countryList="kr jp"
firewallGroupName={FW_GroupName}

#mkdir /config/zonefiles
function loadcountry () {
        firewallGroupName=$1
        country=$2

        echo "Downloading country definition for $country..." >> /var/log/alex
        wget http://www.ipdeny.com/ipblocks/data/countries/${country}.zone -O /home/{user}/GeoIP/${country}.zone -q
        echo "Adding rules to firewall group $firewallGroupName..." >> /var/log/alex
        for rule in `cat /home/{user}/GeoIP/${country}.zone`; do
                ipset add $firewallGroupName $rule
        done
}

ipset -F $firewallGroupName
for country in $countryList; do
        loadcountry $firewallGroupName $country
done


3. 권한부여 & 실행

> 권한부여

cd ~/GeoIP
chmod 755 GeoIP.sh && chmod a+x GeoIP.sh

> 실행

sudo ./GeoIP.sh

// ipset -L {FW_GroupName 을 통해 실제로 잘 작동했는지 확인 가능합니다.

// ***주의사항 - GUI 상에서는 IPset에 상기 데이터가 추가되지 않으며, 임의 수정을 하면  안됩니다.***
sudo ipset -L {FW_GroupName}


4. 매일 실행하도록 crontab 추가 

sudo crontab -e

> 실행후 다음 붙여넣기

0 5 * * * /bin/bash /home/{user}/GeoIP/GeoIP_KR.sh


해당 스크립트는 매일 새벽 05시에 스크립트 실행 - 원하는 시간, 스크립트 지정필요


5. 필요한 firewall rule 에 ip list 형태로 설정. 
------------------------------------------------------------------------------------------------------------------------------


제 국가 설정은
    허용 List : kr jp
    거부 List :  cn ru nl pl ve de hu gb rs il fi bg id in
입니다.
개인적으로 사용하는 vpn 서버, syncthing 서버에 설정해뒀는데, 잘 작동하네요.
추가로, US 같이 IP주소가 엄청나게 많은 동네를 IP리스트에 쑤셔넣으면 장비가 못버티니 화이트리스트/블랙리스트를 잘 설정해야 할듯 합니다.



Á¦¸ñPage 5496/28
°Ô½Ã¹°ÀÌ ¾ø½À´Ï´Ù.