Beiträge von MrSpock

    Habe es jetzt gelöst. Danke für Eure Hilfe.


    Habe zuerst einmal das Portforwarding direkt über die Console eingerichtet:


    ssh -L 1234:v123456789xxx.supersrv.de:3050 user@v123456789xxx.supersrv.de


    Dann konnte ich erkennen, dass die Verbindung zustandekommt. Aber der Firebird Server hat keine Verbindung zur Datenbank zugelassen. In der firebird.conf habe ich dann gesehen, dass als Remothost nur localhost zugelassen war und damit eine Verbindung von außen ausgeschlossen war. Das habe ich gändert. Dann war noch die WireCrypt Einstellung auf dem Server und dem Client unterschiedlich. Nachdem ich diese angeglichen habe, hat es dann funktioniert. Dann habe ich die Verbindung wieder in dem Fenster bei DBeaver eingegeben, in dem Shellcommands vor Verbindungsverstellung eingetragen werden.


    Jetzt funktioniert es so, wie gewollt.

    Habe jetzt folgendes eingegeben:


    ssh user@v123456789xxxx.supersrv.de -L1234:127.0.0.1:3050


    user ist der neu angelegte user, v12... steht für meinen VServer. Firebird nutzt 3050 als Standardport.


    Bei der Verbindung steht dann:


    jdbc:firebirdsql://localhost:1234//pfad/zu/db.fdb


    Dann kommt: Connection refused (Connection refused)

    DBeaver braucht laut kurzer Recherche einen privaten Schlüssel im RSA-Format. Wie sieht die erste Zeile Deiner Schlüsseldatei aus?

    -----BEGIN OPENSSH PRIVATE KEY-----


    Die nächste Zeile ist bereits verschlüsselt.

    Ich habe aber sicher einen rsa Key erstellt: sudo ssh-keygen -b 4096 -t rsa -f ~/.ssh/<id_vhost_name> steht noch in der History



    Die Java-SSH Implementierung JSCH kann kein ed25519, vgl. http://www.jcraft.com/jsch/ und Feature Request: Add support for Ed25519 (2015).


    Das ist aber nicht schlimm, du kannst in DBeaver einfach mit dem System-Client die SSH-Verbindung aufbauen, vgl. https://github.com/dbeaver/dbe…35#issuecomment-364732736 . Da du ja sicherlich den ssh-agent benutzt, geschieht das komplett automatisch im Hintergrund :)

    Danke, das schaue ich mir mal an.

    Habe jetzt einen neuen User angelegt, ein rsa Schlüsselpaar erzeugt und mit Passwort verschlüsselt. Ich kann mich mit dem neuen User und dem neuen rsa Schlüssel über ssh an der Konsole anmelden. DBeaver meldet aber weiterhin invalid private key. In der Log Datei finde ich:


    Was könnte die Ursache sein, dass der Schlüssel als invalid erklärt wird, obwohl ich mich über sie Shell mit ssh und diesem Schlüssel anmelden kann?

    vmk Das ist richtig.


    Mein Ansatz ist/war folgender: per Konsole meldest er sich mit Benutzer B1 & Key1 an; über JDBC hat er aber eventuell einen anderen Benutzer und meldet sich hier mit B2 & Key1 an. wodurch JDBC eine invalid Key Meldung ausgibt weil B2 eigentlich nicht den Schlüssel von B1 kennen sollte.

    Bei beiden Programmen kann ich in der SSH Tunnel Konfiguration einen Nutzer angeben. Dort benutze ich B1, genau wie beim Zugriff über ssh in der Konsole.


    Du hast als Schlüsselformat sicherlich ed25519 gewählt und deine Software nutzt eine uralte Java-Version die das nicht unterstützt. Du könntest als Workaround versuchen den ssh-agent nutzen bzw. stellst in der Software ein das das System SSH verwendet wird (falls die Software das kann).

    Ja, ich glaube ich habe ed25519 als Schlüsselformat verwendet. Bei beiden Programmen habe ich die aktuellste Version geladen, die sogar von diesem Jahr ist, so dass wahrscheinlich keine uralt Version von Java verwendet wird. Das mit dem Workaround verstehe ich nicht. Die beiden Programme nutzen ja ssh (als Tunnel zum Server), wie genau soll ich hier einen ssh-Agenten einsetzen?

    Bensen : Ein Account kann mehrere Public-Keys haben und 1 Benutzer kann auch mehrere Keys haben. ssh probiert durch alle erlaubten Keys, das sieht man bei ssh -v user@host. Zusätzlich gibt es noch die ~/.ssh/config wo man dediziert pro Host verschiedene Optionen wie Ports, Keys, etc definieren kann.

    Ich werde dann einmal einen rsa Schlüssel erstellen und den als Zweitschlüssel für den Benutzer B1 verwenden. Diesen werde ich dann mit Passwort verschlüsseln und versuchen diesen bei den Programmen zu nutzen.

    Hallo,


    ich habe meinen Server wie in Infosec empfohlen abgesichert. Dazu habe ich ein Schlüsselpaar mit ssh-keygen erzeugt. Bei der Erstellung der Schlüssel habe ich kein Passwort vergeben. Die Anmeldung über die Mac Konsole mittels ssh bei meinem VServer funktioniert auch über das erzeugte Schlüsselpaar.


    Ich nutze auf meinem Server Firebird 3.0 und möchte mit einem der beiden Mac Toos (RazorSQL oder DBeaver) auf eine FB-Datenbank auf meinem VServer zugreifen. Beide Tools nutzen JDBC für den Zugriff und im Connection Dialog kann ich in beiden Systemen einen ssh Tunnel zum Server konfigurieren. Dazu gebe ich die vhost Adresse und den Port 22 an, meinen User und den privaten Schlüssel. Das ist exakt dieselbe Konfiguration, mit der ich auch über die Shell zugreife. Beide Tools können aber den Tunnel nicht herstellen und melden, der private Schlüssel sei invalid. Ich habe mich einmal durch die log Dateien der beiden Anwendungen gewühlt und dabei ist mir aufgefallen, dass ein Tool im Log File den Eintrag hatte, dass das Passwort Feld leer sei. Das stimmt, weil ich ja bei der Schlüsselgenerierung keines vergeben habe. Hat irgendjemand Erfahrung mit ssh Tunnel über JDBC, welche erklären könnte, warum die Tools meinen, der Schlüssel sei invalid, während derselbe Schlüssel in der Konsole funktioniert?

    Das ist ein interessanter Ansatz, Froxlor in eine Subdomain meine Domain auszulagern. Wie müsste ich dazu vorgehen, wenn ich eine neue Subdomain angelegt habe?

    Hallo eripek,


    natürlich habe ich froxlor auch schon über https://vxxxxxxxxxxxxxxxx.supersrv.de/froxlor/ also der mir von netcup zugewiesenen vhost Nummer aufgerufen, also mit einem Domain Namen, dieser ist aber eben nicht myDoamin.de. Deshalb wäre es interessant, ob und ggf. wie ich auch für diese Domain einen Letsencrypt Key erstellen lassen kann und das ggf. mit Froxlor verwalten kann.


    Zitat


    Anmerkung: mod_http2 vielleicht noch aktivieren?

    Habe ich nicht gebraucht bzw. es war vielleicht schon aktiviert.

    Fortsetzung


    wieder aus nichteinschaltend.de:

    Zitat

    Letsencrypt verwenden

    Anschließend in den Einstellungen einer Domain den Port 443 für die jeweilige IP Adresse auf der die Domain auch unter Port 80 läuft aktivieren. Den Haken bei Letsencrypt setzen und ganz wichtig: kein Alias auswählen, da Letsencrypt kein Wildcard kann. Ich würde WWW empfehlen, damit in das Zertifikat auch die Subdomain www. eingetragen wird.


    Dazu also im Froxlor Panel Ressourcen Domains auswählen. Unter der gewünschten Domain den Bleistift unter Optionen anklicken, um zu den Einstellungen zu gelangen. Dort unter Webserver SSL-Einstellungen


    • SSL-IP-Adresse(n):

      Definiere eine oder mehrere IP-Adresse(n) für diese Domain. -> hier die vorgegebene IP mit Port :443 auswählen
    • SSL Zertifikat erstellen (Let's Encrypt):

      Holt ein kostenloses Zertifikat von Let's Encrypt. Das Zertifikat wird automatisch erstellt und verlängert.

      ACHTUNG: Wenn Wildcards aktiviert sind, wird diese Option automatisch deaktiviert. Dieses Feature befindet sich noch im Test -> anwählen, damit ein Letsencrypt Schlüssel generiert wird.


    Einträge sichern und warten!


    Warum warten? Mit dem "SSL Zertifikat erstellen" oben, wird ein cronjob erstellt, der erstmalig und dann alle 3 Monate ein neues Zertifikat für diese domain erstellt. Diese wird erst nach 5 (-15) Minuten ausgeführt. Wenn man aber -wie ich- die Nerven verliert, kann man wie unter nichteinschaltend.de beschrieben auch noch folgende Befehle eingeben:


    Zitat

    php /var/www/froxlor/scripts/froxlor_master_cronjob.php --force --debug
    php -q /var/www/froxlor/scripts/froxlor_master_cronjob.php --letsencrypt --debug


    Dort bitte auch genau lesen, ob alles funktioniert hat. Bei mir wurde beim Ausstellen des ersten Zertifikats noch einige Fragen gestellt, nach Domain, E-Mail Adresse und so. Diese habe ich nach bestem Wissen beantwortet. :)


    Wenn alles funktioniert hat, entstehen 5 Dateien:


    Zitat

    -rw------- 1 root root 1647 Feb 1 22:28 myDomain.de_CA.pem

    -rw------- 1 root root 1647 Feb 1 22:28 myDomain.de_chain.pem

    -rw------- 1 root root 2269 Feb 1 22:28 myDomain.de.crt

    -rw------- 1 root root 3917 Feb 1 22:28 myDomain.de_fullchain.pem

    -rw------- 1 root root 3272 Feb 1 22:28 myDomain.de.key

    Mit dem Befehl sudo cp habe ich dann die .crt und .key Datei nach /etc/ssl/private kopiert. Hier wäre interessant, ob auch ein symbolischer Link funktioniert. Das hatte ich einmal probiert, hatte aber nicht funktioniert, kann aber auch noch an einem anderen Fehler gelegen haben.


    Noch ein Hinweis: solltet ihr eine Firewall verwenden z.B. ufw, dann noch den Port 443 für alle IPs freischalten.


    Nach diesen Schritten ist meine Domain jetzt unter https erreichbar. :thumbup:


    Neben der Frage des Links vs. einer Kopie der beiden Schlüsseldateien, habe ich noch folgenden offenen Punkt. Da ich "nur" eine IP habe, nutzt meine Domain dieselbe IP wie z.B. Froxlor. Wenn ich also mineIP/froxlor eingebe und ganz frech einfach ein https davor setze, stellt der Browser fest, dass der Schlüssel zu dieser IP auf myDomain.de ausgestellt ist und verweigert den Zugriff. Da ich aber weiß, dass dieser Schlüssel richtig ist, habe ich eine Ausnahme hinzugefügt und kann jetzt auch Froxlor unter https erreichen. Schöner wäre natürlich ein korrekter Schlüssel dazu. Wie das geht, darf gerne jemand anderes beschreiben. ;)

    Fortsetzung

    Aus nichteinschaltend.de:


    Zitat

    Schritt 2 und 3

    Unter Konfiguration nun die Distribution auswählen (hier Debian 8), den Service (hier Webserver) und die konkrete Anwendung, die auf dem Server installiert ist (hier Apache2). Eine neue Konfigurationsdatei acme.conf ist verfügbar und muss unter dem angegebenen Pfad angelegt werden: /etc/apache2/conf-enabled/acme.conf

    Ich habe bei mir im Froxlor Panel unter System Konfiguration gewählt. Unter


    • Distribution: Debian Stretch (9.x)
    • Service: Webserver (HTTP)
    • Daemon: Apache 2.4 (standard)

    Starten auswählen:


    Bei mir steht dort man soll folgende Befehle auf der ssh Konsole eingeben:


    • apt-get install apache2

    Das würde den Apache2 Server installiert und ist bei den meisten nicht notwendig. Wenn ihr den Befehl trotzdem eingebt, wird das System eine entsprechende Meldung ausgeben.


    Dann folgt:

    • mkdir -p /etc/apache2/sites-enabled/
    • chown root:0 /etc/apache2/sites-enabled/
    • chmod 0600 /etc/apache2/sites-enabled/

    Mit diesen 3 Befehlen würde ein Verzeichnis /etc/apache2/sites-enabled erstellt und die Rechte vergeben werden. Sollte bei euch ein solches Verzeichnis schon existieren (auf der Konsole nachschauen) könnt ihr die Schritte weglassen.

    • mkdir -p /etc/apache2/sites-enabled/
    • chown root:0 /etc/apache2/sites-enabled/
    • chmod 0600 /etc/apache2/sites-enabled/

    Trotz mehrfachen Überprüfens finde ich keinen Unterschied zu den ersten 3 Befehlen. Also weglassen!

    • mkdir -p /var/customers/webs/
    • mkdir -p /var/customers/logs/
    • mkdir -p /var/customers/tmp
    • chmod 1777 /var/customers/tmp

    Auch hier werden Verzeichnisse erstellt und Rechte vergeben. Aber auch diese 3 Verzeichnisse existieren in der Regel bereits. Dann können diese Befehle auch weggelassen werden.

    • a2dismod userdir

    a2dismod deaktiviert Module des Apache2 Servers. Hier wird ausgeschaltet, dass einem user automatisch ein Verzeichnis zugewiesen wird. Diesen Befehl eingeben.

    • a2enmod headers

    a2enmod aktiviert Module für Apache. Diesen Befehl eingeben.

    • a2enmod ssl

    Und das ist wichtig: Aktivieren des ssl Moduls für Apache.


    Anschließend mit dem Lieblingseditor die Konfigurationsdatei öffnen:


    • /bin/nano /etc/apache2/conf-enabled/acme.conf

    Wenn nano installiert ist, kann in der Rege auch das /bin weggelassen werden, einfach: nano /etc/apache2 ...


    In diese Datei einfach folgendes hineinkopieren:


    Zitat

    Alias "/.well-known/acme-challenge" "/var/www/froxlor/.well-known/acme-challenge"

    <Directory "/var/www/froxlor/.well-known/acme-challenge">

    Require all granted

    </Directory>

    Und in nano mit "ctrl o" die Datei speichern und mit "crtl x" verlassen.


    jetzt noch Apache2 Neustart:


    • /etc/init.d/apache2 restart

    Die meisten hier gezeigten Befehle benötigen root Rechte. Wenn ihr einen anderen user mit sudo Rechten benutzt, muss den meisten Befehlen sudo vorangestellt werden.


    In meinem langen Weg zu einem erfolgreichen Setup, ist es mit immer wieder passiert, dass der Apache Server sich nicht mehr starten ließ! Das meldet der Befehl /etc/init.d/apache2 restart dann auch sofort zurück. Dabei gibt er auch an, in welchen beiden log Dateien man zusätzlich Infos bekommt. Diese bitte (ggf. mit sudo) so eingeben, wie in der Rückmeldung steht. In der Regel gab es bei mir falsche Einstellungen in Froxlor. Da aber der Apache2 jetzt nicht läuft, kommt man auch nicht mehr in Froxlor rein.


    Deshalb liegt die Lösung (fast) immer in dem Verzeichnis /etc/apache2/sites-enabled. Hier legt Froxlor alle Konfigurationen der Domains ab. Und wenn in den Log Dateien steht, dass hier z.B. ein Eintrag in einer dieser Dateien steht, der zu einem Fehler führt, z.B. in der Datei


    35_froxlor_ssl_vhost_myDomain.de.conf


    dann diese Datei mit


    • sudo nano


    anpassen oder mit


    • sudo mv 35_froxlor_ssl_vhost_myDomain.de.conf 35_froxlor_ssl_vhost_myDomain.de.conf.hide


    umbenennen, damit apache2 beim Restart diese Datei nicht mehr findet. Er schaut nur nach .conf Dateien.


    Mit diesen beiden Methoden konnte ich dann Apache2 immer wieder starten, dann in Froxlor rein und dort die Einstellungen korrigieren, denn ansonsten wird nach dem nächsten cronjob die conf Datei wieder falsch geschrieben.


    Fortsetzung folgt

    Nachdem es bisher kein "Tutorial" zu diesem Them gab, versuche ich mich einmal daran, eine Anleitung zu schreiben und zu kommentieren.

    Ich denke viele sehen die Notwendigkeit einen gesicherten Zugang zu einigen Domains mit Froxlor einzurichten.


    Die wesentlichen Schritte die notwendig sind, sind hier gut beschrieben.


    Deshalb werde ich mich an dieser Beschreibung entlang bewegen:


    Zitat

    Schritt 1

    Letsencrypt wird direkt als Admin in Froxlor unter Einstellungen => SSL Einstellungen aktiviert. In der Übersicht der Einstellungen natürlich auch noch SSL aktiv schalten.

    Man geht dazu in das Froxlor Server Management Panel und wählt auf der linken Seite unter System den Eintrag Einstellungen, dort findet man dann recht weit oben SSL Einstellungen, bei denen normalerweise noch aktiviert: Nein steht. Das Nein ändert man zu Ja. Dann erscheint rechts in der Zeile ein neuer Eintrag Einstellungen. Das klickt man an und kommt so zu den SSL-Einstellungen. Dort sind 3 Änderungen zu machen:


    1. Aktiviere SSL

      Erlaubt die Nutzung von SSL für den Webserver -> hier den Eintrag aktivieren
    2. Pfad zum SSL-Zertifikat

      Geben Sie den Pfad inklusive Dateinamen des Zertifikats an (meist .crt or .pem). -> Hier habe ich /etc/ssl/private/myDomain.de.crt gewählt

      Kommentar: zunächst müsst Ihr natürlich myDomain.de durch eure Domain ersetzen. Ist die Wahl des Verzeichnis richtig? Dieses Verzeichnis erlaubt Zugriff der Gruppe ssl-cert:

      drwx--x--- 2 root ssl-cert 4096 Feb 1 22:30 private

      Das spricht dafür. Andererseits wird später der Letsencrypt Schlüssel erzeugt (5 Dateien), aber in einem anderen Verzeichnis /etc/ssl/froxlor-custom abgelegt, welches root / root gehört. Ich habe deshalb die crt Datei (dazu später mehr) von froxlor-custom nach private kopiert. Ob auch ein Link funktioniert weiß ich nicht. Wenn es funktioniert, wäre das gut, weil man ansonsten alle 3 Monate, wenn ein neuer Schlüssel über den cronjob erzeugt wird. Wieder eine Kopie gemacht werden muss.
    3. Pfad zum SSL Private-Key

      Geben Sie den Pfad inklusive Dateinamen der Schlüssel-Datei an (der private-key, meist .key). -> Hier habe ich /etc/ssl/private/myDomain.de.key gewählt

      Kommentar: wie in Punkt 2


    Zusätzlich zu diesem Schritt würde ich gleich noch den Port anlegen:


    Dazu im Froxlor Panel links unter Ressourcen IPs und Ports wählen.


    Dort IP/Port hinzufügen wählen und dort die IP eintragen (die auch für Port 80 benutzt wird und die ihr von netcup erhalten habt) und als Port 443 eintragen (Standard https Port). Zusätzlich sind noch 3 Einträge zu machen unter Webserver-SSL-Konfiguration:


    1. Ist dies ein SSL-Port? -> Ja anklicken
    2. Pfad zum Zertifikat: den gleichen Pfad wie oben unter Punkt 2 eintragen (/etc/ssl/private/myDomain.de.crt)
    3. Pfad zum SSL-Private-Key: wie oben unter Punkt 3 (/etc/ssl/private/myDomain.de.key)

    Einträge speichern!


    Fortsetzung folgt im nächsten Beitrag.

    So, habe es jetzt im wesentlichen auf Basis des Artikels auf nichteinschalten.de und mit Zusatzinformationen durch Eure Beiträge hinbekommen.


    Habe den Server jetzt so eingerichtet, dass er das DreamFactory Framework über https zur Verfügung stellt und mir eine REST API auch für Firebird Datenbanken zur Verfügung stellt. ?


    Ich werde versuchen noch einmal eine kommentierte Anleitung zur Verfügung zu stellen, wie Froxlor und Letsencrypt eingerichtet werden können.

    Bin wieder ein Stück weiter. Habe noch einmal im Verzeichnis /etc/ssl/froxlor-custom/ nachgeschaut und neben den 3 oben genannten Dateien gibt es noch 2 weitere Datein <meine domain>.crt und <meine domain>.key


    Diese scheinen doch genau das zu sein, was ich benötige!


    Deshalb habe ich diese Dateinamen inkl. Pfad jetzt eingetragen. Das System findet diese noch nicht. Kann das an den Berechtigungen liegen?


    Zitat

    -rw------- 1 root root 2273 Feb 1 19:20 <meine domain>.de.crt

    Die Datei gehört root und kann nur von solchen Mitgleidern gelesen und geschrieben werden. Ist das ok?

    Habe einmal versucht das umzusetzen. Jetzt habe ich Letencrypt dazu bekommen, 3 Dateien zu erzeugen:

    Zitat

    /etc/ssl/froxlor-custom/<meine domain>.de_chain.pem

    /etc/ssl/froxlor-custom/<meine domain>_fullchain.pem

    /etc/ssl/froxlor-custom/<meine domain>_CA.pem

    Eine privkey Datei habe ich nicht.


    Dann habe ich zumindestens einen symbolischen Link eingefügt, der auf die Datei /etc/ssl/froxlor-custom/<meine domain>_fullchain.pem zeigt und eben den Eintrag im Froxlor befriedigt, also /etc/ssl/private/apache2.pem heißt.


    Im System-Log unter Froxlor finde ich beim Ausführen des cronjobs, dann aber:


    Zitat


    certificate file "/etc/ssl/private/apache2.pem" does not exist! Cannot create ssl-directives

    Habe auch einmal versucht den Pfad in Froxlor direkt auf die fullchain.pem zu setzen, aber dann ändert sich eben auch nur der Pfad in der System-Log, an dem das System das certificate file nicht finden kann.


    Was genau muss ich in die beiden Pfad Angaben schreiben?


    Diese beiden Einträge scheinen nicht zu stimmen:


    Pfad zum SSL-Zertifikat: /etc/ssl/private/apache2.pem

    Pfad zum SSL Private-Key: /etc/ssl/private/apache2.key


    Danke für die Rückmeldungen. Ich möchte es schon ohne weitere Tools hinbekommen und verstehen, was ich dort mache.


    Konkret habe ich ein paar Fragen zur Anleitung oben:


    Zitat


    Pfad zum SSL-Zertifikat: /etc/ssl/private/apache2.pem

    Pfad zum SSL Private-Key: /etc/ssl/private/apache2.key

    Wo kommen diese beiden Dateien her?


    Zitat

    openssl genrsa -out /etc/ssl/private/apache.key 2048

    openssl req -new -x509 -key /etc/ssl/private/apache.key -days 365 -sha256 -out /etc/ssl/certs/apache.crt

    Welche Schlüssel werden hier erstellt und zu welchem Zweck? Hängen sie irgendwie mit den apache2.xxx Dateien zusammen, deren Pfad bei Froxlor eingetragen wird?