Ungewöhnlich viele (fremde) Verbindungen auf OpenVPN Server

  • Hallo zusammen,


    nachdem ich schon viele Beiträge in diesem Forum gelesen und verfolgt habe, habe auch ich jetzt mal ein Anliegen, bei dem ich nicht weiter komme.


    Ich habe bei Netcup einen gemieteten VPS-Server mit CentOS 7, auf welchem unter anderem ein OpenVPN 2.4.6 Server läuft. Seit mehreren Tagen beobachte ich in der Log-Datei folgendes:

    Diese Zugriffe gibt es von den verschiedensten IP Adressen und die Dauer ist auch immer unterschiedlich. Teilweise ist es nur ein Verbindungsversuch, teilweise dauern die Versuche auch eine halbe Stunde. Ebenfalls ist dies rund um die Uhr zu beobachten.


    Am Freitag habe ich mir daher mit Fail2Ban einen Filter gebaut, welcher die IP Adressen nach drei Versuchen blockiert. Bis jetzt sind 88 unterschiedliche IP Adressen gesperrt, aber es kommen immer weiter neue dazu. Ich bin mir daher nicht mehr ganz sicher, ob dies der richtige Weg ist.


    Eine konkrete Fragen von mir wäre: Handelt es sich hierbei wirklich um einen Versuch eine Verbindung mit meinem OpenVPN Server herzustellen (also den Tunnel zu knacken) oder habe ich die Logs vielleicht falsch interpretiert und es sind nur harmlose Bots, die verschiedene Server nach offenen Ports abfragen?


    Vielleicht hat hier ja jemand eine Idee.


    Viele Grüße

    Denik

  • da die IPs nicht von Dir stammen, sind hier tatsächlich 'böse jungs' unterwegs;

    um herauszufinden, ob diese tatsächlich eine Verbindung zu stande gebracht haben

    oder es nur erfolglose Versuche waren, müsstest in diversen anderen Logs nachsehen;


    die Frage ist, wie hast Du das ganze abgesichert?


    Du brauchst ja f. die Verbindung ein Zertifikat, und dieses wurde von einem CA-Zert. abgeleitet;

    ist dies auch so eingestellt, daß nur Client-Zert. welche von diesem einem CA-Zer. abgeleitet wurden,

    erlaubt sind z.B.?

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Vielen Dank für die schnelle Antwort.


    Also der Port ist Standard 1194.

    Abgesichert ist das Ganze wie in jeder Standard Anleitung. Also Client Zertifikate von einer CA erstellt. Jeder Client hat seine eigene .key-Datei und .cert. Es ist nur eine Verbindung pro Client Zertifikat erlaubt.

    Wenn ich später wieder zu Hause bin kann ich auch die Server.conf und eine client.ovpn zeigen, sofern erforderlich.

  • Was ich empfehlen kann: Wenn alle Verwender des VPNs Versiert genug sind würde ich den Port-Zugriff schützen. Mit iptables-recent kann man z.B. ganz simpel ein Port-Knocking implementieren. Das ist effektiver als das simple Ändern des Ports.

    Bei Bedarf kann ich auch eine Bespiel-Konfig zur Verfügung stellen.

  • hier mal meine /etc/openvpn/server.conf

    (ebenfalls openvpn 2.4.6 aber unter CentOS 6)



    hier das verify.pl script


    und der im skript referenzierte text file: /etc/openvpn/x509-cn.text

    enthälft eine Auflistung der möglichen CNs der Client-Certificates Subjects


    Anmerkung: ich bin meine eigene CA und hab daher das OpenVPN CA als Intermediate vom Root CA abgeleitet

    macht den Einbruch etwas schwieriger, weil um da was veranstalten zu können braucht er schon a bssi viel :D

    (die private Keys der CA Certificates sind natürlich zu Hause sicher verwahrt)


    angenommen ein Client hat im Zert. als CN vpnclnt.guest

    dann befindet sich im Verz. /etc/openvpn/ccd dann der File vpnclnt.guest mit z.B. folgendem Inhalt

    welche DNS-Server ihr verwendet sei euch überlassen;

    bei domain empfehle ich xxxx.arpa.home

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Hallo zusammen,


    erneut vielen Dank für für Antworten.

    Bezüglich iptables-recent müsste ich mich erst einmal ein bisschen einlesen. Da kann ich so spontan noch nicht sagen, ob dies eine Alternative wäre.


    Das verify.pl Script verwende ich sogar schon :)

    Hier kommt mal die aktuelle Konfiguration von mir:

    Server:

    Client:


    Was ich aktuell nicht verwende ist folgendes:

    Wäre dies vielleicht sinnvoll?


    Grüße

    Denik

  • Ja und zusätzlich noch


    verify-client-cert require

    verify-hash xx:xx:xx:xx:xx:xx:...:xx:xx:xx SHA1


    den hash bekommst mit


    openssl x509 -fingerprint -in ca.crt

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Hallo zusammen,


    ich habe jetzt ein paar Dinge umgesetzt:

    • tls-auth ta.key
    • verify-client-cert require
    • verify-hash xx:xx:xx:xx:xx:xx:...:xx:xx:xx SHA

    Im Log sieht es jetzt wie folgt aus:

    Code
    Sun Sep 23 18:31:31 2018 us=961663 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:31 2018 us=961788 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:36 2018 us=859728 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:36 2018 us=859851 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:40 2018 us=545131 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:40 2018 us=548046 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:41 2018 us=813450 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:41 2018 us=813687 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987
    Sun Sep 23 18:31:46 2018 us=740685 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]79.133.54.200:9987

    Die Tatsache dass Verbindungsversuche stattfinden kann keiner von uns ändern. Aber ich fühle mich mit den oben genannten Punkten doch schon etwas sicherer als vorher.


    Vielen Dank für die Hilfe :)


    Viele Grüße

    Denik

  • mainziman Warum nutzt Du zur Validierung des CN eigentlich zusätzlich ein Perlscript? Wäre das mit --ccd-exclusive und leeren Dateien im CCD für erlaubte CNs nicht schon ausreichend? Oder übersehe ich hier etwas?

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • KB19 das ist die Frage zu welchem Zeitpunkt diese Validierung stattfindet;


    das Perscript das die CNs validiert ermöglicht Dir den Aufbau der SSL-Verbindung; sprich kommt hier ein Client mit einem CN der nicht in der Liste vorkommt, nützt der File im CCD auch nichts, der SSL-Verbindungsaufbau wird abgebrochen;


    im anderen Fall, wenn dieses Perlscript weggelassen wird, erfolgt erst der vollstándige Aufbau der SSL-Verbindung bis die Erkenntnis kommt, daß mangels CCD-File keine VPN-Verbindung möglich ist;


    so zumindest habe ich das verstanden;


    bei mir sind die CCD-Files nicht leer, weil jeder hier seine eigene fixe IP bekommt;

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Na da bist mit fail2ban wohl erfolgreicher. Die Verbindungen werden sehr wahrscheinlich aus allen Regionen der Welt sein ;)

    Ja, das denke ich auch. Die IP Adressen kommen wirklich von überall. Hatte am Wochende mal ausrechnen lassen, wie viele verschiedene IP Adressen es waren. Es waren so um die 100 Adressen.

    Habe jetzt Fail2Ban so eingestellt, dass bei 3 Fehlversuchen die IP für eine Stunde gesperrt wird.