ipsec遮蔽一個地區的IP

科技小先鋒發表於2017-11-16

因業務發展需要要阻止一些地區的IP訪問伺服器,在此將獲取IP到用ipsec阻斷的過程記錄下來,以下就以香港地區為例

1、獲取要阻止地區的IP資訊

cat get_tw_ip.sh

#!/bin/sh

FILE=./ip_apnic

CNFILE=./hk_apnic

ipinfo=./ipfile.txt

rm -f $FILE

rm -f $CNFILE

wget 
http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE

grep `apnic|HK|ipv4|` $FILE | while read text 

do

        echo $text>> $CNFILE

done

grep `apnic|HK|ipv4|` $CNFILE | cut -f 4,5 -d`|`|sed -e `s/|/ /g` | while read ip cnt

do

        echo $ip:$cnt

        mask=$(cat << EOF | bc | tail -1

pow=32;

define log2(x) {

if (x<=1) return (pow);

pow–;

return(log2(x/2));

}

log2($cnt)

EOF

)

        echo $ip/$mask>> ./hk.txt

  echo $ip>> ./ip.txt

done

hk.txt為獲取的香港地區IP資訊

2、合併IP資訊

使用subnettools.exe工具對獲取的IP資訊進行合併



3、利用shell指令碼生成ipsec批處理

cat netsh_ipsec.sh

#!/bin/sh

file=./hk1.txt

cat $file | awk -F/ `{print $1,$2}`| while read ip mask

do

 echo “rem 新增安全策略名稱” >> ./deny_hk.bat

 echo “netsh ipsec static add policy name=HK” >> ./deny_hk.bat

 echo “rem 新增 IP篩選器列表” >> ./deny_hk.bat

 echo “netsh ipsec static add filterlist name=No” >> ./deny_hk.bat

 echo “rem 新增篩選器到IP篩選器列表(拒絕列表)” >> ./deny_hk.bat

 echo “netsh ipsec static add filter filterlist=No srcaddr=$ip dstaddr=me srcmask=$mask description=拒絕香港IP訪問 protocol=any” >> ./deny_hk.bat

 echo “rem 新增篩選器操作” >> ./deny_hk.bat

 echo “netsh ipsec static add filteraction name=deny action=block” >> ./deny_hk.bat

 echo “rem 建立一個連結指定 IPSec 策略、篩選器列表和篩選器操作的規則(加入規則到我的安全策略)” >> ./deny_hk.bat

 echo “netsh ipsec static add rule name=拒絕規則 policy=HK filterlist=No filteraction=deny” >> ./deny_hk.bat

 echo “rem 啟用我的安全策略” >> ./deny_hk.bat

 echo “netsh ipsec static set policy name=HK assign=y” >> ./deny_hk.bat

done

執行deny_hk.bat自動生ipsec策略,這樣就完成了對香港地區IP的遮蔽

本文轉自king_819 51CTO部落格,原文連結:http://blog.51cto.com/kerry/395862,如需轉載請自行聯絡原作者


相關文章