#!/bin/bash
ACTION="DROP"
#
https://dnslytics.com/bgp/us | bgp
declare -a ASNBLOCKS=()
# Akamai
ASNBLOCKS+=("AS35994" "AS16625" "AS32787" "AS12222" "AS18680")
ASNBLOCKS+=("AS35993" "AS18717" "AS23454" "AS393234" "AS20189")
ASNBLOCKS+=("AS393560" "AS34164" "AS49846")
# Amazon
ASNBLOCKS+=("AS16509" "AS14618" "AS7224" "AS62785" "AS39543" "AS8987")
# Facebook
ASNBLOCKS+=("AS32934" "AS63293" "AS54115")
# Google
ASNBLOCKS+=("AS15169" "AS16591" "AS19527" "AS36384" "AS36492")
ASNBLOCKS+=("AS36040" "AS394699" "AS395973" "AS36384")
# Linkedin
ASNBLOCKS+=("AS14413" "AS13443" "AS40793" "AS55163" "AS197612")
ASNBLOCKS+=("AS197613" "AS20049")
# Microsoft
ASNBLOCKS+=("AS8085" "AS3598" "AS8070" "AS8068" "AS12076" "AS6584")
ASNBLOCKS+=("AS23468" "AS8069" "AS63314" "AS395851" "AS396463")
# Pinterest
ASNBLOCKS+=("AS53620")
# Twitter
ASNBLOCKS+=("AS13414" "AS35995")
# Yahoo
ASNBLOCKS+=("AS36647" "AS26101" "AS36646" "AS10310" "AS7233" "AS36088")
ASNBLOCKS+=( "AS26085" "AS5779" "AS7280" "AS14196")
# view
# ipset -L
# Reset iptables
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t filter -F
iptables -t raw -F
iptables -t nat -F
iptables -t mangle -F
ipset -F
ipset -X
# iptables -F
# iptables -Z
# ip6tables -F
# ip6tables -Z
# Create a default IP set
setname="blocklistA"
# nethash | hash:net | iphash | hash:ip
ipset -N ${setname} hash:net
for ASN in ${ASNBLOCKS[@]};
do
printf "Adding ASN %s to IP set.\n" ${ASN}
IPs=`whois -h whois.radb.net \!g${ASN} | grep /`
# IPs=`whois -h whois.radb.net \!6${ASN} | grep /`
for IP in ${IPs};
do
printf "Adding %s to %s set for %s rule.\n" ${IP} ${setname} ${ACTION}
ipset -A ${setname} ${IP}
done
done
for TARGET in INPUT OUTPUT FORWARD;
do
iptables -A ${TARGET} -p all -m set --match-set ${setname} src,dst -j ${ACTION}
# ip6tables -A ${TARGET} -p all -m set --match-set ${setname} src,dst -j ${ACTION}
done