GNU/Linux >> Znalost Linux >  >> Panels >> Webmin

Blokování podle země

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.

Webmin
  1. Jak vyprázdnit pravidla iptables

  2. Cheat sheet příkazů IPtables

  3. Blokování veškerého provozu z jednotlivých zemí pomocí IPSet a IPTables

  1. Zástupné znaky uvnitř uvozovek?

  2. ${!foo} A Zsh?

  3. Centos – blokování odchozích spojení s iptables?

  1. Gmail blokuje Mutt?

  2. Automatická aktualizace?

  3. Nemůže Echo $catalina_home?