Jsou chvíle, kdy budete chtít omezit přístup a zablokovat celé země. Proč? Protože jsou chvíle, kdy je to nutné.
Zde je skript, který vytvoří skript….
Stahuje rozsahy IP z www.ipdeny.com, pracuje se seznamem dvoupísmenných kódů zemí a vytváří bash skript, který:
Odstraní existující řetězec iptables.
Vytvoří nový řetězec „BadCountry“.
Přidá to na začátek řetězce INPUT, aby se cokoliv na portu 80 předalo řetězci BadCountry.
Přidá všechny IP adresy blokuje v příslušných zemích do řetězce BadCountry s odmítnutím/nedosažitelným.
Neváhejte jej přizpůsobit svým potřebám.
(A můžete také volat skript s parametrem undo a smaže řetězec.)
#!/bin/bash
PARAM=${1}
if [ "${PARAM}" == "undo" ] ; then
iptables -D INPUT -p tcp -m tcp --dport 80 -j BadCountry
iptables --flush BadCountry
iptables -X BadCountry
else
echo $(date) IP Blocking GLOBAL START
#First call ourselves to undo (delete the chain)
${0} undo
#This is where the executable script that does the table update will live.
TABLESCRIPT=/root/scripts/countrytables.sh
#Change this to a folder you can write to
cd /root/ipblocks
#and delete any zone file tar/zip files
rm -f all-zones.tar.*
echo $(date) Download Countries START
wget "http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz"
tar -zxvf all-zones.tar.gz > /dev/null
echo $(date) Download Countries FINISH
echo $(date) Build Countries START
echo "#!/bin/bash" > ${TABLESCRIPT}
echo "iptables -N BadCountry" >> ${TABLESCRIPT}
echo "iptables -I INPUT -p tcp -m tcp --dport 80 -j BadCountry" >> ${TABLESCRIPT}
echo "iptables -A BadCountry -j RETURN" >> ${TABLESCRIPT}
for COUNTRY in hk cn in id kr my ph tw th vn pk ; do
awk {'print "iptables -I BadCountry -s "$1" -j REJECT --reject-with icmp-port-unreachable"'} ${COUNTRY}.zone >> ${TABLESCRIPT}
done
echo $(date) Build Countries FINISH
echo $(date) Updating iptables START
#Make our script executable
chmod 700 ${TABLESCRIPT}
#And now execute it
${TABLESCRIPT}
echo $(date) Updating iptables FINISH
fi
# Elvis Has Left The Server.