it-swarm.com.de

Wie erkennen Sie eine VPN- oder Proxy-Verbindung?

Ich möchte alle Verbindungen zu meinem Server blockieren, die ein VPN oder einen Proxy verwenden. Gibt es überhaupt zu erkennen, dass eine VPN- oder Proxy-Verbindung verwendet wird? Wenn nicht, kann ich dann die Wahrscheinlichkeit überprüfen, dass ein VPN oder ein Proxy verwendet wird? Gibt es schließlich irgendetwas, bei dem ich den Benutzer abfragen oder auffordern kann, zu überprüfen, ob er ein VPN oder einen Proxy verwendet, damit ich versuchen kann, eine zusätzliche Überprüfung durchzuführen, wenn jemand durchkommt? Ich benötige keine Informationen vom Benutzer wie Standort, echte IP-Adresse oder ähnliches. Ich möchte nur Verbindungen von VPNs oder Proxies vollständig sperren.

Edit: Ich habe gedacht, dass ich möglicherweise einen Test durchführen könnte, um zu sehen, ob konsistente Diskrepanzen zwischen dem Ping an die VPN-IP und der erkennbaren Latenz des Clients bestehen, aber das klingt ziemlich unzuverlässig.

Edit2: Ein Proxy- oder VPN-Server hätte wahrscheinlich viel mehr Ports als eine Standard-Heimverbindung. Daher könnte ich die Anzahl der offenen Ports verwenden, um die Wahrscheinlichkeit zu ermitteln, dass eine Verbindung von einem VPN kommt, indem ein Port-Scan der Verbindung durchgeführt wird.

14
Zach Sugano

Leider gibt es keinen richtigen technischen Weg, um die gewünschten Informationen zu erhalten. Sie könnten einige Tests erfinden, die jedoch nur eine sehr geringe Übereinstimmung mit der Realität haben. Entweder fangen Sie nicht die, die Sie wollen, oder Sie haben eine größere Anzahl von Fehlalarmen. Keines kann als sinnvoll betrachtet werden.

Das Generieren von beliebigem Verkehr rückwärts von einem Internet-Server als Reaktion auf einen eingehenden Client (Port-Scan oder sogar einfaches Ping) ist im Allgemeinen verpönt. Bei einem Port-Scan kann es für Sie sogar noch schlimmer sein, z. B. wenn der Client hinter einer zentralen Unternehmens-Firewall lebt. Am schlimmsten ist es, wenn der Client hinter dem Firewall-Pool der zentralen staatlichen Netzwerke kommt ...

Ehrlich gesagt, sind IP-basierte Verbote (oder eigentlich jede Beschränkung auf Personen, die nicht ausschließlich ihre öffentliche IP-Adresse besitzen: Proxyserver, VPNs, NAT -Geräte usw.) seit langem unrealistisch Da die IPv4-Pools in vielen Teilen der Welt stark erschöpft sind, stellen ISPs immer mehr Kunden hinter große NAT - Pools (die aktuellen Nachrichten in meinem Land haben der größte ISP, eine Tochter der Deutschen Telekom) angefangen, private IPv4-Adressen als Standardgeschäftsart an seine Kunden zu vergeben, und die Benutzer müssen den Anbieter explizit um eine öffentliche IP-Adresse bitten), so dass es immer weniger Sinn ergibt. Wenn Sie Kunden verbieten möchten, sollten Sie sie auf der Grundlage der Identität (des Kontos) und nicht der IP-Adresse verbieten.

15
Laszlo Valko

Am einfachsten ist dies, wenn Sie einen externen Dienst wie eine API verwenden, um VPN- oder Proxy-Benutzer zu blockieren. 

MaxMind und GetIPIntel bieten beide über die API an, Sie sollten es vielleicht einmal ausprobieren. GetIPIntel bietet einen kostenlosen API-Service. Ich empfehle Ihnen, dies zuerst zu versuchen.

Für OpenVPN benutzte jemand eindeutige MSS-Werte, um VPN-Verbindungen zu identifizieren aber das Setup ist kompliziert und könnte jetzt "gepatcht" werden.

Die Strategien, die Sie in Ihren Änderungen erwähnt haben, scheinen keine sehr gute Idee zu sein, da Sie auf viele Fehlalarme stoßen. Das Senden von Port-Scans bei jeder Verbindung zu Ihrem Dienst erfordert viel Zeit und Ressourcen, bevor Sie die Ergebnisse erhalten.

3
S W

Sie können Web-APIs verwenden, die IP-Adressen für Sie protokollieren, beispielsweise: http://xioax.com/Host-blocker/

Es gibt sogar Java Library: https://github.com/HiddenMotives/Java-VPNDetection

2
AbsoleVentil

Sie können eine Liste bekannter Proxy-IP-Adressen herunterladen und lokal nachsehen, ob es sich um VPN handelt.

Es gibt mehrere kommerzielle Produkte auf dem Markt. IP2Proxy LITE ist ein kostenloses, das Sie sofort ausprobieren können.

0
Michael C.

Ja, Sie können mit Shodan feststellen, ob eine IP zu einem VPN/Proxy gehört. Der folgende Python-Code zeigt, wie es geht:

import shodan

# Setup the API wrapper
api = shodan.Shodan('YOUR API KEY') # Free API key from https://account.shodan.io

# Lookup the list of services an IP runs
ipinfo = api.Host(VISITOR_IP)

# Check whether the IP runs a VPN service by looking for the "vpn" tag
if 'tags' in ipinfo and 'vpn' in ipinfo['tags']:
    print('{} is connecting from a VPN'.format(VISITOR_IP))

Sie können auch in der Liste der Ports nachsehen, wie hoch die Wahrscheinlichkeit ist, dass sich der Besucher über einen HTTP-Proxy verbindet:

if 8080 in ipinfo['ports']:
    print('{} is running a web server on a common proxy port'.format(VISITOR_IP))
0
achillean

Sie können sehen, dass :

VPN-Verbindung erkennen

Aber die kurze Antwort ist nein, das geht nicht.

0
Raphaël Vigée

Die Liste der Tor-Exit-Knoten ist öffentlich verfügbar . Sie möchten nur "Exit-Knoten" und sind als CSV verfügbar. Dies sollte zu 100% vollständig und genau sein, da es direkt aus dem Tor-Verzeichnis generiert wird.

Eine freie Liste offener Proxys finden Sie unter iblocklist.com . Eine freie Liste, die offene Proxys, Tor-Knoten und VPN-Endpunkte von ip2location.com enthält.

Die letzten beiden haben höchstwahrscheinlich nur eine begrenzte Abdeckung und Genauigkeit, insbesondere was VPN-Exit-Knoten angeht - es gibt einfach zu viele. Einige Anbieter verfolgen einen anderen Ansatz und betrachten alle "gehosteten Subnetze" (Subnetze, aus denen ISPs ihren Clients IP-Adressen für gehostete Server zuweisen) als eine Art VPN oder Proxy, da Endbenutzer eine Verbindung von "Consumer" -Subnetzen herstellen sollten.

0
kravietz