윈도우 해외 IP 차단하기
우선은 아래 링크에서 국가별IP목록이 있는 파일을 받아줍니다.
최신버전 다운로드는 아래링크 클릭
Free updated GeoIP legacy databases
Free updated GeoIP legacy databases Here you can find regularly updated versions of the discontinued GeoIP legacy databases. Many distributions still use old GeoIP libraries, so you might find these useful. I use these on many systems myself, so consider t
mailfud.org
위 링크에서 GeoIP-legacy.csv.gz 파일을 받아 압축을 풀어 사용하면 됩니다,
파워쉘 스크립트 작성
아래의 내용에서 차단하기를 원하는 국가와 GeoIPCountryWhois.csv파일 경로를 바꾸신 후 문서 편집기로 작성 후
GeoIPCountryWhois.csv파일이 있는곳에 .ps1파일로 저장하면 됩니다.
코드는 아래 PS1 파일을 받으세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#############Config#################
$countryCode="CN" #차단할 나라의 CountryCode
#$geoIPcvsPath="c:\GeoIPCountryWhois.csv"
$geoIPcvsPath="\GeoIPCountryWhois.csv"
$ruleName="blockCountry"
#############Config#################
$geoData=Import-Csv $geoIPcvsPath -header sIP, eIP, start, end, cc, cn | where-object {$_.cc –eq $countryCode}
$geoDataTotal=$geoData.Count
$remoteIP=""
###### 룰이 있는 지 체크 ########
function ruleExistsChk ($ruleName)
{
$fw=New-object -comObject HNetCfg.FwPolicy2; # http://blogs.technet.com/b/jamesone/archive/2009/02/18/how-to-manage-the-windows-firewall-settings-with-powershell.aspx
$RuleCHK=$fw.rules | where-object {$_.name –eq $ruleName}
if(!$RuleCHK){
#$deny_rule_name + " 룰이 생성되어 있지 않습니다."; exit;
netsh advfirewall firewall add rule name="$ruleName" localip=any dir=in action=block profile="any" interfacetype="any"
}
}
###### 룰이 있는 지 체크 ########
$count=1
foreach ($geoIP in $geoData)
{
#$remoteIP+=@($geoIP.sIP+"-"+$geoIP.eIP+",") #배열로 저장.
$remoteIP+=$geoIP.sIP+"-"+$geoIP.eIP+","
#remoteAddr가 한개의 룰에 약 300개 이상이면 등록이 안됨. 안전하게 200으로 설정.
if(($count%200) -eq 0)
{
$makeRuleName=$ruleName+$countryCode+$count
ruleExistsChk($makeRuleName)
netsh advfirewall firewall set rule name=$makeRuleName new remoteip="$remoteIP"
$remoteIP=""
}elseif($geoDataTotal -eq $count){
$makeRuleName=$ruleName+$countryCode+$count
ruleExistsChk($makeRuleName)
netsh advfirewall firewall set rule name=$makeRuleName new remoteip="$remoteIP"
$remoteIP=""
}
$count++
}
|
cs |
실행은 시작버튼을 누른 후 검색창에 PowerShell 이라고 친 후 뜨는 Windows Powershell을 마우스 우버튼으로 클릭후
관리자 권한으로 실행하면 됩니다.
스크립트 오류시 PowerShell 를 실행한 후
Set-ExecutionPolicy Unrestricted 명령을 실행하고
.\GeoIPCountryWhois.ps1 를 실행 해주세요.
오류관련 참고 사이트: https://samsons.tistory.com/16
Set-ExecutionPolicy Unrestricted
ExecutionPolicy <-- 현재상태확인
Unrestricted <-- 모든 스크립트 허용 상태.
ExecutionPolicy <-- 현재상태확인
Unrestricted <-- 모든 스크립트 허용 상태.
참고 URL : http://blog.netchk.net/?p=1427
제 블로그의 내용이 도움이 되셨나요?
여러분의 공감과 댓글이 큰 힘이됩니다 :)
▼▼▼▼▼▼▼▼▼▼▼