ubuntuusers.de

Apache: Hostname + Subdomain?

Status: Gelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

MultiUser

Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

Moin Leute,

bin noch relativ blutiger Anfänger bei Ubuntu Server, zumindest was Apache angeht.

Ich habe einen Ubuntu Server 14.04 auf einem kleinen Server laufen. Der Server ist hier im Heimnetzwerk und hängt an einer FritzBox. Port 80 ist von außen erreichbar, DDNS per FritzBox eingerichtet (Subdomain bei Shared Hosting). Den Apache habe ich schon mit "ServerName localhost" in der apache2.conf von der Fehlermeldung beim restart oder reload befreit.

Ich möchte nun einige Dienste auf dem Server per Subdomain erreichbar machen und den Server auch mit www. ansprechbar machen. Da ich bisher localhost verwendet habe, dachte ich, dass ich einfach einen Alias in dem <VirtualHost *:80> einrichte: www.localhost Klappt natürlich nicht. Und das bringt mich zu der Frage wie ich das hinbekommen kann, aber auch noch vielmehr: Ich scheine da was vom Konzept her einfach nicht zu verstehen: Es wird immer in der Doku von Domains gesprochen, aber ich habe keine Domain in dem Sinne.

Ich habe einen Hostname vom Server, eine interne IP vom Server (192.168. ...), die FritzBox hat ne öffentliche Adresse, DDNS ist eingerichtet und das war's. Was zum Teufel sollte ich beim Apache denn anderes als localhost oder test eintragen und was muss ich tun, damit www. als Alias läuft und neue Subdomains mit vhost anlegen kann?

Wenn mir da jemand auf die Sprünge helfen und mir das verständlich machen könnte wäre ich sehr dankbar. Ich habe mich jetzt schon ne Weile durch's Netz gewühlt...

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21833

Wohnort: Lorchhausen im schönen Rheingau

Hast Du denn einen DNS-Eintrag www, der auf deinen Server zeigt? Oder eine entsprechende Hosts-Datei auf dem aufrufenden PC?

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

Die FritzBox führt den Server mit Hostname und IP auf. DNS macht die FritzBox selbst und der Server holt sich von ihr eine (in der FritzBox fest eingestellte) IP via DHCP. Den Rechnern im LAN (und den Rechnern über's Internet per Port Forwarding) ist der Server also bekannt, bzw. der Hostname wird aufgelöst. Zum Verbinden via SSH oder HTTP brauche ich auf dem Client immer nur den Hostname. Einträge in den hosts-Dateien der Clients will ich nicht machen. Es soll ohne Client-Modifikationen funktionieren.

Was ich nicht verstehe ist, warum ich einen DNS-Eintrag auf www brauche (mal abgesehen davon, dass ich nicht wüsste wie ich den in der FritzBox anlegen müsste, außer direkt per SSH und dann irgendwas unter der Haube zu verbiegen). Reicht es denn nicht, wenn der Server an sich per IP und Hostname bekannt ist und der Client beim Server anfragt und der Server dann die Subdomain intern auf z.B. ein anderes RootDirectory weiterleitet? Zumindest dachte ich immer, dass das so funktioniert. Client → Server-Hostname → Server behandelt die Subdomain-Anfrage intern.

Wenn nicht: Wie funktioniert das denn dann und was müsste ich machen?

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21833

Wohnort: Lorchhausen im schönen Rheingau

gehen wir mal durch, was passiert, wenn Du den webserver ansprichst:

  1. Du tippst den namen (in dem Fall www ) in die Adressleiste

  2. Der Browser versucht, den Namen durch einen Eintrag in der hosts, DNS oder einen lokalen hostnamen (klappt nicht immer) aufzulösen

  3. Kann der Name zu einer IP aufgelöst werden, verbindet sich der Browser zu dieser IP und sendet den namen als HTTP-Header mit

  4. Der angesprochene Server liefert abhängig vom mitgesendeten namen entweder die Site aus oder seine default-Seite

An diesem grob vereinfachten Beispiel siehst Du, dass Du an 2 Stellen eingreifen musst. bei 2. musst Du auf irgendeine Art und Weise dem aufrufenden Rechner klar machen, dass "www" mit der IP deines Servers aufgelöst werden muss. Bei 4. musst Du dann einen vhost definieren, der diese Anfrage entgegennimmt, wobei dir der default-vhost reicht, wenn ich dich richtig verstehe

mandrake1988

Anmeldungsdatum:
25. Dezember 2008

Beiträge: 68

Wohnort: Berlin

Hi,

Mit einer öffentlichen Subdomain von einem dynamic DNS Anbieter kannst du genau diese eine Adresse einer dynamischen IP zuordnen - das war und ist der Zweck dieser kostenlosen Angebote. Dann interessiert der interne Hostname oder die interne IP aber niemanden und mit Aliasen/Virtual Hosts wirst du rein garnichts erreichen. Willst du mehrere Dienste anbieten, Subdomains benutzen und und und brauchst du

  • eine statische IP-Adresse für deinen Anschluss (gibt es z.B. für Firmen als Business-Angebot schon lange)

  • einen gemieteten/gehosteten Server, welcher mit statischer IP in einem Rechenzentrum betrieben wird

  • eines der Plus-Pakete von dynamic DNS Anbietern, die dir eigene DNS-Verwaltung und Wildcard-Domains erlauben, am besten mit einer eigenen Domain - die werden aber definitiv was kosten (20-25$ pro Jahr ca)

Dann kannst du dem Apachen jede einzelne Subdomain entweder als Alias oder als eigener virtueller Host kenntlich machen.

Wenn du sowas nicht willst vergiss dein Vorhaben wieder, dann wirst du das nur mit ganz viel Ahnung und nem total übertriebenen Aufwand hinbekommen - das gibt dann aber ein großes Gefrickel.

Grüße, mandrake

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

redknight schrieb:

Browser versucht, den Namen aufzulösen

Nur als Verständnisfrage: Es ist also nicht so wie ich es immer angenommen hatte, dass der Browser den Hostnamen oder die Haupt-Domain aufzulösen versucht, sich dorthin verbindet und dann einfach nur die Subdomain beim Server anfragt, sondern die Subdomain als eigenständige "Domain" betrachtet? Sprich: serverhostname und www.serverhostname sind für den Browser zwei vollkommen unterschiedliche "Domains"? Also so unterschiedlich wie example.com und example.de?

Den Punkt 4. möchte ich in der Apache-Config machen. Das müsste, wenn ich das richtig verstanden habe, also auch mit www.localhost hinbekommen bzw. www.serverhostname?

Punkt 2... hm... Ich müsste also irgendwie den DNS der FritzBox um diesen Eintrag ergänzen, wenn ich das richtig sehe...?

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

mandrake1988 schrieb:

Mit einer öffentlichen Subdomain von einem dynamic DNS Anbieter

In diesem Fall bietet mir mein Hoster (Shared Hosting) nur die Möglichkeit, DDNS auf eine Subdomain meiner bei dem Hoster liegenden DE-Domain zu legen, was ich derzeit nutze. Server hinter der FritzBox spreche ich über verschiedene Ports an, die dann von der FritzBox auf die entsprechenden Server auf Port 80, usw. umgeleitet werden.

  • Statische IP-Adresse werde ich bei meinem Internetprovider in dieser Form nicht kosteneffizient bekommen. Dafür müsste ich viel mehr zahlen. Es dreht sich hier um ein privates Projekt, wenn man möchte um eine private Cloud in verschiedenen Formen.

  • Gehosteter Server scheidet auch aus, der Server muss und soll hier zuhause stehen.

  • Dynamic DNS-Anbieter... hm... Könnte man noch drüber nachdenken, wenn es dann klappt und unabhängig vom Anschluss ist. Da ich meine Domain, die ich verwenden möchte, aber schon bei einem anderen Hoster liegen habe... hm...

Aber dann mal die Frage: Wenn man z.B. ne OwnCloud zu Hause aufsetzen will - das haben doch schon sehr viele Leute gemacht, auf ihrem privaten Anschluss. Wenn außerdem zum Beispiel ein anderer Dienst (separater CalDAV oder so) eine Subdomain benötigt, dann werden das andere Leute doch auch schon so hinbekommen haben...? Ich kann gerade nicht glauben, dass das so ein Akt sein soll, wenn das doch schon so oft gemacht wurde.

Wenn ich einen Dynamic DNS-Anbieter nehmen würde bei dem ich eine Domain hosten kann und den Apache entsprechend konfiguriere, also die vhosts einrichte: Dann würde es gehen? Oder muss ich noch etwas beachten?

dann wirst du das nur mit ganz viel Ahnung und nem total übertriebenen Aufwand hinbekommen - das gibt dann aber ein großes Gefrickel.

Nehmen wir mal an, ich würde das Gefrickel in Kauf nehmen... (Ich will ja auch was lernen): Was wären die Stichpunkte mit denen ich mich da beschäftigen müsste, bzw. kurz gefasst die allgemeine Vorgehensweise?

Danke für alle Infos!

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21833

Wohnort: Lorchhausen im schönen Rheingau

MultiUser schrieb:

Nur als Verständnisfrage: Es ist also nicht so wie ich es immer angenommen hatte, dass der Browser den Hostnamen oder die Haupt-Domain aufzulösen versucht, sich dorthin verbindet und dann einfach nur die Subdomain beim Server anfragt, sondern die Subdomain als eigenständige "Domain" betrachtet? Sprich: serverhostname und www.serverhostname sind für den Browser zwei vollkommen unterschiedliche "Domains"? Also so unterschiedlich wie example.com und example.de?

Richtig. Subdomains können ja auch auf anderen IPs liegen. Du kannst dem Apache sagen, dass unterschiedliche Namen die gleiche Konfig haben sollen (Stichwort SERVERNAME und SERVERALIAS)

Den Punkt 4. möchte ich in der Apache-Config machen. Das müsste, wenn ich das richtig verstanden habe, also auch mit www.localhost hinbekommen bzw. www.serverhostname?

Aber warum? Das macht doch in einem setup ohne Domin überhaupt keinen Sinn

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

redknight schrieb:

Subdomains können ja auch auf anderen IPs liegen

Subdomains sind also demnach (bis auf die Config beim Apache) eigentlich eine reine DNS-Sache. Und wenn ohne Domains gearbeitet wird, dann kann man einen Server nur per Hostname oder IP ansprechen, er kann aber keinen Sub-Hostname haben, sozusagen?

Du kannst dem Apache sagen, dass unterschiedliche Namen die gleiche Konfig haben sollen (Stichwort SERVERNAME und SERVERALIAS)

Genau das wollte ich machen. Nehmen wir mal an, mein Server hat den Hostname "imbissbude" und eine IP 192.168.1.15. Wenn ich eine zweite Site drauf einrichten wollte und diese unter "wurstbude" verfügbar mache, dann müsste ich dem DNS auch klarmachen, dass der fake "hostname" bzw. virtual host "wurstbude" auch auf die 192.168.1.15 zeigen soll, richtig?

Ok, da das offenbar alles irgendwie komplizierter wird, hier eine konkrete Anfrage:

  • Ich möchte Baikal als CalDAV Server installieren und es wurde beschrieben, dass dieser eine Subdomain voraussetzen würde.

  • Der Server (Hardware) an sich erfüllt im lokalen Netz den Zweck von Fileserver, Webseite, Kalender-Server, XMPP-Server, Fotogalerie, etc.

  • Ich möchte aber jetzt mehrere Webseiten verfügbar machen für verschiedene Zwecke.

  • Baikal wird über WebDAV/CalDAV zugreifbar sein.

  • Ich möchte sukzessive diese Dienste alle nicht nur im lokalen Netz nutzen, sondern auch über DDNS von außerhalb. CalDAV auf Smartphone z.B.

  • Nach Möglichkeit hätte ich gerne für jeden Dienst eine "Subdomain" bzw. "Sub-Hostname" oder was auch immer an dieser Stelle möglich ist.

  • Das alles hat nur privaten Anspruch, kein Hosting von Webseiten für andere oder so.

Kann ich das nur über Ports (Samba, XMPP, HTTP über Portweiterleitung, ...) und Unterverzeichnisse im var/www/html/site –> DDNS-Subdomain.eigentlichedomain.de/site bewerkstelligen oder gibt es dafür eine Lösung im Sinne von Sub-Wasauchimmer, welche ich mit dem DDNS nutzen kann? Der DDNS liegt ja schon auf einer Subdomain.

Vielen Dank für die Geduld!

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21833

Wohnort: Lorchhausen im schönen Rheingau

MultiUser schrieb:

Ok, da das offenbar alles irgendwie komplizierter wird, hier eine konkrete Anfrage:

Endlich. Ich wollte dich schon auf Richtig fragen verweisen... Bitte demnächst vollständige Anfragen, danke.

  • Ich möchte Baikal als CalDAV Server installieren und es wurde beschrieben, dass dieser eine Subdomain voraussetzen würde.

Wo hast Du das her? Auf der Projektseite steht nur von "Upload and get startet", sogar von ready to use with only webspace. Warum es einen extra vhost brauchen sollte, wenn das die Werbung ist, verstehe ich nicht.

  • Der Server (Hardware) an sich erfüllt im lokalen Netz den Zweck von Fileserver, Webseite, Kalender-Server, XMPP-Server, Fotogalerie, etc.

  • Ich möchte aber jetzt mehrere Webseiten verfügbar machen für verschiedene Zwecke.

Bis dahin geht es noch ohne vhosts

  • Baikal wird über WebDAV/CalDAV zugreifbar sein.

  • Ich möchte sukzessive diese Dienste alle nicht nur im lokalen Netz nutzen, sondern auch über DDNS von außerhalb. CalDAV auf Smartphone z.B.

siehe unten

  • Nach Möglichkeit hätte ich gerne für jeden Dienst eine "Subdomain" bzw. "Sub-Hostname" oder was auch immer an dieser Stelle möglich ist.

Dann wirst Du um DNS nicht rumkommen.

  • Das alles hat nur privaten Anspruch, kein Hosting von Webseiten für andere oder so.

Sobald es von außen erreichbar ist, geht es aber vom privaten Anspruch weg. Da gelten dann andere Anforderungen, auch was die Sicherheit betrifft.

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

Danke erstmal! Auch für die Geduld! ☺

redknight schrieb:

Dann wirst Du um DNS nicht rumkommen.

Ok, dann werde ich mich damit bei Gelegenheit intensiver auseinandersetzen.

  • Das alles hat nur privaten Anspruch, kein Hosting von Webseiten für andere oder so.

Sobald es von außen erreichbar ist, geht es aber vom privaten Anspruch weg. Da gelten dann andere Anforderungen, auch was die Sicherheit betrifft.

Also, CalDAV, CardDAV, XMPP, eine interne Webseite und Fotogalerie soll für die Familie da sein und sonst nicht von jemand anderem benutzt werden. Die Firewall auf dem Server ist entsprechend dicht gemacht worden und lässt nur noch diese Dienste durch. Port-Weiterleitungen in der FB sind explizit festgelegt, alles andere wird nicht durchgelassen. SSH, Samba, etc. sind nur per VPN möglich, weil auf lokales Netz beschränkt. CalDAV, Webseite, etc. wird nur die Familie Kenntnis von bekommen (sind auch User- und Passwort-geschützt), vom Rest gar keiner.

Konkrete Frage 2: Welche Anforderungen muss ich erfüllen bzw. meintest du und welche Sicherheitsvorkehrungen muss ich treffen? (Stichworte?) Gibt es da eventuelle Empfehlungen zur weiteren Lektüre, die sich auf das Wesentliche konzentriert?

Danke!

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

redknight schrieb:

Endlich. Ich wollte dich schon auf Richtig fragen verweisen...

Danke auch für diesen Hinweis, ich werde es mir durchlesen, scheint einem beim Strukturieren zu helfen.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21833

Wohnort: Lorchhausen im schönen Rheingau

MultiUser schrieb:

Also, CalDAV, CardDAV, XMPP, eine interne Webseite und Fotogalerie soll für die Familie da sein und sonst nicht von jemand anderem benutzt werden.

Heisst "nur von der familie" nun aus dem internen Netz oder auch von extern? 😉

Die Firewall auf dem Server ist entsprechend dicht gemacht worden und lässt nur noch diese Dienste durch.

Das bringt dir aber bei einer php-Lücke herzlich wenig.

CalDAV, Webseite, etc. wird nur die Familie Kenntnis von bekommen (sind auch User- und Passwort-geschützt), vom Rest gar keiner.

Wenn die von extern verfügbar sein sollen, findet man sie auch mit Portscans

Konkrete Frage 2: Welche Anforderungen muss ich erfüllen bzw. meintest du und welche Sicherheitsvorkehrungen muss ich treffen? (Stichworte?)

Bei php-basierten Anwendungen würde ich

  1. php sauber konfigurieren, zum Stichwort "php-Hardening" finden sich da sicher einige Anleitungen (Schlagwort "open basedir" )

  2. Den apache sauber konfigieren, so dass Du jede webanwendung unter einem einzlenen user laufen lässt, wenigstens aber den php-Teil davon (Schlagwort suexec )

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

redknight schrieb:

  1. Den apache sauber konfigieren, so dass Du jede webanwendung unter einem einzlenen user laufen lässt, wenigstens aber den php-Teil davon (Schlagwort suexec )

Heutzutage würde ich da vermutlich eher PHPs FPM nutzen, das es schon von Haus aus unterstützt, Skripte unter unterschiedlichen Nutzern laufen zu lassen.

MultiUser

(Themenstarter)
Avatar von MultiUser

Anmeldungsdatum:
21. Juni 2009

Beiträge: 159

Wohnort: Schleswig-Holstein

redknight schrieb:

Heisst "nur von der familie" nun aus dem internen Netz oder auch von extern? 😉

Auch von extern (3 Standorte), also übers Internet. ☺

Das bringt dir aber bei einer php-Lücke herzlich wenig. Wenn die von extern verfügbar sein sollen, findet man sie auch mit Portscans

PHP ist sicher eine Sache, aber wenn ich Dienste von außerhalb nutzen möchte, dann müssen sie ja auch erreichbar sein. Ich versuche schon immer, alles soweit abzusichern wie möglich, also Passwort-Abfragen, HTTPS, FW, etc. Wenn ich was von außerhalb nutzen möchte, dann muss ich doch irgendein Risiko eingehen, welches ich natürlich zu minimieren versuchen kann?

Bei php-basierten Anwendungen würde ich "php-Hardening" apache sauber konfigieren

Ok, das kann ich machen um diese Teile zu schützen.

In Bezug auf obige Ausführungen:

  • Was sollte ich außerdem absichern? FW einstellen - klar. Verschlüsselung - klar. PHP und Apache, ok, muss ich dann noch machen. Was sonst noch?

  • Ist PHP denn so anfällig? Ist das bei anderen Sprachen/Anwendungen (asp, jsp, py, perl, ...) nicht so?

Danke nochmal!

Antworten |