Site Loader
Steinrieselstrasse 52, 3203 Mühleberg

Vor allem meine VoIP Server stehen permanent unter Beschuss von diversen Angriffen, meist Brute Force Attacken um an SIP-Zugangsdaten  zu gelangen. Anfangs habe ich mit Blacklist’s gearbeitet, was aber mit der Zeit zu aufwendig wurde.

Da die meisten keine fixe IP Adresse besitzen, erstellen wir eine Provider WhiteList. Das sollte die meisten schwarzen Schafe fern halten.

Auf der Seite NirSoft gibts Listen mit allen Subnetzen der verschiedenen Länder, welche als .csv Download zur Verfügung stehen. Mit einem einfachen Python Script können wir diese vorbereiten.

Wir müssen lediglich die Provider filtern, welche für uns relevant sind. Die Liste für CH sieht in etwa so aus…ist nur ein Auszug der ersten Zeilen

5.44.112.0,5.44.127.255,4096,23/05/12,Quickline AG
5.145.0.0,5.145.31.255,8192,12/07/12,Renet AG
5.145.32.0,5.145.63.255,8192,12/07/12,Valaiscom AG
5.149.16.0,5.149.31.255,4096,16/07/12,Gemeindebetriebe Muri
5.149.32.0,5.149.63.255,8192,16/07/12,Localnet AG
5.153.112.0,5.153.127.255,4096,23/07/12,Energie Belp AG
5.172.128.0,5.172.143.255,4096,30/07/12,EWK Herzogenbuchsee AG
31.10.128.0,31.10.255.255,32768,14/04/11,UPC Schweiz GmbH
31.11.0.0,31.11.31.255,8192,14/04/11,ImproWare AG
31.31.48.0,31.31.63.255,4096,17/03/11,netplus.ch SA
31.44.32.0,31.44.47.255,4096,24/02/11,InternetONE SA

Mit einem sehr einfachen Script wie diesem,


#! /usr/bin/python3
import csv
import netaddr

with open(str(sys.argv[1])) as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
    if "Swisscom" in row[4]:
        cidrs = netaddr.iprange_to_cidrs(str(row[0]), row[1]) 
        print("%s,"%(cidrs[0]),end="")
    if "UPC" in row[4]:
        cidrs = netaddr.iprange_to_cidrs(str(row[0]), row[1])
        print("%s,"%(cidrs[0]),end="")
    if "T-Mobile" in row[4]:
        cidrs = netaddr.iprange_to_cidrs(str(row[0]), row[1])
        print("%s,"%(cidrs[0]),end="")
    if "A1 Telekom" in row[4]:
        cidrs = netaddr.iprange_to_cidrs(str(row[0]), row[1])
        print("%s,"%(cidrs[0]),end="")
    if "kabelplus GmbH" in row[4]:
        cidrs = netaddr.iprange_to_cidrs(str(row[0]), row[1])
        print("%s,"%(cidrs[0]),end="")
print("\n")

können wir die relevanten Adressen extrahieren.

Achtet darauf, dass das CSV-File keine leeren Zeilen enthält, es kommt sonst zu einem Fehler. Beim Download ist die letzte Zeile meist leer, einfach löschen.

Wir erstellen nun die Liste mit den Subnetzen wie folgt. Der Code im Script ist selbst erklärend. Einfach die Provider anpassen…

python3 main.py ch.csv

Das Ergebnis sieht so aus


31.10.128.0/17,46.14.0.0/16,46.126.0.0/15,46.140.0.0/16,62.2.0.0/16,62.202.0.0/15,77.56.0.0/14,80.218.0.0/15,81.7.224.0/19,81.62.0.0/15,83.76.0.0/14,83.173.192.0/18,84.20.32.0/20,84.72.0.0/14,84.253.0.0/18,85.0.0.0/13,92.104.0.0/14,95.152.64.0/18,109.164.128.0/17,138.187.0.0/16,138.188.0.0/16,138.190.0.0/16,146.4.0.0/16,164.128.0.0/16,176.127.0.0/16,178.82.0.0/15,178.174.0.0/18,178.174.64.0/19,178.192.0.0/13,178.238.160.0/20,188.60.0.0/14,193.5.224.0/20,193.135.224.0/20,193.246.32.0/20,193.246.208.0/20,194.6.160.0/19,194.29.0.0/19,194.209.0.0/17,194.209.128.0/17,195.65.0.0/16,195.144.32.0/19,195.176.128.0/19,195.176.192.0/19,195.186.0.0/19,195.186.32.0/19,195.186.64.0/18,195.186.128.0/17,195.202.192.0/18,212.41.192.0/19,212.47.160.0/19,212.90.192.0/19,212.243.0.0/16,213.3.0.0/16,213.180.160.0/19,213.193.64.0/18,213.200.192.0/18,217.11.32.0/20,217.162.0.0/16,217.168.32.0/20,217.168.48.0/20,217.192.0.0/1

Nun einfach kopieren, einen neuen Alias erstellen und unter Type <Network(s)> wählen, einfügen und fertig.

Wichtig: Zwischen den Subnetzen darf nur ein Beistrich stehen, keine newline (\n), sonst kann das Ergebnis nicht ins Alias Feld kopiert werden.

Jetzt kann unter NAT – PORTFORWARD Source Address die Whitelist verwendet werden. Wenn die Liste sehr lang ist, kann es ein paar Sekunden dauern, bis sie importiert wurde, nur Geduld.

Post Author: roema