Donnerstag, April 25, 2024

Das böse Büro

Uriel Fanellis Blog in deutscher Sprache

Uriel Fanelli

So blockieren Sie russische / belarussische IPs unter Linux

Wir leben seltsame Tage. Aus diesem Grund werde ich gefragt, wie man iptables verwendet, um jede Quell-IP aus Russland und Weißrussland zu blockieren. Ich denke, die Idee ist, den russischen und belarussischen Behörden dabei zu helfen, schlechte Inhalte auf die schwarze Liste zu setzen, also sehen Sie es als einen Akt der Liebe zu Roskomnadzor. Natürlich werden Sie weiterhin von Personen erreicht, die ein VPN verwenden.

Der erste Punkt ist, dass die Verwendung von GEOIP zusammen mit iptables eine Art Scheißjob ist. Es würde bedeuten, eine Datei abzufragen, während das Netzwerk läuft, egal welche Quell-IP Sie haben; Vielleicht ist die IP russisch, vielleicht nicht, und Sie fügen immer noch Latenz hinzu. Nicht gut.

Aber wir haben Alternativen.

Zunächst werden russische und weißrussische IPs vom RIPE vergeben.

Zweitens führt das RIPE ein Verzeichnis der zugewiesenen IP-Blöcke in einer Textdatei, die Sie hier herunterladen können:

ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest

Das kleine Problem ist, dass sie anstelle von CIDR die Blockgröße verwenden, wie zum Beispiel:

 ripencc|UA|ipv4|2.56.168.0|256|20200430|allocated ripencc|CH|ipv4|2.56.169.0|256|20200430|allocated ripencc|DE|ipv4|2.56.170.0|256|20200430|allocated ripencc|BE|ipv4|2.56.171.0|256|20200430|allocated ripencc|CY|ipv4|2.56.172.0|1024|20190314|allocated ripencc|CY|ipv4|2.56.176.0|1024|20190314|allocated ripencc|RU|ipv4|2.56.180.0|1024|20190314|allocated ripencc|LT|ipv4|2.56.184.0|1024|20190315|allocated ripencc|GB|ipv4|2.56.188.0|1024|20190315|allocated ripencc|NL|ipv4|2.56.192.0|1024|20190315|allocated ripencc|GB|ipv4|2.56.196.0|1024|20190315|allocated ripencc|NL|ipv4|2.56.200.0|1024|20190315|allocated ripencc|AM|ipv4|2.56.204.0|1024|20190315|allocated ripencc|AT|ipv4|2.56.208.0|1024|20190315|allocated ripencc|CY|ipv4|2.56.212.0|1024|20190315|allocated ripencc|NL|ipv4|2.56.216.0|1024|20190315|allocated ripencc|LU|ipv4|2.56.220.0|1024|20190315|allocated ripencc|NL|ipv4|2.56.224.0|1024|20190315|allocated ripencc|US|ipv4|2.56.228.0|1024|20190315|allocated ripencc|MD|ipv4|2.56.232.0|1024|20190315|allocated ripencc|DE|ipv4|2.56.236.0|1024|20190315|allocated ripencc|RU|ipv4|2.56.240.0|1024|20190315|allocated ripencc|DE|ipv4|2.56.244.0|1024|20190315|allocated ripencc|LT|ipv4|2.56.248.0|1024|20190315|allocated ripencc|DE|ipv4|2.56.252.0|512|20190315|allocated ripencc|DE|ipv4|2.56.254.0|256|20190315|allocated ripencc|IN|ipv4|2.56.255.0|256|20190315|allocated ripencc|FI|ipv4|2.57.0.0|1024|20190315|allocated

Also müssen wir die Blockgröße in ein CIDR umwandeln.

Und dann? Dann können wir die Datensätze mit „RU“ und „BY“ auswählen und zu einem IPset hinzufügen.

Wie machen wir es?

Mit Python. Warum? Da Python Einrückungen als Grammatik verwendet, hängt Ihre Fähigkeit zur Fehlerbehebung von der Größe Ihres Monitors / Terminals ab. Brillantes Design, nicht wahr?

Also, wie machen wir es mit Python? Leicht:

 #!/usr/bin/python import os import math import urllib opener = urllib.FancyURLopener() f = opener.open("ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest") lines=f.readlines() os.system('ipset create rusbiel nethash') os.system('iptables -A INPUT -m set --match-set rusbiel src -j LOG') os.system('iptables -A INPUT -m set --match-set rusbiel src -j DROP') os.system('ipset flush rusbiel') for line in lines: if (('ipv4' in line) & (('RU' in line) or ('BY' in line)) ) : s=line.split("|") net=s[3] cidr=float(s[4]) final_cidr= (str(net) + "/" + str( math.trunc((32-math.log(cidr,2))) )) ipset_cmd="ipset -q -A rusbiel " + final_cidr os.system(ipset_cmd) print(ipset_cmd)

Sehr brutaler, aber effizienter Code. So brutal, es könnte russisch sein.

Danach müssen Sie das Skript nur noch jede Nacht mit cron ausführen, und plötzlich können nur Personen, die ein VPN verwenden, Ihren Server aus Russland und Weißrussland erreichen, was Roskomnadzor hilft, russische Nationalisten von Ihrer Website fernzuhalten.

Kluge (bielo) Russen, die ein VPN oder TOR verwenden, können es lesen.

Habe Spaß!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert