Forum: PC-Programmierung Domain und Server


von Kolja L. (kolja82)


Lesenswert?

Guten Morgen

So langsam wird mir mein Webspace zu eng und ich würde mich gerne mit 
einem VServer veruchen (bzw habe mir schon einen V30 bei Strato 
geklickt).

Meine Domains liegen ja alle bei All-Inkl und können wegen mir auch dort 
bleiben.
"Verlinkt" bekomme ich das ja recht simpel über den A-Record der Domain.

Aber ich habe noch ein paar weitere Anfängerfragen:

1.) Aufrufe sollen nur über https erfolgen dürfen. Dazu habe ich bei 
AllInkl LetsEncrypt Zertifikate installiert. Das ist einfach und 
kostenlos.
Kann das auch so gemacht werden, wenn die Domain auf einen externen 
Server zeigt?
Auch mit Subdomains?

2.) Auf dem VSerser ist Plesk installiert und das ist natürlich sehr 
verlockend, aber auch nervig, denn viele Erweiterungen (Docker) sind 
kostenpflichtig (5(!)€/mtl).
Da ich aber keine Domain über Plesk angelegt habe, kann ich ja 
eigentlich gar nichts damit anfangen, oder?
Mailkonten und Subdomains mache ich ja, wie bisher, bei AllInk wo die 
Domains liegen.

3.) Wie können Subdomains auf verschiedene Services umgeleitet werden?
Z.B. von cloud.server.de auf die mittels Docker installierte Nextcloud.

Danke schon mal fürs Lesen und n lieben Gruß vom Schreibtisch

P.S.
Da ich bestimmt nicht der erste Mensch bin, der sich diese Fragen 
stellt:
Links zu guten Anleitungen helfen mir natürlich auch.
Gefunden habe ich zu so konkreten Fragen aber leider keine konkreten 
Antworten.

von moep (Gast)


Lesenswert?

Kolja L. schrieb:
> 1.) Aufrufe sollen nur über https erfolgen dürfen. Dazu habe ich bei
> AllInkl LetsEncrypt Zertifikate installiert. Das ist einfach und
> kostenlos.
> Kann das auch so gemacht werden, wenn die Domain auf einen externen
> Server zeigt?

Wenn du per A-Record auf den V-Server zeigst musst die Zertifikate auch 
auf dem V-Server installieren.

Kolja L. schrieb:
> Auch mit Subdomains?

Let's Encrypt macht seit einiger Zeit auch Wildcard-Zertifikate falls du 
das meinst.

Kolja L. schrieb:
> 3.) Wie können Subdomains auf verschiedene Services umgeleitet werden?
> Z.B. von cloud.server.de auf die mittels Docker installierte Nextcloud.

Reverse-Proxy lautet hier das Stichwort. z.B. mit nginx.
Ein (zufällige herausgegriffener) Beispiellink:
https://blog.linuxserver.io/2017/11/28/how-to-setup-a-reverse-proxy-with-letsencrypt-ssl-for-all-your-docker-apps/

von DPA (Gast)


Lesenswert?

moep schrieb:
>> Wie können Subdomains auf verschiedene Services umgeleitet werden?
>> Z.B. von cloud.server.de auf die mittels Docker installierte Nextcloud.
>
> Reverse-Proxy lautet hier das Stichwort. z.B. mit nginx.

Wer eine Domain verwaltet, kann unter anderem auch alle DNS Records für 
Sub-, Subsub-, usw. domains verwalten. In meinem fall bin das ich, in 
deinem fall aber dein Registrar / DNS-provider. Der kann widerum 
künstliche Einschränkungen machen. Wenn die A-records alle auf den 
selben server zeigen, dann braucht man dort aber wirklich eine art 
Proxy, um die zu unterscheiden. HTTP hat den Host header, TLS/SSL hat 
SNI. Mit denen geht das meistens, aber halt nicht für alles.

moep schrieb:
> Kolja L. schrieb:
>> Auch mit Subdomains?
>
> Let's Encrypt macht seit einiger Zeit auch Wildcard-Zertifikate falls du
> das meinst.

Auch direkt Subdomains gehen, wird aber schnell unübersichtlich. Für 
wildcard certs muss man die DNS basierte challange nehmen, die ist 
eventuwll etwas komplexer aufzusetzen. Man muss dafür nen bestimmten DNS 
record automatisch setzen können.

Bei Wildcards ist noch zu beachten, dass es da einen scope-mismatch 
zwischen DNS und Certs gibt. Bei certs geht das nähmlich nur für eine 
subomain ebene, während DNS da beliebig weit runter geht.

von Kolja L. (kolja82)


Lesenswert?

Hallo Moep

Danke für die Antworten, das bringt schon etwas Klarheit.
Zumindest weiß ich in welche Richtung ich weiter lernen muss.

Also CA für die Domain erstellen, Domain mittela A-Record auf Server-IP 
leiten, auf dem Server CA erstellen.
Wie die beiden CA zusammenkommen finde ich schon noch raus.

Ist es, für nicht-Konsolen-Nuter wie mich, sinnvoll Software wie 
Virtualmin oder Webmin zu nutzen?

Bei AllInkl gibt es, glaube ich, keine Windcard Zertifikate von 
LetsEncrypt.

Reverse-Proxy ist eins dieser Stichworte, die ich brauche um mehr zu 
lesen, danke!

Zum allgemeinen Vorgehen:

Server läuft, Docker ist über SSH installiert, Plesk lasse ich erstmal 
außen vor.

Nächste Schritte:
Server absichern: fail2ban, sshguard, UFW installieren und neuen User 
mit Root-Rechten erstellen

Schaffe ich alles über die Konsole, aber über Webmin o.ä. wäre es mir 
lieber.

von Jack V. (jackv)


Lesenswert?

Kolja L. schrieb:
> Ist es, für nicht-Konsolen-Nuter wie mich, sinnvoll Software wie
> Virtualmin oder Webmin zu nutzen?

Nein.

Sinnvoll ist’s, sich mit dem Kram vertraut zu machen, den man da 
betreiben will. Idealerweise bevor man ’nen (v)Server überhaupt 
mietet. In ’nem anderen Forum, zu einer der von mir bevorzugten 
Distributionen, erscheinen recht regelmäßig Threads zu Problemen, die 
von solcher Software verursacht wurden. Oft genug läuft’s auf 
Neuinstallation hinaus, weil die Software richtig was verkackt hat.

Abgesehen davon ist’s ein beliebtes Angriffsziel – gerade Webmin glänzt 
da dann öfter mal. Leute, die sich damit nicht auskennen, schieben’s 
dann aber auf die Distribution („xxx ist total instabil, muss man 
dauernd neu installieren – und unsicher ist’s auch, wird bei mir immer 
aufgemacht!“), und das ist höchst bedauerlich.

Linuxkisten werden nunmal sinnvollerweise über die Shell bedient. Wenn 
du was zum Rumklicken haben musst: es gibt auch Windows Server – das ist 
genau dafür ausgelegt.

von moep (Gast)


Lesenswert?

Kolja L. schrieb:
> Also CA für die Domain erstellen, Domain mittela A-Record auf Server-IP
> leiten, auf dem Server CA erstellen.
> Wie die beiden CA zusammenkommen finde ich schon noch raus.

Mit CA meinst du vermutlich das Zertifikat für die Domain.
Die CA (Certificate Authority, Zertifizierungsstelle) ist in dem Fall 
Let's Encrypt, also derjenige der dir dein Zertifikat ausstellt.

Wenn du später alle Dienste auf deinem V-Server hast und die Domain per 
A-Record auf den Server umleitest brauchst du beim Domainanbieter 
(AllInk) kein Zertifikat erstellen. Nur auf dem Server der auch 
tatsächlich den Dienst anbietet.
Die Frage wie die beiden zusammenkommen stellt sich also nicht :)
Somit auch nicht, ob es bei AllInk Wildcard-Certs gibt oder nicht.

von DPA (Gast)


Lesenswert?

Kolja L. schrieb:
> Bei AllInkl gibt es, glaube ich, keine Windcard Zertifikate von
> LetsEncrypt.

Für LetsEncrypt Zertifikate bist du nicht wirklich auf AllInkl 
angewiesen (Sofern die nicht stillschweigend CAA Records anlegen.). Die 
Domain selbst kann man nicht mit einem Zertifikat schützen. Es sind in 
der regel TLS/SSL Verbindungen zum Zielserver, die mit Zertifikaten 
geschützt werden, das Zertifikat braucht nur der Zielserver. Für normale 
Zertifikate mit Webchallange ist das sehr einfach, die meisten ACME 
Clients können Webserver automatisch so konfigurieren, dass die 
Challange und die Zertifikate gehen. Wildcards sind etwas aufwendiger.

Für Wildcard Zertifikate musst du nur automatisiert einen TXT Records 
für  _acme-challenge.deine-domain.tld setzen können. Die Möglichkeiten, 
die AllInkl bietet, scheinen ausreichend zu sein, um Wildcardzertifikate 
zu erlangen. Ich sehe zwar gerade keine gute API, um direkt einen TXT 
record zu setzen, aber A und NS sind wohl möglich. Das macht es zwar 
etwas komplexer, sollte aber ansonsten kein Problem sein, man kann da 
nämlich für _acme-challenge.deine-domain.tld den Zielserver DNS Server 
spielen lassen, und den TXT dann dort automatisch updaten. Das wäre 
dann:
1
ns1.meinedomain.tld.              A  11.22.33.44 ; Glue record. Mit IP für Zielserver ersetzen
2
_acme-challenge.deine-domain.tld  NS ns1.meinedomain.tld. ; Wir kümmern uns selbst um die Zone

Auf dem Zielserver könnte man dann bind9 installieren, als 
authoritativen Server einrichten, eine Zohne für 
_acme-challenge.deine-domain.tld anlegen, je nach dem wie mans' updated 
DNS Zohne Updates für aktivieren, einen ACME Client, der das unterstützt 
installieren, und das wärs eigentlich, der liefert dann die Zertifikate.


Jack V. schrieb:
> Abgesehen davon ist’s ein beliebtes Angriffsziel – gerade Webmin glänzt
> da dann öfter mal.

Für Interne, Private  & Administrative Software, die potentiell 
Sicherheitslücken haben könnte, mach ich das Folgendermaßen:

Zuerst kommt ein Webserver*, der nur Loadbalancing, Reverse Proxy und 
Authentifizierung macht. Der leitet dass dann auf die anderen Webserver* 
weiter, die nicht direkt von aussen erreichbar sein sollten. 
Öffentliches und Privates kommen nicht auf den selben Webserver*. 
Resultat ist dann, dass mir Misskonfigurationen bei dem Webserver* für 
Privates zeug egal sein können, weil ja zuerst ein Login beim Webserver* 
für die Authentifizierung nötig ist, bevor man überhaupt zu dem kommt. 
Einfach daran denken, die Firewall / iptables regeln zuerst 
einzurichten.

* Die Software, nicht die Hardware

von Imonbln (Gast)


Lesenswert?

Kolja L. schrieb:
> Zum allgemeinen Vorgehen:
>
> Server läuft, Docker ist über SSH installiert, Plesk lasse ich erstmal
> außen vor.
>

Suboptimal, es ließt sich zwischen den Zeilen so als würdest du da von 
Hand Dinge installieren. die meisten Server sind kein Selbstzweck und 
wenn du oder jemand anderes in ein paar Monaten/Jahren, den Server neu 
aufsetzen will/muss, geht das große Rätselraten los was wurde denn 
gemacht?

ich Empfehle dir mal nach "Pets and Cattles" zu googlen (vielleicht mit 
Devops, zusätzlich), wichtig ist das du alle Änderungen an deinen Server 
nachvollziehbar machst, damit du im zweifel Nachts um 3 nach einer 
durchgemachten Nacht den Server in endlicher Zeit neu aufsetzen kannst.

Kolja L. schrieb:
>
> Schaffe ich alles über die Konsole, aber über Webmin o.ä. wäre es mir
> lieber.

Frei nach Loriot, "vielleicht stimmt mit deinem Gefühl etwas nicht" ;)

Mal ernsthaft unter Unix/Linux hat die Konsole eine alte Tradition und 
der Vorteil, ist das man Dinge die man in der Konsole kann, auch ganz 
schnell in ein Script/Programm gießen kann, so das die Langweiligen 
Tasks schnell Automatisiert sind. Ich kann dir nur wärmsten empfehlen 
dich darauf einzulassen. Abgesehen davon braucht man für eine GUI noch 2 
dutzend zusätlicher Pakete welche im zweifel Sicherheitslücken aufreißen 
die man sonst nicht hat.

Kolja L. schrieb:
> Nächste Schritte:
> Server absichern: fail2ban, sshguard, UFW installieren und neuen User
> mit Root-Rechten erstellen

Die Idee ist gut. Ich empfehle als erstes alles zu deinstallieren, was 
du nicht brauchst. (Ist machmal Tricky zu erkennen ob man es braucht). 
Dann den ssh Deamon auf Key only Access umstellen. was Vermutlich mehr 
bringt als ein sshguard, nicht das der nicht auch zusätzlich eine gute 
Lösung ist.
Ob UFW was bringt weiss ich nicht. Ist wahrscheinlich besser als nichts 
aber ich neige dazu meine NFT Firewall lieber selbst zu Konfigurieren, 
das ist kein Hexenwerk.

Denn neuen Nutzer mit root rechten, halte ich für keine Gute Idee, das 
ist eher "security by obscurity", ich würde ausgewählten Benuzter die 
Möglichkeit geben via sudo oder su, root zu werden und den ssh Server so 
Konfigurieren das root sich gar nicht anmelden darf.

Und danach solltest du dich mit capabilities and hardeing beschäftigen 
um die Services welche du betreibst so sicher wie möglich zu bekommen.

von Kolja L. (kolja82)


Lesenswert?

Guten Abend

Danke für die ganzen Beiträge, jetzt bin ich wieder um ein paar Fragen 
reicher.

Jack V. schrieb:
> Sinnvoll ist’s, sich mit dem Kram vertraut zu machen, den man da
> betreiben will.
Genau das habe ich ja vor und wenn es um DNS und SSL geht, bringt mir 
mein Rechner im Heimnetzwerk oder ein per dynamicher IP aufrufbarer 
Rechner nicht viel. Dafür habe ich mir jetzt den VServer gemietet.

DPA schrieb:
> Es sind in
> der regel TLS/SSL Verbindungen zum Zielserver, die mit Zertifikaten
> geschützt werden, das Zertifikat braucht nur der Zielserver.
Danke, der Hinweis war notwendig und hilfreich.

DPA schrieb:
> Für Wildcard Zertifikate musst du nur automatisiert einen TXT Records
> für  _acme-challenge.deine-domain.tld setzen können.
Die Automatisierung nur aus Bequemlichkeit, damit das Zertifikat nicht 
bei jeder Subdomain einzeln eingepflegt werden muss?

Für wildcards von LetsEncrypt habe ich hier eine Anleitung gefunden:
https://www.techox.de/blog/debian-9-wildcard-ssl-zertifikat-von-lets-encrypt/

DPA schrieb:
> Zuerst kommt ein Webserver*, der nur Loadbalancing, Reverse Proxy und
> Authentifizierung macht. Der leitet dass dann auf die anderen Webserver*
> weiter, die nicht direkt von aussen erreichbar sein sollten.

Das klingt einleuchtend.
Also der erste Server (wie oben genannt z.B. nginx) nimmt die Anfragen 
an und leitet diese, je nach Subdomain in der Anfrage, an das 
entsprechende Verzeichnis auf dem zweiten Webserver (gerne Apache) 
weiter und dieser verarbeitet die Anfrage dann.
Loadbalancing wird wohl ehr nicht notwendig sein...

Imonbln schrieb:
> Suboptimal, es ließt sich zwischen den Zeilen so als würdest du da von
> Hand Dinge installieren.
Ja, wie auch sonst?

Imonbln schrieb:
> Mal ernsthaft unter Unix/Linux hat die Konsole eine alte Tradition und
> der Vorteil, ist das man Dinge die man in der Konsole kann, auch ganz
> schnell in ein Script/Programm gießen kann, so das die Langweiligen
> Tasks schnell Automatisiert sind.
Alles was ich bisher gemacht habe, bzw was ich macher werde, wird 
natürlich dokumentiert.
Dab mich n Keks gefreut, als ich diese Datei gefunden habe: 
~/.bash_history

Imonbln schrieb:
> Abgesehen davon braucht man für eine GUI noch 2
> dutzend zusätlicher Pakete welche im zweifel Sicherheitslücken aufreißen
> die man sonst nicht hat.

Imonbln schrieb:
> Ich empfehle als erstes alles zu deinstallieren, was
> du nicht brauchst.

Mehr Pakete sind immer größeres Risiko, aber bevor ich anfange bekannter 
Software zu misstrauen, oder Pakete zu deinstallieren, werde ich dieses 
Risiko wohl eingehen müssen.

So, jetzt erst mal was essen.

Gruß Kolja

von DPA (Gast)


Lesenswert?

Kolja L. schrieb:
> DPA schrieb:
>> Für Wildcard Zertifikate musst du nur automatisiert einen TXT Records
>> für  _acme-challenge.deine-domain.tld setzen können.
> Die Automatisierung nur aus Bequemlichkeit, damit das Zertifikat nicht
> bei jeder Subdomain einzeln eingepflegt werden muss?
>
> Für wildcards von LetsEncrypt habe ich hier eine Anleitung gefunden:
> https://www.techox.de/blog/debian-9-wildcard-ssl-zertifikat-von-lets-encrypt/

Zertifikate laufen irgendwann ab. Die, die von LetsEncrypt ausgestellt 
werden, tun das momentan nach je 90 Tagen. Man sollte sie erneuern, 
bevor das passiert. Ich mach das automatisiert einmal pro Monat. Da 
ständig von neuem wieder dran denken zu müssen, und manuell den Eintrag 
anlegen zu müssen, wäre mir auf dauer zu umständlich. Und falls dabei 
was schief geht, lass ich das System mir ne mail schicken.

von Kolja L. (kolja82)


Lesenswert?

Nabend DPA

Das mit der Gültigkeit war mir nicht mehr bewusst.
Für Domains bei AllInkl kann ein Häkchen bei "automatisch erneuern" 
gesetzt werden.
Jetzt weiß ich zumindest, schon mal was dahinter steckt.

AkkInkl hat eine API, von der ich schon oft Gutes gehört,
aber sie noch nie selbst angewendet habe.

Eine schnelle Suche ergab das hier:
1
add_dns_settings(array $parameter) 
2
folgende Parameter sind möglich:
3
    kas_login: das betreffende KAS Login
4
    kas_auth_data: die Authentifizierungsdaten
5
    kas_auth_type: der Authentifizierungstyp
6
    zone_host: die betreffende Zone
7
    record_type: der TYPE des Resource Records (MX,A,AAAA usw)
8
    record_name: der NAME des Resource Records
9
    record_data: die DATA des Resource Records
10
    record_aux: die AUX des Resource Records
https://kas.all-inkl.com/schnittstelle/dokumentation/phpdoc/packages/API%20Funktionen.html

Und ich bin bestimmt nicht der erste, der diese Funktion benötigt.
Da wird sich schon was finden.

Gruß Kolja

von Jack V. (jackv)


Lesenswert?

Kolja L. schrieb:
> Genau das habe ich ja vor und wenn es um DNS und SSL geht […]

… gibt’s noch wirklich viele Dinge zu lernen, bevor man sich darum 
kümmern muss. Dann stellten sich auch so Fragen nach Webmin oder 
Schlimmerem nicht mehr.

Aber gut, was weiß ich Noob schon. Fahre ja auch erst seit neunzehn 
Jahren Server :)

: Bearbeitet durch User
von M. P. (phpmysqlfreak)


Lesenswert?

Webmin ist bei mir schon lange wieder rausgeflogen...

Ich bin auch nicht bei AllInkl - sondern hab meine Domains bei INWX.de. 
Mit der API lässt sich sogar eine DynDNS realisieren.
LetsEncrypt funktioniert auch tadellos - wobei ich da in Zukunft ein 
wenig ändern muss, mit den Subdomains wirds wirklich unübersichtlich, 
aber Wildcard will ich auch nicht. :D - Vielleicht werde ich von 
Virtual-Domains für nginx auf separate Einträge in der config übergehen. 
- Unübersichtlich wird es (bei mir!) zumindest nicht.

Den restlichen Tips bzgl. erst auseinandersetzen, dann mieten, dann 
hardening, kann ich mich voll anschließen.

Dazu kannst du z. B. in deinem Netz erstmal nen DNS-Server aufsetzen, 
als Forwarder für alles, außer einer "Testdomain", für die der DNS 
authoritativ ist. - Darunter trägst du dann IPs für die "server" ein
Diesen Server kannst du dann nach belieben testen und mit Pentests 
befeuern, und wenn alles nach deiner Zufriedenheit läuft, das Setup auf 
den VServer übertragen. - So läufst du auch erstmal keiner Gefahr der 
Kompromitierung des Systems, da es Anfangs eh nur aus deinem Netz 
erreichbar ist. ;)

Ich denke, wenn du nett fragst, kann dir der ein oder andere bei 
spezifischen Problemen auch via PN Antworten, sofern es etwas 
sensibleres ist, was du nicht veröffentlichen willst. - Jeder 
Serverbetreiber mag es, wenn er weniger "Ziel" von Bots ist, um die er 
sich vielleicht kümmern muss ;)

von DPA (Gast)


Lesenswert?

Kolja L. schrieb:
> AkkInkl hat eine API, von der ich schon oft Gutes gehört,
> aber sie noch nie selbst angewendet habe.

Oh, ja, das sieht gut aus. Damit müsste es machbar sein. Ich schau mir 
das morgen mal genauer an.

Scheint hinten dran ein WSDL zu sein[0], mit nur einer methode, die 
eigentliche API mit nem JSON aufruft. Etwas ungewöhnlich, da hätten die 
gleich ne richtige REST Schnitstelle bauen können. Sollte aber ansonsten 
kein Problem sein.

0) https://kasapi.kasserver.com/soap/wsdl/KasApi.wsdl

von Markus M. (adrock)


Lesenswert?

Imonbln schrieb:

> ich Empfehle dir mal nach "Pets and Cattles" zu googlen (vielleicht mit
> Devops, zusätzlich), wichtig ist das du alle Änderungen an deinen Server
> nachvollziehbar machst, damit du im zweifel Nachts um 3 nach einer
> durchgemachten Nacht den Server in endlicher Zeit neu aufsetzen kannst.

Ach dieser Devops scheiß :-)

Für gewisse Szenarien ist der Ansatz ja sogar ganz gut, aber dann muss 
es auch wirklich durchdacht aufgesetzt werden. Hatten gerade ein ganz 
"tolles" Projekt dazu beim AG. Ein Devops Superhero wurde eingestellt, 
hat jetzt >1 Jahr Zeit verbracht und sich immer weiter in irgendwelche 
Devops-Kapriolen mit immer neuen Tools verrannt um eine 1000% Lösung zu 
schaffen, anstatt mal ein Ergebnis zu liefern das zumindest 70% 
brauchbar gewesen wäre. Achja, er hat jetzt gekündigt.

Wenn man mal davon ausgeht, dass auf dem Server auch irgendwelche 
relevanten Daten liegen, wäre doch vlt. ein Backup sinnvoller? Ja ich 
weiß, ist völlig out und "old school", kein Devops-Buzzword-Bingo etc. 
Aber habe gehört es soll sogar funktionieren.

von DPA (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin ja nicht so ein Fan vom Scripting mit php, ich finde das etwas 
overkill.

In Anhang ist mal ein versuch von mir, die Schnitstelle mit python3 
anzusprechen, um einen TXT Record anzulegen. Getestet hab ich es zwar 
nicht, aber ich glaube es müsste eigentlich so ungefähr passen. kas.py 
implementiert sich um den API spezifischen kram, und main.py nutzt 
kas.py um die API anzusprechen. Ich hab hier jetzt mal keine SOAP 
Libraries oder dergleichen genommen, es erschien mir ein wenig Overkill 
zu sein, wenn man beachtet, dass das da im Grunde sowieso nur ein JSON 
in ein XML gepackt wird.

Es ist zwar noch zu beachten, dass es einen DNS Record mehrfach mit 
unterschiedlichem Wert geben kann, eventuell muss man da also neben dem 
Hinzufügen noch das Abfragen, updaten und Löschen von DNS Records 
anschauen.

Falls das funktioniert, müsste man das nur noch mit einem geeigneten 
ACME Client verheiraten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.