(Info) Kleine Letsencrypt + nginx Anleitung

Begonnen von Wernieman, 25 Januar 2019, 12:06:33

Vorheriges Thema - Nächstes Thema

HoTi

Zitat von: Wernieman am 13 Februar 2019, 09:17:04
1. Wo siehst Du in Deiner Antwort das: "nginx/1.10.3"??
2. Das acme-challenge wird von letsencrypt angelegt und anschließend auch wieder aufgeräumt.
3. Geb uns bi8tt mal Deinen "letsencrypt-Aufruf" ...

Und .. auf welchem Betriebsystem mit welcher letsencrypt-Version?

1. Wenn ich versuche die Testdatei auf zu rufen. Wie du sie gepostet hast.
2. ok das erklärt warum ich das nicht sehe
3. letsencrypt certonly --webroot -w /usr/share/nginx/html -d ort.nachname.net
Analog deinem ersten Post!
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Wernieman

Sorry wegen 1. aber ...

siehst Du jetzt die Datei, oder bekommst Du (von außen) ein 404?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

HoTi

Wenn ich von außen auf http://ort.nachname.net/.well-known/test.txt zugreife kommt:

Zitat
404 Not Found
nginx/1.10.3
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

HoTi

Oh,

so ein blöder Fehler!! jetzt geht es auch, das fehlte mir beim neu aufgesetzten:

$ sudo unlink /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/reverse-proxy /etc/nginx/sites-enabled/reverse-proxy


Danke dir, jetzt mache ich mal mit deiner Anleitung weiter!
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Wernieman

Dann kannst DU jetzt mit letsencrypt testen ;o)

Der macht schließlich nichts anderes, als mein "Test". Du kannst übrigens die Test-Datei wieder löschen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

FunkOdyssey

Ich finde das Thema hier aktuell sehr spannend, denn ich überlege, wie ich meinen Nginx-Proxy besser absichern kann.

Bei mir läuft alles in einer Docker-Umgebung (nginx-proxy von jwilder und docker-letsencrypt-nginx-proxy-companion). Ich nutze die Variante mit den getrennten Containern: https://github.com/jwilder/nginx-proxy/#separate-containers . So habe ich keine kritischen Container, die auf den Docker-Stack Zugriff haben.

Die Ports 80/443 sind von außen erreichbar. Nicht nur für LetEncrypt-ACME, sondern auch natürlich für den FHEM-Zugriff.
Das Ganze ist mit einer simplen htpasswd (apache2-utils) geschützt.

Die Reverse Proxy-Lösung ist unter Docker mit nur wenigen Zeilen und ohne großen Aufwand umsetzbar.

Aber ich würde gerne das System vor Brute Force-Angriffen schützen.

@Wernieman: Ist fail2ban unter Docker wirklich so kompliziert? Hast du Tipps oder ein Best Practice zu diesem Thema?

Oder gibt es vielleicht viel bessere Ideen?

Wernieman

Ich sehe persöhnlich (und so habe ich es auch auf der Arbeit umgesetzt) als "Dienstleistung des Docker-Server.

Also nginx (als Proxy), ssh, fail2ban und docker auf einem Server. Der "Rest" im Container.

Der nginx-proxy von jwilder  hat den Nachteil, das der Container in allen Docker Netzen sein muß. Habe mir deshalb in eigenes Script geschrieben, was den nginx automatisch Konfiguriert und eben von host-Seite kommt.

Bezüglich Sicherheit:
Es ist relativ einfach (nicht nur mit dem aktuellen Problem) aus einem Docker-Container auszubrechen. Ich sehe also docker erstmal NICHT als Sicherheitsgewinn. Der Vorteil ist, das in einem Container nur das "installiert" sein muß, was man braucht. Ein Anfreifer also in seinen Möglichkeiten beschränkt wird.

Nur mals als Beispiel Wordpress. Die meisten Probleme liegen in Zusatzmodulen. Wenn eine Instanz aber ein Modul X nicht braucht und deshalb nicht installiert hat, kann es nicht angegriffen werden ....

Deshalb bin ich auch gegen "fette" Container, wie z.B. der in einem anderen Thread eingearbeitete FHEM-Container. Container müssen "schlank" sein ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

HoTi

Hallo Wernieman,

leider komme ich nicht klar :-( Ich habe es einfach nicht verstanden.
Ich versuche deine Anleitung mit der zu verbinden https://wiki.fhem.de/wiki/HTTPS-Absicherung_%26_Authentifizierung_via_nginx_Webserver und zu verstehen was ich da mache.
Leider bekomme ich es nicht hin FHEM mit deinem Zertifikatsweg von aussen erreichbar zu machen :-(
Könntest du mir nochmal auf die Sprünge helfen?

Vg
Tim
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Wernieman

Hast Du jetzt das Problem, nginx sicher zu machen oder ein Zertifikat zu kriegen?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

HoTi

Nginx und fhem zusammen laufen zu lassen. Ich muss ja die nginx config anpassen damit auch fhem erreichbar ist. Da fehlt mir das wissen wie das geht. Ein Zertifikat habe ich erstellen können, aber wie gehts nun weiter?
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

Wernieman

.. Sorry aber dieser Thread bezieht sich auf letsencrypt und nginx.

Nicht auf nginx als Proxy für fhem, dafür bitte neuen Thread ....

Dir ist klar, das Dein Konstrukt im Netz hängt, also abgesichert sein muß? Jeder Mensch mit Internetanschluß kann ansonsten auf Dein System zugreifen. Ich bin mir nicht so sicher, ob Du das Wissen hast, dieses Umzusetzen. Deshalb hatte ich auch keine Anleitung dafür gepostet.

Ist jetzt nicht persönlich gemeint, habe aber beruflich genug damit zu tun, Angriff von solchen Gekaperten Systemen abzuwehren ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

majorshark

#26
Hallo,

wie ich jetzt festgestellt habe werden auf meiner Synology die Zertifikate nicht verlängert. Das betrifft aber nur die , die eine eigene Konfiguration besitzen.  Ein "renew" wird für alle nicht auf der Synology gehosteten Dienste mit einer Fehlermeldung quittiert. Was auch etwas seltsam ist, dass die Konfiguration bislang funktioniert hat und die Zertifikate einwandfrei erneuert wurden


/usr/syno/sbin/syno-letsencrypt renew-all -v

DEBUG: start to renew [/usr/syno/etc/certificate/_archive/NtTBO7].
DEBUG: setup acme url https://acme-v01.api.letsencrypt.org/directory
DEBUG: GET Request: https://acme-v01.api.letsencrypt.org/directory
DEBUG: strat to do new-authz for dm500.frank.dyn-vpn.de
DEBUG: ==> start new authz.
DEBUG: new authz: do new-authz.
DEBUG: Post JWS Request: https://acme-v01.api.letsencrypt.org/acme/new-authz
DEBUG: Post Request: https://acme-v01.api.letsencrypt.org/acme/new-authz
DEBUG: new authz: setup challenge env.
DEBUG: new authz: http-01 challenge.
DEBUG: Post JWS Request: https://acme-v01.api.letsencrypt.org/acme/chall-v3/59297993/dKQBqQ
DEBUG: Post Request: https://acme-v01.api.letsencrypt.org/acme/chall-v3/59297993/dKQBqQ
DEBUG: new authz: http-01 check result.
DEBUG: GET Request: https://acme-v01.api.letsencrypt.org/acme/authz-v3/59297993
DEBUG: GET Request: https://acme-v01.api.letsencrypt.org/acme/authz-v3/59297993
DEBUG: Not synology DDNS.
DEBUG: DNS challenge failed, reason: {"error":108,"file":"challenge.cpp","msg":"Not synology DDNS."}

DEBUG: Normal challenge failed, reason: {"error":102,"file":"client.cpp","msg":"Invalid response from https://dm500.frank.dyn-vpn.de/.well-known/acme-challenge/F9Gh_4R-Dbn60TdQqlbRTMSfJfPsiRGEmzl9FtPWbQM [92.117.43.29]: \"<html>\\r\\n<head><title>401 Authorization Required</title></head>\\r\\n<body>\\r\\n<center><h1>401 Authorization Required</h1></center>\\r\\n<h\""}


Wenn ich die Fehlermeldung richtig interpretiere findet der Let's Encrypt die Domain mit der Zufällig erstellten Datei nicht mehr. Deswegen habe ich meine Fehlersuche auf die  "location ^~ /.well-known/acme-challenge ...." Konfiguration konzentriert. Ist es aber scheinbar nicht.

Für den Moment komme ich hier nicht weiter. Wer hat noch eine Idee zu diesem Fehler.


Edit:
Ich hatte gerade noch eine Idee und den Fehler gefunden. In der zusätzlichen Konfiguration ist die Umleitung zu https Schuld an dem Fehler.

return 301 https://dm500.frank.dyn-vpn.de$request_uri;


Die Frage ist jetzt nur wie die Config in diesem Punkt aussehem muss?

Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

DS_Starter

Moin,

könnte es sein, dass das Problem durch das neueste DSM Update gelöst wird ... oder aber dadurch verursacht wurde ?  :)


Version: 6.2.2-24922-3
(2019-08-21)

Important Note

    The update is expected to be available for all regions within the next few days, although the time of release in each region may vary slightly.
    This update will restart your Synology NAS.

What's New

    Updated the protocol of Let's Encrypt to ACME V2 to enhance the stability of the registration process.

....


Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

majorshark

Moin Heiko,

das habe ich auch schon gelesen. Daran liegt es, wie ich jetzt weiß, nicht.

Ich hatte den Beitrag oben gerade editiert.

Zitat
Ich hatte gerade noch eine Idee und den Fehler gefunden. In der zusätzlichen Konfiguration ist die Umleitung zu https Schuld an dem Fehler.

return 301 https://dm500.frank.dyn-vpn.de$request_uri;

Die Frage ist jetzt nur wie die Konfig in diesem Punkt aussehen muss?

Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Wernieman

Änder die Umleitung doch einfach, das letsencrypt NICHT auf https umgebogen wird ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html