#!/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