#!/bin/bash
# delete rules (if exists)
for num in `iptables -L INPUT -n -v --line-numbers | grep whitelist | awk '{print $1}' | sort -nr` ; do iptables -D INPUT $num ; done
#exit 0
# delete whitelist list
ipset -X whitelist
# create new whitelist
ipset -N whitelist nethash
# download network list
wget -O whitelist http://www.ipdeny.com/ipblocks/data/countries/{ru,ua,kz,by,uz,md,kg,de,am,az,ge,ee,tj,lv}.zone
echo 'create whitelist ipset'
list=$(cat /usr/local/sys/whitelist)
net_count=$(cat /usr/local/sys/whitelist | wc -l)
i=0
BAR='####################'
#exit 0
for ipnet in $list
do
ipset -A whitelist $ipnet
i=$(($i+1))
echo -ne "\r$((100*$i/$net_count))% ${BAR:0:$((20*$i/$net_count))}"
done
echo -ne "\ndone create whitelist\n"
# drop all from non exUSSR countrys
iptables -I INPUT 1 -i ens3 -m set ! --match-set whitelist src -p tcp --dport 22 -j DROP
iptables -I INPUT 1 -i ens3 -m set ! --match-set whitelist src -p tcp --dport 80 -j DROP