GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Webmin

Sperrung nach Land

Es gibt Zeiten, in denen Sie den Zugriff einschränken und ganze Länder blockieren möchten. Wieso den? Weil es Zeiten gibt, in denen es notwendig ist.

Hier ist ein Skript, das ein Skript erstellt ….

Es lädt die IP-Bereiche von www.ipdeny.com herunter, arbeitet sich durch eine Liste mit Ländercodes aus zwei Buchstaben, um ein Bash-Skript zu erstellen, das:

Löschen Sie eine vorhandene iptables-Kette.
Erstellt eine neue Kette „BadCountry“.
Fügt diese am Anfang der INPUT-Kette hinzu, um alles auf Port 80 an die BadCountry-Kette weiterzuleiten.
Fügt die gesamte IP hinzu blockiert in den entsprechenden Ländern die BadCountry-Kette mit einem Reject/Unreachable.

Fühlen Sie sich frei, es an Ihre Bedürfnisse anzupassen.

(Ach, und Sie können das Skript auch mit dem Parameter undo aufrufen und die Kette wird gelöscht.)

#!/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. Blockieren von Hosts Blacklist und iptables

  2. Platzhalter in Anführungszeichen?

  3. Was bedeutet Echo $? Tun??

  4. Einführung in iptables

  5. „Verschachteln“ von Variablen in bash

So installieren Sie Iptables unter CentOS 7

So leeren Sie die iptables-Regeln

16 Beispiele für Echo-Befehle unter Linux

Echo-Befehl unter Linux

Automatisches Update?

Kann $catalina_home nicht echoen?