Add iptables-geoblock, a geoblock experiment
parent
7d8e70e55e
commit
eefdcd621d
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
# Block SSH connections from CN etc.
|
||||
#
|
||||
# This downloads a list of IP addresses from some website via unencrypted HTTP and then
|
||||
# blocks this list of IP addresses without filtering. You should probably not use this
|
||||
# script.
|
||||
|
||||
set -e
|
||||
|
||||
ports="ssh,websm" # comma-separated for iptables -m multiport
|
||||
countries="cn hk" # space-separated
|
||||
|
||||
for country in $countries; do
|
||||
ipset -q -N geoblock-$country hash:net || true
|
||||
|
||||
tmp_zone=`mktemp`
|
||||
curl -s -o $tmp_zone http://www.ipdeny.com/ipblocks/data/aggregated/$country-aggregated.zone
|
||||
|
||||
for ip in $(cat $tmp_zone); do
|
||||
ipset -A geoblock-$country "$ip" -exist
|
||||
done
|
||||
|
||||
rm -f $tmp_zone
|
||||
|
||||
rule_spec="-p tcp -m multiport --dports $ports \
|
||||
-m set --match-set geoblock-$country src -j REJECT"
|
||||
if ! iptables -C INPUT $rule_spec; then
|
||||
iptables -I INPUT $rule_spec
|
||||
fi
|
||||
done
|
Loading…
Reference in New Issue