Server verrät nginx vhosts

  • Hallo in die Runde...:)


    Ich habe aktuell ein kleines Problem, welches ich irgendwie nicht gelöst bekomme.

    Ich betreibe mit nginx eine Shared-Hosting Umgebung. Insgesamt laufen auf dem Server 4 WordPress Webseiten.


    Wenn ich z.B. über - https://hackertarget.com/server-info/ - eine Webseite oder die Server IP scanne, "spuckt" er alle vhost-namen aus.

    Gibt es da eine Möglichkeit dies zu "verschleiern", sodass nur der vhost mit dem - default_server - Parameter angezeigt wird?

  • Diese Dienste betreiben normalerweise eine eigene Datenbank mit Zuordnungen von Domains und IP-Adresse. Diese Informationen sind über eine einfache DNS-Anfrage (A/AAAA Records) zu ermitteln, wenn man genügend Domains zum Testen und ausreichend Ressourcen sowie Zeit hat. Das kannst Du bei öffentlichen Webseiten nicht verhindern, außer Du spendierst jedem vHost eine eigene IP-Adresse, was bei IPv4 im Jahr 2019 unrealistisch ist.


    Du kannst solchen Diensten aber die Arbeit erschweren, indem bei SSL-Zertifikaten als SAN nicht unnötig viele Subdomains genannt werden. Damit vermeidest Du wenigstens, dass keine Hostnamen auftauchen, die zwar öffentlich erreichbar, aber nirgends verlinkt bzw. indexiert sind.

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

  • Ob man tatsächlich die Zertifikate zum Let's Encrypt Account zuordnen kann weiß ich auch nicht - ich wüsste ad-hoc nicht wie man dies über Certificate-Transparency tun könnte. Aber das ist auch wie von KB19 erläutert gar nicht nötig. Sich mehrere Let's Encrypt Accounts anzulegen schützt vor einer Daten-Aggregation jedenfalls nicht.


    Nochmals zur Verdeutlichung - Diese "Info-Dienste" gehen wie folgt vor:

    1. Sie monitoren öffentliche Quellen wie die Logs von TLDs und die bereits angesprochenen Certificate-Transparency Logs. Damit erhalten Sie zeitnahe Infos zu vielen neu registrierten Domainnamen und zu so gut wie allen neu ausgestellten Zertifikaten (inklusive aller SubjectAlternativeNames in den Zertifikaten).

    2. Nun macht man einfach für all diese Namen ein DNS-Lookup und erhält so die IPv4 und IPv6 Adressen

    3. In einer Datenbank abgelegt kann mit dieser Daten nun ganz einfach verknüpft werden, welche "Domains" unter der gleichen IP-Adresse gehostet werden


    Du kannst dagegen nichts tun, außer - wie bereits erläutert - unter einer IP-Adresse nur einen WebAuftritt bereitstellen, in Zeiten von IPv4-Knappheit aber vermutlich ein teures und außerdem völlig unnötiges Unterfangen.


    Die Aussage diese Dienste würden "jeden vHost" kennen ist aber jedenfalls nicht korrekt, sie kennen nur jene vHosts die sie aus irgend welchen Quellen "crawlen" können. Der WebServer gibt diese jedenfalls nicht einfach so preis. Wenn du z.B. nicht möchtest, dass öffentlich erkennbar ist das Du auch den vHost "meingeheimesforum.meinedomain.tld" betreibst, dann kannst Du z.B. ein *.meinedomain.tld Wildcard-Zertifikat beziehen um so einem Aufscheinen im Transparency-Log mit "meingeheimesforum.meinedomain.tld" zu entgehen. Aber bedenke: Security die auf Geheimhaltung von eigentlich öffentlichen Informationen beruht funktioniert ohnehin nicht.


    Noch ein Hinweis: Bei DNSSEC signierten Domains kann über Zone Walking ganz einfach eine vollständige Liste aller DNS-Records enumeriert werden, Abhilfe bietet hier die Verwendung von NSEC3.

  • gunnarh Wildcard-Zertifikate schützen aber schon sehr effektiv. Du siehst dann nur den einen Host im DNS der das zu dem Zeitpunkt requestet hat. Die anderen (v)Hosts in deinen (sicherlichlich) verschiedenen IP-Ranges bleiben schön unentdeckt.

    "Security is like an onion - the more you dig in the more you want to cry"

  • was hier auch dazukommt,

    verwendet jemand sehr viele CNAME-Records,

    dann hat man hier oft mit nur einem Request so einiges;

    Grüße / Greetings

    Walter H.


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

  • Es wird auch getriggert ob eine Domain registriert wird. Dann einfach ein paar DNS Abfragen und man hat die Zuordnung. Dann sieht man, das mehrere Domains auf den gleichen Server zeigen und man hat alles zusammen. Anschließend sieht man ggf. Ob es ein Multihoster (sehr viele Domains auf einer IP) usw. ist.