Datum: 10. Mai 2023, Version: 1.1
Was ist eigentlich drin, ... im österreichischen Internet?
Wie groß? Wie viel? Was genau? Wo genau? Von wem?
Passend zum Staatsfeiertag, habe ich, 1.3 Millionen .at-Domains gesammelt, die zugehörigen IP-Adressen gesucht, wichtige Netzwerk-Ports gescannt, DNS Abfragen gemacht, die Startseiten abgerufen und HTML, HTTP Header und Cookies gespeichert. Insgesamt 56 Gigabyte an Daten. Danach wurde alles auf einen digitalen Haufen geworfen und ausgewertet was das Zeug hält. Das habe ich gefunden.
Diese Seite enthält die Ergebnisse und eine Übersicht über das österreichische Internet (.at-Domains only), und zusätzlich die Quellen und Methoden, die man anwenden kann, um Informationen aus öffentlichen Daten zu gewinnen. Wer mehr über zukünftige Kunden, mögliche Partner und hartnäckige Konkurrenten erfahren will, muss oft nur wissen, wo und wie man im Internet danach sucht.
Wikipedia: Mit der Wendung Tu felix Austria wird den Österreichern eine besonders glückliche Veranlagung oder Lebensart nachgesagt. Erstmals benutzt wurde die Wendung vermutlich 1364 von Herzog Rudolf IV. in seinen Siegeln...
Huhn oder Ei? Wo fängt man am besten an? Es gibt mehrere mögliche Startpunkte. Am vielversprechendsten erschienen mir die .at-Domains. Möglich wären auch österreichische IP-Adressen gewesen, das hätte allerdings zu viel schlechteren Ergebnissen geführt, wie man im Abschnitt IP-Adressen sehen wird.
Wie? Das österreichische Internet? Was ist mit österreichischen Webseiten die .com, .net, .org und andere generic Top-Level-Domains verwenden? Es stimmt, dass hier nur einen Ausschnitt betrachtet wurde. Nichtsdestotrotz sind .at-Domains sehr beliebt und werden von vielen Unternehmen und Privatpersonen genutzt. Herauszufinden welche anderen Domains nach Österreich gehören, ist dann ein Projekt für einen anderen Tag.
Too long; didn't read! Wer keine Zeit hat, sich alles anzusehen, hier eine kurze Übersicht über die Abschnitte und die Key-Findings aus den jeweiligen Bereichen.
Inhalt: Welche Domains gibt es in Österreich? Wie findet man Domains? Welche Domains sind wichtig und was kann man aus Domains noch ablesen?
Inhalt: Was sind IP-Adressen? Wie findet man IP-Adressen raus? Wo sind die Standorte der Adressen und welche IP ist für welche Domains zuständig?
Inhalt: Was sind Netzwerk Ports? Wie kann man sie scannen? Welche IP-Adressen haben welche Ports offen und welche Erkenntnisse kann man daraus ableiten?
Inhalt: Welche DNS-Einträge gibt es und was kann man daraus ablesen? Welche Domains können überhaupt funktionieren? Welche Technologien (Mail-Anbieter, Service-Desk, Marketing-Tags, ...) und Cloud-Anbieter werden oft benutzt? Welche Mail-Anbieter sind die größten?
Inhalt: Was sind HTTP Header? Was kann man aus Headern ablesen? Was sind oft verwendete Header? Wie oft werden Webseiten upgedated? Wer verwendet noch Cookies?
Inhalt: Was ist HTML? Was kann man in HTML finden? Wie groß ist das HTML? Welche Tags werden oft benutzt? Welche Inhalte werden von Extern eingebunden? Wie SEO-optimiert sind die Seiten? Wer hat Microformate eingebunden? Auswertungen zu Inbound/Outbound Links. Wer verwendet Bilder und welche?
Inhalt: Wer hat ein Impressum? Welche Sprachen werden auf Webseiten benutzt?
Alles beginnt mit einer Domain. Eine Adresse die man in einen Browser eingeben kann, und die uns, im besten Fall, zu einer schnellen, schönen, gut gemachten Webseite mit super Inhalten führt. Eine vollständige Domain wird als Fully Qualified Domain Name (FQDN) bezeichnet.
Web-Adressen, die auch URLs (Uniform Resource Locator) genannt werden, beginnen mit dem Protokoll (zB.: http://), danach kommt keine, eine oder mehrere Subdomains (zB.: www) und dann kommt der Domainname und die Top-Level-Domain (TLD). Alles getrennt durch Punkte. Der Domainname ist meistens eine Second-Level-Domain (SLD).
Die länderspezifische Top-Level-Domain (ccTLD) für Österreich lautet "at". Nicht jede Website die in Österreich gehostet wird, oder sich an Menschen in Österreich richtet, muss eine .at-Domain haben. Es sind jedoch viele. 1.5 Mio. laut offizieller nic.at Statistik vom April 2023.
Protokoll | Subdomain | Domain (Second-Level-Domain) | Top-Level-Domain |
https:// | orf | at | |
https:// | tvthek | orf | at |
nic.at ist das Unternehmen, dass für die Vergabe und die Verwaltung der .at-Domains zuständig ist. Zusätzlich zur .at-TLD können .co.at und .or.at Domains registriert werden. Das "co" steht für "Commercial" und "or" für "Organisation". Diese SLDs sind das Equivalent zu den internationalen Vorbildern .com und .org. Die beiden SLDs sind bei weitem nicht so beliebt wie die .at-Domains. Laut Statistik wurden bis jetzt 33.000 .co.at Domains registriert und nur 8.000 .or.at Domains.
Es gibt noch einige weitere Second-Level-Domains die allerdings nicht direkt von der nic.at verwaltet werden. Die .gv.at ist für staatliche Stellen gedacht und wird vom Bundesministerium für Finanzen (siehe Domänenverwaltung "GV.AT") verwaltet. Für wissenschaftliche Institutionen gibt es .ac.at die von der Universität Wien (siehe ACOnet) vergeben bzw. verwaltet werden.
Protokoll | Subdomain | Domainname | Public Suffix + TLD |
https:// | help | gv.at | |
https:// | augustin | or.at | |
https:// | www | univie | ac.at |
Ausserdem gibt es noch SLDs die von privaten Unternehmen oder Vereinen betrieben werden. Diese Domains werden in Browsern oft als TLDs behandelt (zB.: bei Cookies und in der Adresszeile) und darum führt die gemeinnützige Organisation Mozilla eine Liste in die sich Betreiber eintragen können.
Für .at sind derzeit 19 SLDs in der Mozilla Public Suffixes List eingetragen:
Die folgenden Auswertungen beziehen sich auf die offiziellen fünf TLD/SLDs (at, or.at, co.at, gv.at, ac.at). Auswertungen für andere SLDs findet man in speziellen Abschnitten (zB.: priv.at).
Mit dem Github Package crwlrsoft/url von crwl.io kann man einfach Domains bzw. URLs parsen und es werden die public suffixes berücksichtigt und IDNs unterstützt.
use Crwlr\Url\Url;
$url = Url::parse('https://www.domain.gv.at');
var_dump($url->domainSuffix());
Für .at-Domains gibt es keine veröffentlichte Gesamtliste aller Domains so wie für andere TLDs (Schweden, Schweiz, Centralized Zone Data Service). Darum muss man sich aus unterschiedlichen Quellen selber eine möglichst umfangreiche Liste erstellen. Für Domainlisten gibt es sowohl kommerzielle Anbieter als auch Open Source Projekte. Zusätzlich habe ich unterschiedliche Methoden verwendet um auf Suchergebnissen und öffentlichen Log-Dateien weitere Domains zu finden.
Für .ac.at und .gv.at habe ich Anfragen bei den verantwortlichen Stellen nach einer Gesamtliste gestellt. Diese Anfragen wurden mit der Begründung nach Datenschutz abgelehnt. Von wem werden da bitte Daten geschützt? Egal.
Eine gute Quelle für neue Domains sind die "Certificate Transparency Logs". CT Logs können öffentlich eingesehen werden und sind eigentlich dafür gedacht, um mehr Transparenz in die Vergabe von Sicherheitszertifikaten zu bringen. Da heutzutage fast alle Webseiten auf HTTPs ausgeliefert werden, braucht jede dieser Webseiten ein Zertifikat, dass dann in diesen Logs zu finden ist.
at | co.at | or.at | gv.at | ac.at | |
---|---|---|---|---|---|
nic.at Statistik [1] | 1.458.656 | 33.773 | 7.841 | unbekannt | unbekannt |
domainsproject.org | 954.141 | 13.761 | 2.928 | 1.239 | 1.261 |
ViewDNS.info | 1.187.203 | 28.454 | 6.492 | 1.689 | 1.397 |
domains-monitor.com | 462.553 | 8.094 | 1.717 | 1.023 | 1.054 |
staedtebund.gv.at [2] | 2.106 | ||||
bing Web Search API [3] | 134 | 109 | |||
Short Domain Checker [4] | 19.697 | 402 | 176 | ||
Cert Transparency (CT) Log Monitoring [5] | 18.659 | 294 | 69 | 55 | 70 |
DMOZ Export (2016) [6] | 17.884 | 426 | 141 | 228 | 174 |
Quellen:
Wenn man alle Quellen kombiniert, erhält man Zahlen, die schon ganz gut an die öffentlichen Statistiken von nic.at heranreichen. 100%ig ist kaum zu schaffen, weil ständig neue Domains registriert werden und viele einfach unbekannt bleiben, wenn nichts damit gemacht wird.
Egal. Ich arbeite mit dem was ich habe.
1.317.549 .at-Domains.
at | 1.277.059 |
---|---|
co.at | 29.458 |
or.at | 6.770 |
gv.at | 2.794 |
ac.at | 1.468 |
Total | 1.317.549 |
Die längsten Domains die ich gefunden habe, sind 63 Zeichen lang. Das liegt relativ sicher an der Zeigenbeschränkung auf 63 Zeichen zwischen zwei Punkten (label length restriction). Ansonsten würden Menschen sicher noch mehr Keywords in die Domain packen oder Blödsinn damit anstellen. Ich habe sieben .at-Domains mit 63 Zeichen gefunden.
Die zzzz...-Domain existiert für ac.at ebenfalls und wäre damit die längste Domain wenn man die fünf Zeichen der TLD dazuzählt. Diese Domain scheint eine Test-Domain der Universität Wien zu sein und liefert derzeit keinen Web-Content (HTTP/HTTPs) aus.
Side note: Ich habe Chat-GPT (3.5-turbo) nach der längsten bekannten .at-Domain befragt und die KI war sich ziemlich sicher, dass es: donau-dampfschiffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft.at sein muss. Ich kann das allerdings nicht nachprüfen bzw. verstehen. Diese Domain widerspricht den Regeln von nic.at (siehe nic.at Registration Guidelines und dem Standard (RFC) und kann eigentlich nie existiert haben.
Die neue Version GPT-4 gibt die richtige Antwort, dass die längste Domain 63 Zeichen lang ist. Kennt jedoch keine spezifische Domain dieser Länge. KI kann doch noch nicht alle unsere Probleme lösen 😜
Seit dem Jahr 2016 ist die minimale Länge einer .at-Domain genau ein Zeichen (Buchstabe oder Nummer). Vor 2016 mussten Domains mindestens drei Zeichen lang sein. Derzeit sind alle .at-Domains mit ein oder zwei Zeichen vergeben. Für .co.at oder .or.at sind jedoch noch Tausende solcher Domains zu haben.
Länge | TLD | Verfügbar | Beispiele | |
---|---|---|---|---|
1 | .at | 0 | ||
1 | .co.at | 0 | ||
1 | .or.at | 6 | q.or.at, 4.or.at, 7.or.at | |
2 | .at | 0 | ||
2 | .co.at | 928 | 00.co.at, 11.co.at, gg.co.at | |
2 | .or.at | 1148 | zz.or.at, yy.or.at, kk.or.at |
"Drei hob i gsogt!": Die kürzesten, derzeit verfügbaren .at-Domains sind drei Zeichen lang. Derzeit sind noch mehr als 30.000 verfügbar. Also zirka 40% aller 3 Zeichen .at-Domains sind registriert. Einige Beispiele für verfügbare Domains sind: 003.at, 00a.at, k8n.at, zuc.at, 8-j.at.
3 Zeichen .at-Domains
Eine Domain ist dann verfügbar wenn nic.at sagt sie ist es. Vielfache Whois-Anfragen sind allerdings bei nic.at nicht möglich, weil dann die eigene IP relativ schnell gesperrt wird.
Um eine große Anzahl von Domains zu prüfen, könnte man auf Reseller zurückgreifen. Ich habe allerdings DNS-Anfragen gestellt und gesehen, dass alle verfügbaren Domains folgende Antwort liefern ...
% dig j-8.at +noadditional +noquestion +nocomments +nocmd +nostats SOA
at. 10562 IN SOA dns.nic.at. domain-admin.univie.ac.at. 1680930002 10800 3600 604800 10800
* Domains mit "pendingDelete"-Status liefern übrigens ebenfalls diese Antwort. Davon scheint es allerdings sehr wenige zu geben und den Status bekommt man nur mittels Whois-Anfrage heraus.
Eine registrierte Domain hat NS-Einträge und auch einen anderen SOA-Eintrag.
% dig nic.at +noadditional +noquestion +nocomments +nocmd +nostats SOA
nic.at. 905 IN SOA ns1.nic.at. domain-admin.univie.ac.at. 2023043280 3600 1800 1209600 900
nic.at. 900 IN NS ns1.nic.at.
Die Längenverteilung ist eine klassische positiv-verschobene Glockenkurve. Mehr als 50% der gefundenen Domainnamen sind zwischen 7 und 14 Zeichen lang. Nur knapp 5.000 Domains sind länger als 30 Zeichen.
.at-Domains - Längenverteilung
Natürlich wollen wir jetzt alle wissen wie solche langen Domains aussehen können. Hier einige Beispiele die derzeit registriert sind, aber keinen Inhalt ausliefern.
🤷
Internationale Domain Namen (IDN) sind Domains die andere Zeichen als a-z, 0-9 oder Bindestrich enthalten (oder Nicht-ASCII-Zeichen). Zum Beispiel die deutschen Umlaute (ä, ö, ü). Darum werden sie oft als Umlautdomains bezeichnet. Solche IDNs gibt es erst seit 2004 und bis April 2023 wurden laut nic.at Statistik knapp 36.000 davon registriert.
IDNs werden normalerweise als Punycode gespeichert und verarbeitet. Punycode ist ein Encoding-System bei dem die Sonderzeichen durch ASCII-Zeichen kodiert an das Ende der Domain angehängt werden. Benutzer sehen im normalen Leben keinen Punycode, weil die Umwandlung durch Browser und Server im Hintergrund passiert.
Punycode Domains fangen mit xn-- an und haben am Ende dann nochmal einen Bindestrich und eine Zeichen die die kodierten Sonderzeichen darstellen. Zum Beispiel wird aus österreich.at dann xn--sterreich-z7a.at
Es sind noch einige kurze Umlautdomains verfügbar: ö.or.at, ü.or.at, ä.or.at, ü.co.at, ä.co.at. "ß" (scharfes S) wird übrigens bei .at-Domains nicht unterstützt.
Im benutzten Datenset sind 2,1% IDNs enthalten.
% IDN Domains
IDNs können für böse Dinge benutzt werden. Durch die Verwendung bestimmter Sonderzeichen wird versucht Benutzer zu täuschen und darum war ich neugierig welche Sonderzeichen außer der deutschen Umlaute in .at-Domains verwendet werden.
Ich habe 159 .at-IDN gefunden die andere Zeichen als Umlaute enthalten. Zum Beispiel: ç, ë, ó or é. Auf den ersten Blick nichts Aufregendes dabei. Interessant sind vielleicht ímmowelt.at and ìmmowelt.at die auf immowelt.at weiterleitet. Hier wurde offensichtlich pro-aktiv vom Unternehmen schon verhindert, dass Andere solche irreführenden Domains registrieren.
Es gibt einige TOP-Listen von unterschiedlichen Anbietern. Am bekanntesten ist (war) wahrscheinlich die Alexa Ranking Liste (hat nichts mit dem KI-Assistenten von Amazon zu tun). Allerdings hat Amazon dieses Unternehmen gekauft und die Alexa-Seite ist nicht mehr aufrufbar. Derzeit ist die Domain-Liste noch verfügbar. Das wird sich sicherlich bald ändern.
Die Ranking-Verfahren unterscheiden sich etwas. Im Allgemeinen wird entweder eine Form von PageRank-Algorithmus angewendet. Dieser Algorithmus bewertet die Popularität einer Website durch das Zählen von verweisenden Seiten (Inbound-Link): Je mehr andere Seiten auf eine Seite verlinken, desto weiter oben ist man in der Liste.
Andere TOP-Listen verwenden Traffic als Messgröße der durch Messpixel (ÖWA) oder Browser-Extensions (Netcraft) gemessen wird.
Die Ergebnisse sind, ich sag mal, ... "okay". Wie man in der nachfolgenden Tabelle sieht, sind einige falsche und einige fragwürdige Einträge dabei. Zum Beispiel führt Majestic die "Eigentlich"-TLDs gv.at und or.at in den Top 10. Dann sind da teilweise Seiten in der Liste, von denen ich noch nie gehört habe. Bei der ÖWA sind nur Seiten enthalten, die sich freiwillig messen lassen wollen (und dafür bezahlen).
Tranco ist ein Project, dass von mehreren Wissenschaftlern ins Leben gerufen wurde und mehrere Quellen aggregiert und mathematisch fancy gewichtet. Sie nennen es: "A Research-Oriented Top Sites Ranking Hardened Against Manipulation" ... Okay. entscheidet selber!
Die Tabelle unten zeigt die April 2023 Daten der jeweiligen Quelle. Bereinigt auf Top-Level-Domains die auf .at enden, falls in der Liste andere TLDs vorkommen (wegen Vergleichbarkeit).
Achtung: Tabelle vertical scrollbar.
Platz* | Majestic [1] | Alexa | Cisco [2] | Netcraft [3] | Tranco [4] | ÖWA** [5] | Similarweb [6] | Overall* |
---|---|---|---|---|---|---|---|---|
1 (10) | gv.at | orf.at | ad4m.at | orf.at | univie.ac.at | orf.at | orf.at | orf.at (59) |
2 (9) | google.at | derstandard.at | google.at | bergfex.at | orf.at | willhaben.at | google.at | google.at (41) |
3 (8) | kriesi.at | krone.at | optadata.at | willhaben.at | google.at | krone.at | krone.at | willhaben.at (36) |
4 (7) | univie.ac.at | willhaben.at | gmx.at | harryahamer.at | derstandard.at | heute.at | willhaben.at | derstandard.at (33) |
5 (6) | orf.at | google.at | waust.at | geizhals.at | kriesi.at | derstandard.at | heute.at | krone.at (28) |
6 (5) | shorturl.at | hurawatch.at | willhaben.at | bawag.at | shorturl.at | meinbezirk.at | derstandard.at | univie.ac.at (19) |
7 (4) | or.at | shorturl.at | orf.at | karriere.at | krone.at | kurier.at | oe24.at | heute.at (16) |
8 (3) | derstandard.at | heute.at | derstandard.at | raiffeisen.at | world4you.at | gmx.at | gmx.at | kriesi.at, shorturl.at (14) |
9 (2) | tuwien.ac.at | toon.at | interspar.at | univie.ac.at | tuwien.ac.at | oe24.at | kleinezeitung.at | |
10 (1) | wko.at | oe24.at | post.at | c3w.at | wien.gv.at | kleinezeitung.at | bergfex.at | gmx.at (13) |
* In der letzten Spalte wurden von mir die Ergebnisse der Tabelle (nicht-)wissenschaftlich gezählt und je öfter unt weiter oben die Seiten in der Tabelle vorkommen, desto höher ist der Score (in Klammer) und Platzierung in der Spalte.
** Die Daten der ÖWA sind vom Februar 2023 und nach Unique User auf Einzelangebot sortiert.
Quellen:
Domains dürfen Bindestriche enthalten, nur nicht am Anfang oder Ende. Dadurch werden Domains länger aber besser lesbar. Wenn man Domains an den Bindestrichen teilt, bekommt man eine gute Übersicht über die einzelen Worte bzw. Wortarten die in Domains verwendet werden.
Es gibt gut 460.000 Domains die Bindestriche enthalten und das Teilen erzeugt eine Liste von 157.000 unterschiedlichen Wörtern. Ich habe die Top 10.000 Keywords mit mehr als 3 Zeichen verwendet um damit wiederum in den anderen Domains zu suchen. So findet man Keywords, die ohne teilenden Bindestrich in Domains vorkommen.
Keywords in Domains (>3 Zeichen)
Andere Domain-Teile: Je nachdem wonach man auf der Suche ist, kann man aus Domainnamen schon einiges ableiten. Einige Beispiele an Auswertungen aus den Domain-Daten.
Domains mit Jahreszahlen
Top Locations in Domains
Domains aus dem Gesundheitsbereich
Domains mit Prefix
Domains mit Vornamen
Domains aus dem Hospitality-Bereich
Die .priv.at-Domains eine spezielle Domain für Privatpersonen die vom Verein VIBE!AT (Verein für Internet-Benutzer Österreichs) vergeben werden.
Um eine .priv.at-Domain zu bekommen, muss man eine Privatperson sein und sich in Österreich aufhalten. Der Domainname kann anscheinend ziemlich frei gewählt werden, solange er nicht eingetragene Rechte verletzt. Die Registrierung eine .priv.at-Domain ist kostenlos.
Im Datensatz finden sich 294 .priv.at Domains. Die meisten sind Vornamen, Nachnamen oder Spitznamen. Das nic.priv.at Whois-Formular zeigt für viele Domains noch die vollen personenbezogenen Daten der Eigentümer:in 🤨.
Eine IP-Adresse ist eine Nummer die ein Gerät in einem Netzwerk eindeutig identifiziert. Dadurch können Geräte miteinander kommunizieren. Am gebräuchlichsten sind immer noch IPv4 Adressen und jeder der schon mal einen Internet-Router daheim in Betrieb genommen hat, weiß wahrscheinlich wie IP-Adressen aussehen. So zirka: 192.168.0.1
Webseiten haben ebenfalls eine IP-Adresse, bzw. die Server auf denen diese Webseiten gehostet werden. Wenn man die .at-Domains zu den IP-Adressen zurückverfolgt sieht man, dass 205.572 Domains (15,6 Prozent) derzeit keiner IP-Adresse zugeordnet sind.
% Domains mit/ohne IP
Nicht jede Webseite braucht genau eine eindeutige IP-Adresse. Es ist möglich, dass viele Domains auf eine IP-Adresse zeigen und der Server alle diese Webseiten ausliefert. Die Adresse könnte auch ein Loadbalancer sein, hinter dem sich ein ganzes Netzwerk versteckt. Dieses Netzwerk kann wiederum für viele Domains verantwortlich sein.
A-Einträge mit dig herausfinden.
% dig +noall +answer orf.at A
orf.at. 21481 IN A 194.232.104.140
orf.at. 21481 IN A 194.232.104.139
...
orf.at. 21481 IN A 194.232.104.149
A-Einträge mit nslookup herausfinden.
% nslookup orf.at
Server: 192.168.50.1
Address: 192.168.50.1#53
Non-authoritative answer:
Name: orf.at
Address: 194.232.104.3
...
Name: orf.at
Address: 194.232.104.141
IP-Adresse mit ping bekommen
% ping orf.at
PING orf.at (194.232.104.3): 56 data bytes
64 bytes from 194.232.104.3: icmp_seq=0 ttl=54 time=25.222 ms
Die 1,3 Millionen .at-Domains führen zu einer von 112.162 IP-Adressen, also es wären dann eine IP pro 10 Webseiten im Durchschnitt. Dieser Durchschnitt ergibt sich allerdings durch wenige IPs die für viele tausend Domains zuständig sind. Diese IPs gehören großen Hosting-Unternehmen (zB.: World4You, Host Europe, ...) oder Domain-Parking-Services (zB.: Sedo).
Anzahl Domains pro IP-Adresse
Spitzenreiter ist hier die IP-Adresse 81.19.154.98 von World4You die für 27.802 .at-Domainnamen zuständig ist. Wenn man die IP oder die jeweiligen Webseiten aufruft, dann sieht man schnell warum das so ist. Entweder man wird gleich auf eine andere Domain weitergeleitet (Domain Redirect Service) oder man kommt auf eine Domain-Parking Seite.
Wie weiß man eigentlich, wer für eine IP zuständig ist? Um das herauszufinden, gibt es mehrere Wege: Einiges sieht man im DNS PTR-Eintrag. Das ist quasi das Gegenstück zum A-Eintrag und stellt die Rückverknüpfung von IP zu Domainnamen her. Die Anfrage wird mit IP gestellt und man bekommt einen Hostnamen zurück.
% dig +noadditional +noquestion +nocomments +nocmd +nostats -x 142.251.37.3
3.37.251.142.in-addr.arpa. 26701 IN PTR muc11s23-in-f3.1e100.net.
Der leichte und schnelle Weg ist es eine IP/Geo-Location Datenbank zu benutzen, wie die Maxmind GeoLite DB. Solche Datenbanken enthalten viele IP-Adressen und die dazugehörigen Organisationen die über ASN (Autonomous System Number) identifiziert werden können.
# composer require geoip2/geoip2
require 'vendor/autoload.php';
use GeoIp2\Database\Reader;
// Confused? The "City"-DB contains also countries
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
$record = $reader->city('128.101.101.101');
var_dump($record->country->name);
Die Top-10 der verantwortlichen Organisationen nach ASN (Autonomous System Number) befinden sich großteils in Deutschland und sind große Hosting-Unternehmen wie Hetzner, Host Europe, IONOS oder auch Amazon. Ein Spezialfall ist Cloudflare die ein großes internationales Netzwerk im Bereich Sicherheit und Performance betreiben und das bereits 6.832 IP-Adressen (mit Relation zu .at-Domains) umfasst.
IPs nach ASN (Organisation)
Wenn man die Anzahl von IPs und Domains auf /24-IP-Blöcke betrachtet sieht man, dass manche Hoster ihre Domains auf mehrere Blöcke und IPs verteilen und andere wiederum sehr viele Domains auf einem Block mit ganz wenigen IPs hosten.
Ein IPv4 /24-IP-Block ist der Adressbereich von 1 bis 254 auf der letzten Stelle der IP-Adresse. Also zum Beispiel von 81.19.159.1 bis 81.19.159.254. In den nächsten zwei Charts sieht man die TOP-10 Blöcke mit den meisten Domains und wie viele IP-Adressen innerhalb des Blocks verwendet wurden.
Anzahl IPs mit Domains in /24 IP-Blöcken
Die Top-3 Blöcke hosten ähnlich viele Domains (41- bis 46-tausend). IONOS verteilt diese Domains auf den gesamten Block (254 IP-Adressen) und World4You nutzt nur gut die Hälfte der IP-Adressen in einem Block, verwendet aber mehrere Blöcke.
Anzahl Domains in /24 IP-Blöcken
Was könnte man mit IP-Blöcken noch weitermachen? Bei IP-Blöcken in denen nur manche Adressen verwendet werden, ist natürlich die Frage, was ist auf den anderen Adressen zu finden? Entweder die werden nicht genutzt, oder enthalten Systeme und Domains, die noch nicht entdeckt wurden.
Nachfolgend ein anonymisiertes Beispiel eines IP-Block-Scans auf IP-Adressen die noch nicht im Datensatz vorkommen. Es wird ein Netzwerk-Ping abgesetzt und die Ports 80 und 443 gescannt. Da wäre doch noch einiges zu finden, ich habe es aber mal dabei belassen.
Die Auswertung der 112k IP-Adressen zeigt, dass die IP-Adressen in 95 unterschiedlichen Ländern liegen. Der Großteil, nämlich 52.931 IPs, sind in Deutschland. Wenn man Österreich, USA, Frankreich und Niederlande zusammenzählt, dann sind immer noch mehr IP-Adressen mit .at-Domains in Deutschland gehostet.
21 Länder sind jeweils nur für eine oder zwei IPs verantwortlich (zB.: Irak, Georgien, Kolumbien, ...). In Russland sind 191 IPs von .at-Domains und 47 sind in China.
Top 10 Anzahl IPs pro Land
Es gibt einige kostenlose Anbieter für IP/GeoLocation Datenbanken oder APIs mit deren Hilfe man Ort, Land und verantwortliche Organisation einer IP-Adresse herausfinden kann.
Der Ort einer IP-Adresse kann sich von Zeit zu Zeit ändern. Beispielsweise wenn IP-Blöcke an andere Dienstleister weiterverkauft werden oder ein Dienstleister einen Block in einem anderen Serverzentrum verwendet.
Ports werden benutzt um die Kommunikation von Anwendungen und Dienste auf einem Gerät voneinander zu trennen und so eine geordnete und effiziente Kommunikation über das Netzwerk zu gewährleisten. Jeder Port ist durch eine eindeutige Nummer gekennzeichnet, die man Portnummer nennt und im Bereich von 0 bis 65535 liegt.
In der Regel sind bestimmte Portnummern für bestimmte Anwendungen und Dienste reserviert. Daraus kann man Rückschlüsse auf die benutzte Software oder zumindest auf die verfügbaren Dienste des Servers schließen.
Scannen oder Scannen lassen? Port-Scanning ist nicht kompliziert und kann mit Werkzeugen wie Nmap oder wenigen Zeilen Sourcecode gemacht werden. Port-Scanning ist allerdings zeitintensiv, wenn man pro Domain viele Ports scannen will. Zum Glück hat das schon jemand gemacht und die Ergebnisse sind via kostenloser API verfügbar.
Für ein einfaches Port-Scanning muss man nicht unbedingt mit Nmap arbeiten. Ob ein Port offen oder zu ist, kann man schnell und einfach mit PHP prüfen.
$ipOrHost = 'www.parlament.gv.at';
$port = 25565;
$timeout = 0.2;
$connection = @fsockopen($ipOrHost, $port, $errorCode, $errorMessage, $timeout);
if (is_resource($connection)) {
echo 'OPEN';
}
Die Shodan InternetDB ist dafür gedacht um Sicherheitslücken schnell zu finden und zum Beispiel die eigene IP zu monitoren. Wenn man, wie ich, bereits eine umfangreiche Liste von Domains und dazugehörigen IP-Adressen hat, dann lässt sich mittels Shodan herausfinden, welche Ports auf jeweiligen IPs offen sind.
Fast alle Auswertungen in diesem Abschnitt beziehen sich auf Shodan-Daten, nur die Ports für HTTP vs. HTTPs habe ich selber gescannt. Listen von Default-Ports für unterschiedliche Dienste und Software findet man im Internet zuhauf. Siehe zum Beispiel Wikipedia TCP/UDP Port Numbers oder Secbot (Common Ports)
Mittels API wurden 112.162 IP-Adressen geprüft. Von den geprüften Adressen, haben 95.717 IPs (85%) einen Eintrag in der Shodan-Datenbank.
Prozent IP mit/ohne Shodan-Eintrag
Grundsätzlich sollte man darauf achten, dass bei einem Server nicht einfach unnötig viele Ports offen sind, denn jeder offene Port ist eine potenzielle Angriffsfläche von Außen. Wenn Server allerdings viele Services anbieten oder als Gateway für andere Server fungieren, dann kann es schon vorkommen, dass 20 und mehr Ports offen sind.
42% der IP-Adressen haben weniger als 5 Ports offen und meistens ist es eine typische Kombination für Webserver aus 80, 443 und entweder SSH (22), FTP (21), SMTP (53, 587) oder MySQL (3306).
Anzahl offene Ports pro IP
"Drin ist was drauf steht." - Die Auswertung ergab eine Liste mit 1.298 unterschiedliche Port-Nummern. Viele von diesen Ports werden nur vereinzelt verwendet. Die Ports die am meisten verwendet werden, sind aus dem Bereich E-Mail (IMAP, PHP, SMTP), File-Transfer (FTP), Shell-Zugriff (SSH) und logischerweise die Standard-Ports die für Web-Content (80, 443) gedacht sind.
Anzahl IPs mit typischen Ports
Web-Content wird normalerweise auf den Ports 80 (HTTP) oder 443 (HTTPs) ausgeliefert.
Vor einigen Jahren hat Google die Website-Betreiber dazu gedrängt, auf das sicherere HTTPs zu wechseln. Viele haben damals, aus Angst vor schlechteren Rankings, auf HTTPs umgestellt. Große Browserhersteller führten ebenfalls Maßnahmen ein, um die Betreiber von Webseiten zur Umstellung zu motivieren. So wurden Verbindungen als "unsicher" markiert oder manche Browser-Features waren nur für HTTPs-Seiten verfügbar.
Darum ist es nicht verwunderlich, dass 88% der .at-Webseiten auf HTTPs und HTTP erreichbar sind. 7% der geprüften Seiten sind nur auf HTTP (Port 80) erreichbar und nur 3% der Seiten ist auf HTTPs-only konfiguriert.
Prozent offene HTTP(s) Ports
Es ist möglich, dass Web-Content auf anderen Ports als 80 und 443 ausgeliefert wird. Die gebräuchlichsten Ports sind Varianten von 80 und 443 wie 8080, 8000, 8081 oder 9443. Der Port 3000 wird ebenfalls in node.js Umgebungen öfters verwendet.
Solche Ports benutzt man manchmal um eine Entwicklungs- oder Test-Umgebung zu eigentlichen Seite zu betreiben. Die Integration von 3rd-Party-Systemen in die Netzwerklandschaft wird ebenfalls über alternative Ports gelöst.
12% aller geprüften IPs liefern Web-Content auf Port 8880 aus, 9% auf 8080 und 2% auf 8081. Wenn man es dann nachprüft, sieht man, dass 8880 eigentlich immer ein Plesk-Login ist. Am Port 3000 kommt man oft zur Statistiksoftware Grafana. Andere Ports liefern Fehlermeldungen oder leere Seiten oder werden im Nachhinein von einer Firewall (zB.: FortiGuard) geblockt.
Vereinzelt kommt man auf Login-Seiten von anderen web-basierten Applikationen: i-MSCP, ISPConfig, Kibana, Roundcube, ... Ist das ein Problem? Ja, nein, vielleicht! Je nachdem wie sicher die Passwörter sind die verwendet werden, und ob die jeweilige Software regelmäßig upgedated wird.
Anmerkung: Jetzt macht ein kurzer Ausflug nach National Vulnerability Database Sinn. Dort findet man aktuelle und vergangene Sicherheitslücken, durchsuchbar nach Software und genauer Version. Hier das Beispiel "Roundcube". Wenn man dort Sicherheitslücken zur Software und Version findet, dann ist es ein Problem.
Datenbanken sollten in den meisten Fällen nicht direkt mit dem Internet verbunden werden, weil das eine Angriffsfläche bietet, die man leicht ausschließen kann. In manchen Fällen ist es allerdings nicht zu vermeiden und dann kann man mittels Port-Scan die benutzte Datenbank ermitteln. In den geprüften IPs findet man gut 22.000 offene Datenbank-Ports und der Großteil davon, genau gesagt 18.091, sind MySQL-Datenbanken.
Alle populären Datenbanken (Data-Stores) haben definierte Default-Ports die meistens nicht verändert werden. Manche Datenbanken benutzen allerdings sehr generische Ports (8443, 9443 oder 8080) die in dieser Auswertung nicht betrachtet werden, weil diese Ports keine aussagekräftigen Hinweise wären.
Anzahl IPs mit offenen DB-Ports
Ein Web-Application Server bietet eine Umgebung, in der Webanwendungen ausgeführt werden können. Dies umfasst die Bereitstellung von Laufzeitumgebungen, Frameworks, Datenbankanbindung, Sicherheitsfunktionen und anderen Diensten, die für die Entwicklung und den Betrieb von Webanwendungen erforderlich sind. Verwendete Web-App-Server sind an ihren Default-Ports ebenfalls oft von außen erkennbar.
Anzahl IPs mit Hinweis auf Application-Server
Die wichtigste Frage müssen wir am Kapitelende noch klären 😜. Gibt es IPs mit offenen Minecraft-Ports im Datenset? Yes. 191 IP-Adressen haben einen offenen Port 25565 der auf einen aktiven Minecraft-Server schließen lässt.
Und kann man sich verbinden? Die ersten zwei Server hatten eine andere Version und bei den nächsten zwei war ich nicht auf der Player-Whitelist, aber schon am 5ten Server auf der Liste konnte ich mich einloggen, obwohl der Server und die IP-Adresse nirgendwo im Internet als Minecraft-Server bekannt war.
DNS-Einträge (DNS-Records) verbinden IP-Adressen mit Domainnamen. Stark vereinfacht gesagt, ist ein DNS-Server eine große Datenbank, die unterschiedliche Typen von Einträgen enthält, und auf ganz viele andere Server im Internet gespiegelt wird.
Im Abschnitt IP-Adressen wurde diese Datenbank bereits verwendet, um die IP-Adressen zu ermitteln. In DNS-Records kann man allerdings noch viel mehr interessante Dinge finden. DNS Einträge können mit verschiedenen Werkzeugen ausgelesen werden. Die Auswertungen in diesem Abschnitt wurden alle mit dem Kommandozeilentool dig gemacht, gespeichert und danach mit PHP geparst. Der Datensatz umfasst 6.288.955 von 888.450 Domains und ist 347 MB groß.
Aus Sicherheitsgründen antworten manche Nameserver nicht auf sogenannte ANY-Anfragen, bei denen alle Records jeden Typs zurückgegeben werden. Darum wurden im ersten Schritt die 7 wichtigsten Eintragstypen (NS, TXT, A, AAAA, CNAME, MX, SOA) einzeln abgefragt.
Um ein möglichst umfassendes Bild zu bekommen, wurden im zweiten Schritt nochmal an alle Domains ANY-Anfragen gesendet und die Analysen dazu, werden im Abschnitt "DNS ANY-Anfragen" dargestellt.
Mit dem Kommandozeilenprogramm dig können Abfragen an Nameserver gestellt werden. Hier werden alle Einträge (ANY) von orf.at vom Nameserver mit der IP 8.8.8.8 (Google) angefragt.
dig +noadditional +noquestion +nocomments +nocmd +nostats orf.at ANY @8.8.8.8
Zuerst einmal eine Übersicht über die Arten und Häufigkeit von DNS-Einträgen. Gängige Typen sind: NS-, MX-, A-, AAAA-, TXT-, CNAME- und SOA-Einträge.
DNS-Einträge nach Typ
DNS Einträge nach Host/Typ
Jede Website braucht einen NS, A und SOA Eintrag, sonst würde sie nicht funktionieren. 853.055 Domains haben Einträge dieser drei Typen. Wie man im Chart links gut sehen kann, werden Einträge manche Typen (zB.: NS) mehrfach vergeben, um die Ausfallsicherheit zu erhöhen.
AAAA-Einträge sind IPv6-Adressen. Seit vielen Jahren wird gewarnt, dass bereits alle IPv4-Adressen vergeben wurden und alle doch bitte auf IPv6 umsteigen mögen. Passiert ist das aber offensichtlich bis jetzt noch nicht.
Die Mail Exchange (MX) DNS-Einträge geben an welcher Mail-Server für die Domain zuständig ist. Daraus kann man Rückschlüsse auf benutzte Software- und Cloud-Anbieter gewinnen.
Eigentlich wäre ich davon ausgegangen, dass die meisten Domains min. zwei oder mehr MX Einträge enthalten. Das würde die Ausfallsicherheit erhöhen und macht quasi kaum Mehraufwand. Wie man im linken Chart sieht, ist dem aber nicht so und das hat einen Grund.
Die einzelnen MX-Einträge zeigen auf Subdomains (zB.: xyz.mail.protection.outlook.com) die mehrere IP-Adressen (A-Einträge) zugeordnet haben. Wenn man das in die Berechnung mitaufnimmt, dann sieht der Chart (rechts) etwas anders aus.
Anzahl MX-Einträge
pro Domain
Anzahl MX-Einträge pro Domain
(Multi-IPs eingerechnet)
Wenn man Flugzeuge baut und es ganz besonders sicher haben will, dann kann man einfach auch 12 MX-Einträge anlegen.
741.491 Domains haben mindestens einen MX-Eintrag und können also theoretisch E-Mails empfangen. In den Top-10 der Mail-Server findet man die großen Hosting-Unternehmen und Cloud-Anbieter.
Domains die auf outlook.com zeigen, verwenden ein Microsoft 365 (früher Office 365) Produkt. MX-Einträge die "aspmx.l.google.com" enthalten, weisen auf ein Google Workspace Produkt hin.
MX-Server Hosts
Wenn man sich die Verteilung der Domains auf Mail-Server ansieht dann fällt auf, dass die Top-15 für jeweils mehr als 5.000 Domains zuständig sind. Danach kommen gut 60 Mail-Provider die für 500 bis 5.000 Domains die Mails verwalten. 7.814 kleinere Hoster bzw. größere Firmen sind für 2 bis 500 Domains verantwortlich. Der Großteil der Mail-Server, nämlich 282.377, ist genau für eine Domain verantwortlich.
Domains pro MX-Server
Externe vs. Interne MX Domains: Wenn die Domain mit der Mail-Server Domain übereinstimmt, dann ist wahrscheinlich ein lokaler Mail-Server für das Empfangen von Mails zuständig. Unterschiedliche Domains können bedeuten, dass ein Cloud-Anbieter verwendet wird oder der Hoster einen zentralen Mail-Service betreibt.
MX Server Extern/Intern
Anmerkung: Beim Durchsehen der MX-Liste sieht man, dass gut 200 Domains einen MX-Eintrag von den russischen Cloud-Anbietern Yandex oder mail.ru haben. Die chinesischen Mail-Provider qq.com und 163.com werden nur von 6 .at-Domains verwendet.
In TXT-Einträge kann man alles Mögliche reinschreiben, solange es 255 Zeichen nicht überschreitet. Wer noch mehr Text in DNS packen will, macht einfach mehrere TXT-Einträge. Bei meinen Scans habe ich 560.400 TXT-Einträge bei 417.348 unterschiedlichen Domains gefunden.
Anzahl Domains mit n TXT-Einträgen
Die meisten Domains haben genau einen TXT-Eintrag und manche haben einfach mal 50 Einträge. Ich sag mal: "Sparkasse, quo vadis?". Ich hoffe, dass soll so sein.
TXT-Einträge werden in den letzten Jahren immer mehr verwendet, um die Eigentümerschaft einer Domain zu prüfen. Wenn eine Domain bei einem Cloud-Anbieter benutzt werden soll, wird der Eigentümer aufgefordert, einen speziellen TXT-Eintrag zu erstellen, damit der Anbieter weiß, dass die Domain wirklich dem Kunden gehört.
An der Art des Eintrags kann man oft erkennen, welche Domain mit welchem SaaS-Anbieter arbeitet. Anbieter wie Google, Facebook, Apple und Zoho benutzen diese Art der Domain-Verifikation.
Verify TXT-Einträge
Rein aus dem Verify-TXT-Eintrag kann man nicht ablesen welches Produkt genau vom jeweiligen Anbieter verwendet wird. Man kann nur allgemein sagen: 53k Domains verwenden irgendwas von Microsoft und 44k irgendein Produkt von Google.
Viele weitere Anbieter verwenden die TXT-Einträge um dort Konfigurationen oder Bestätigungen (Verifications) für bestimmte Produkte zu speichern. Bei einer kurzen Durchsicht habe ich mehr als 70 Anbieter entdecken können:
Amazon SES, BMD, Barracuda, Brave, Cisco, Citrix, Cloudflare, ClubDesk, DigiCert, Docker, Drift, DUO, Dynatrace, Elastic Email, Firebase, Fortinet, Freshdesk, GitHub, GitLab, GlobalSign, HIBP, Hornetsecurity, HubSpot, IBM, Indeed, Infoniqa, Jimdo, KnowBe4, MIDOCO, MS Dynamics, MS Office365, Mailjet, Mailru, Mandrill, Microsec, Mimecast, Miro, MongoDB, nameshield, Offensity, OneTrust, Oracle, Pardot, Plesk, Postman, Protonmail, Rexx, SAP, Salesforce, SendGrid, Sendinblue, Seobility, Shopify, Sipgate, Smartsheet, Sophos, Spycloud, Squarespace, Stripe, TITAN, TOPDesk, Trend Micro, Trustpilot, Webex, Webflow, Wix, Wordpress, Workplace, Wrike, Yandex, Zendesk, Zoom, blackscreen, dan.com, eRecruiter, flexera, iCIMS, mailEnable, proofpoint, sevDesk, site24x7, successfactors, x-mailer, Yandex
Viele der Anbieter und Produkte kann man in den SPF-Infos finden. SPF steht für "Sender Policy Framework" und soll E-Mail-Kommunikation sicherer machen. In einem SPF-Record sind alle Mail-Server angegeben, die im Namen der Domain eine E-Mail versenden dürfen. Darum findet man in den Values viele Marketing-, Support- und Sales-Systeme.
380.332 Domains sind durch das Sender Policy Framework abgesichert. Ein anderes Protokoll, dass die Sicherheit bei E-Mail verbessern soll ist DMARC, dieses wird allerdings nur bei 752 Domains verwendet.
SPF/DMARC TXT-Einträge
TXT - "domain gesperrt": Bei 10.755 Domains habe ich den TXT-Eintrag "domain gesperrt" gefunden. Die Prüfung einiger Stichproben hat gezeigt, dass alle diese Domains, im nic.at Whois, mit Status "pendingDelete" aufscheinen. Es dürften also TXT-Einträge von der nic.at sein, für Domains die sich nicht an die Regeln halten.
TXT mit Werbung: Man kann sich auch immer ziemlich sicher sein, dass überall wo ein Textfeld ist, irgendwer auf die Idee kommt, das Feld mit Werbung zu befüllen. Kreativität oder Verzweiflung?
Die bisherigen Auswertungen haben sich auf spezifische DNS Typen konzentriert. ANY Anfragen werden nicht von allen Server unterstützt, weil sie kompliziert und langsam sind (siehe Cloudflare Blog). Was bekommt man aber, wenn man ANY-Anfragen an die Nameserver sendet? Überraschend viele Server antworten und Typen wie CCA, HINFO, RRSIG, DNSKEY und DS sind weit verbreitet bei den .at-Domains.
SPF - "You're Doing it Wrong!": 0,5 % der Domains haben Einträge vom Typ "SPF", die allerdings falsch sind, denn SPF-Einträge müssen den Typ "TXT" haben und sollten darum geändert werden. Der Typ hat zwar mal existiert, wurde allerdings 2014 widerrufen und wird von vielen Servern nicht mehr unterstützt (siehe Wikipedia).
HINFO: Durch die Angabe RFC8482, oder "ANY not supported" im HINFO-Eintrag wird angezeigt, dass keine ANY-Anfragen vom Server beantwortet werden. Derzeit sind das 6 % von den angefragten Domains.
DNSSEC Einträge: DNSSEC steht für Domain Name System Security Extensions und soll die Echtheit und Integrität der DNS-Einträge, durch digitale Zertifikate, sicherstellen. Es gibt verschiedene Eintragstypen, die alle eine spezifische Aufgabe beim DNSSEC übernehmen: DNSKEY, RRSIG, NSEC, NSEC3PARAM, DS. Rund 3 % der .at-Domains verwenden DNSSEC.
CAA Einträge: Bei 1 % der Domains wurden CAA-Einträge angegeben, die angeben welche "Certificate Authorities" Zertifikate für diese Domain ausstellen dürfen. Üblicherweise stehen dann Anbieter wie: geotrust.com, letsencrypt.org oder digicert.com in diesem Record.
HTTP-Header sind Informationen, die von einem Webserver an einen Client (zB.: den Webbrowser) gesendet werden, um zusätzliche Details über die übertragene Daten zu übermitteln. Diese Informationen können Verschiedenes wie den Typ des Inhalts, die Größe der Antwort (Englisch: Response), Cache-Anweisungen und vieles mehr umfassen.
Von den 1,3 Mio. Domains, die ursprünglich abgerufen wurden, haben 888.450 eine Antwort geliefert und es wurden insgesamt 6.288.955 HTTP-Antwort-Header gespeichert. Eine Übersicht über HTTP-Header findet man bei MDN, Wikipedia oder bei OWASP
Der Server-Header ist Antwort-Header, der optional von Webservern gesendet wird, um Namen und die Versionsnummer des verwendeten Webservers oder der verwendeten Server-Software zu identifizieren. Der Server-Header kann potenziell sensible Informationen preisgeben, die von Angreifern ausgenutzt werden können, um Schwachstellen zu finden.
Apache ist mit 305.249 Webseiten noch immer doppelt so groß wie Nginx der nur für die Auslieferung von 160.585 Webseiten verantwortlich ist. 555.428 Webseiten lieferten einen von 610 unterschiedlichen Server-Headern zurück.
HTTP-Server-Header
Der HTTP-Header: X-Powered-By ist ein optionales HTTP-Response-Headerfeld, das von Webservern gesendet wird, um verwendete Technologien zu identifizieren. Der X-Powered-By-Header kann Informationen wie die Programmiersprache, die Webserver-Software, die Datenbank-Software und andere verwendete Technologien enthalten.
22,8 % der Startseiten senden einen X-Powered-By Header. Es wurden 475 unterschiedliche Header gespeichert, die TOP-10 werden von PHP, Plesk und ASP angeführt.
Startseiten mit X-Powered-By
HTTP X-Powered-By Header
HTTP-CSP-Header (Content Security Policy) sind ein Mechanismus zum Schutz von Webanwendungen vor Cross-Site-Scripting (XSS) und anderen Angriffen. Durch das Definieren von vertrauenswürdigen Quellen soll ein Einschleusen von bösartigen Daten in die Webseite verhindert werden.
Nur 0.7 % der Webseiten senden einen CSP-Header. Das erschien mir wenig, bis mir eingefallen ist, dass man CSP auch im HTML durch einen <meta>-Tag definieren kann. Deshalb wurden die Zahlen der CSP-HTML-Auswertung hier integriert. Danach waren es ganze 0.9 % 🙄
Domains mit/ohne CSP
138.221 Websites lieferten sowohl einen Date- als auch einen Last-Modified-Header. Das daraus errechnete Alter des Inhalts zeigt, dass es zum einen viele Webseiten gibt, die täglich aktualisieren, allerdings auch sehr viele deren Inhalt sich über zwei Jahre lang nicht verändert hat.
Domains mit/ohne Alter
Alter in Tage
Cookies sind Daten, die von einer Website auf dem Computer oder Mobilgerät der BenutzerIn gespeichert werden, wenn diese die Website besucht. Cookies enthalten Informationen über Aktivitäten auf der Seite oder spezifische Einstellungen.
Cookies haben seit ein paar Jahren ein "kleines" Imageproblem, weil sie für Dinge benutzt wurden, die man bei der Erfindung nicht im Sinn hatte. Darum muss man als Websitebetreiber die Nutzer vorher fragen, ob man Cookies setzen darf, zumindest für alle Cookies die nicht technisch notwendig sind. Von den 578.385 Webseiten die gecrawlt wurden, setzten 29,4 % bei Aufruf Cookies (ohne zu fragen). Hoffentlich nur technisch notwendige?!
Startseiten mit Cookies
Es gibt Seiten die verwenden Cookies als eine Art "Datenbank" und speichern allerhand Zeugs rein. Darum setzen die Spitzenreiter in der Statistik eine zweistellige Zahl an Cookies, sobald man die Seite öffnet. 😳
TOP 10 - Anzahl Cookies auf Startseite
Die Cookies die meisten benutzt werden, sind typische Session-Cookies (zB.: PHPSESSID, beng_proxy_session, ...), Cookies für sicherheitsrelevante Features (zB.: XSRF-TOKEN) und Cookies die Einstellungen speichern (zB.: localization, pll_language).
TOP 10 - Cookie Namen
Leider findet man vereinzelt auch Cookies die wahrscheinlich nicht unter die "technisch notwendigen" gehören. Cookie-Namen wie: facebookPixel, remarketing_cid, SC_ANALYTICS_GLOBAL_COOKIE, ad_storage, gtm, trackings, ... klingen schon verdächtig nach Werbung, Analytics oder Tracking? Zum Glück findet man die nur mehr vereinzelt.
Beim Download der Startseiten wurde die Zeit gemessen, die für den Download nötig war. Nur 2 % konnten innerhalb 100 Millisekunden heruntergeladen werden. 22,8 % benötigten zwischen 100 und 249 ms. Für den größten Anteil der Seiten (39.2 %) dauerte der Download zwischen 250 ms und 500 ms. Bei 16,3 % brauchte der Download langer als eine Sekunde um fertig zu werden.
Startseiten Speed
Mehr als 500 ms sind schon relativ langsam für eine Webseite. Man muss bedenken, dass hier nur der Download des HTML berücksichtig ist und die Zeit gemessen wird, bis das HTML vollständig im Browser angekommen ist. Dort müssen dann noch Stylesheets, Bilder, Skripte geladen und ausgeführt werden.
HTML steht für "Hypertext Markup Language" und ist die Auszeichnungssprache zur Erstellung von Webseiten. Es wird verwendet, um den Inhalt und die Struktur einer Webseite zu definieren, indem es verschiedene Elemente wie Überschriften, Text, Bilder und Links enthält, die von einem Webbrowser interpretiert und angezeigt werden.
HTML besteht aus einer Reihe von Tags (Auszeichnungselemente), die den Browsern sagen, wie der Inhalt angezeigt werden soll. Zum Beispiel kann das <h1>-Tag verwendet werden, um eine Überschrift der ersten Ebene zu erstellen, während das <p>-Tag verwendet wird, um einen Absatz zu definieren.
Im April 2023 habe ich die Downloads von 1,3 Mio. Startseiten versucht. Vor dem Download wurde nochmal auf Port 80 oder 443 geprüft und nur Responses ohne Fehler berücksichtigt (HTTP-Status-Code: 200). Dabei konnte ich das HTML von 578.385 Startseiten speichern und nachfolgend analysieren.
Mit dem Github Package crwlrsoft/crawler von crwl.io kann man einfach und schnell Webcrawler entwickeln, die ganze Webseiten oder nur Teile davon herunterladen.
use Crwlr\Crawler\Steps\Loading\Http;
$crawler->input('https://www.orf.at/')
->addStep(Http::crawl()->depth(1));
Die stolze überraschende Gewinner des Größenvergleichs ist eine Webseite mit knapp über 30 MB. Wohlgemerkt nur HTML und keine Bilder, JS, CSS oder sonst irgendwas. Man könnte glauben, dass da jetzt viel Sinnvolles draufsteht, dem ist leider nicht so. Die Seite wurde offensichtlich mit Microsoft Word erstellt und nach HTML exportiert und enthält viel unsichtbaren Code.
Zum Glück sind solche Ungetüme eher selten (nur 3.406 bzw. 0,58 % haben mehr als ein Megabyte). Knapp über 50 % der 577.552 HTML-Responses sind zwischen 1 und 50 Kilobyte groß und nochmal 34 % liegen zwischen 50 und 256kb.
Verteilung HTML Größen
Wie groß ist eigentlich der Anteil von Inhalt zu Markup? Wenn man alle HTML-Tags aus dem Markup entfernt bekommt man den reinen Inhalt der Seite. Über 85 % der Webseiten haben einen Anteil von bis zu 60 % an Inhalten. Nur gut 15 % der Seiten haben einen Content-Anteil von mehr als 60 %.
Wie groß ist Content-Anteil?
Anzahl HTML-Tags/Seite
Das Maximum an HTML-Tags sind 271.726 auf einer Seite. Diese Seite ist 21 Megabyte groß und wird mit Wordpress verwaltet. Die Kommentarfunktion ist so eingestellt, dass jeder kommentieren kann. Darum sind jetzt 19.537 Spam-Kommentare auf der Seite. 🤕
Top-10 HTML-Tags
DIV steht nicht für Diverses, wird aber dafür genutzt. Nicht überraschend also, dass so viele <div>-Tags in HTMLs sind. Aber Links (<a>-Tags) auf Platz 2 und <script>- und <link>-Tags in den Top-10 ist schon interessant.
SEO steht für "Search Engine Optimization" (auf Deutsch: Suchmaschinenoptimierung) und bezieht sich auf die Praxis, Webseiten so zu gestalten und zu optimieren, dass sie in den Suchergebnissen möglichst weit oben angezeigt werden.
Es gibt bestimmte Empfehlungen wie eine gut SEO-optimierte Seite sein sollte. Zuerst sollte das HTML "wohlgeformt" sein, was soviel heißt wie: Es dürfen keine Fehler im Markup sein. Am einfachsten kann man das mit HTML Tidy prüfen. Nur 6,9 % der Seiten sind fehlerfrei, 84,1 % haben Warnungen (also kleine Fehler) und 9 % der Seiten weisen große HTML-Fehler auf.
HTML-Errors und Warnings
HTML mit SEO-Tags
Ein paar grundlegende Dinge sollten auf einer SEO-optimierten Seite zu finden sein. 21,7 % von den getesteten Seiten enthalten einen DOCTYPE, <title>, <meta>-Description, genau eine <h1> und min. einen <a>-Tag.
HTML-Tidy kann direkt in PHP verwendet werden, weil es eine native PHP-Erweiterung gibt.
# sudo apt-get install php8.2-tidy
$tidy = tidy_parse_string($htmlContent);
$tidy->cleanRepair();
$tidy->diagnose();
var_dump($tidy->errorBuffer);
HTML bearbeite ich am liebsten mit der Symfony DomCrawler Erweiterung.
# composer require symfony/dom-crawler
# composer require symfony/css-selector
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Component\CssSelector\CssSelectorConverter;
$crawler = new Crawler($html);
$titles = $crawler->filterXPath($converter->toXPath('title'));
var_dump(count($titles));
Im Gegensatz zu nicht-semantischen Tags wie <div> oder <span>, die nur verwendet werden, um Abschnitte der Webseite zu strukturieren oder Elemente zu gruppieren, geben semantische Tags spezifische Informationen darüber, welche Art von Inhalt sich im Tag befindet.
Oft verwendete semantische Tags sind: <header>, <footer>, <main>, <aside>, <nav> und <section>. 71 % der geprüften Webseiten verwenden semantische block-level HTML-Tags.
HTML mit semantischen Tags
Strukturierte Daten in HTML beziehen sind ein standardisiertes Format zur Darstellung von Informationen über den Inhalt einer Webseite. Diese Metadaten werden von Suchmaschinen, sozialen Medien und anderen Webdiensten verwendet, um den Inhalt und Kontext einer Webseite besser zu verstehen.
Auf schema.org wird eine Sammlung von Spezifikationen für Metadaten (sogenannte "Schemas") veröffentlicht, die Entwickler verwenden können, um Webseiten besser maschinenlesbar zu machen. Die meistgenutzten Elemente betreffen eher technische Details wie: EntryPoint, SearchAction, BreadcrumbList, ... oder die allgemeine Angabe das es sich um WebSite bzw. WebPage handelt.
Top-10 Schema-Properties
Verlinkungen sind immer noch ein wichtiger Ranking-Faktor bei allen großen Suchmaschinen. Wer verlinkt eigentlich auf wen und wie oft? Innerhalb der .at-Domains sind die meist-verlinkten Seiten herold.at, google.at und wko.at.
Top-10 Inbound Links
Die meisten in der Liste sind nicht überraschend, aber warum ist das Bundeskanzleramt (bka.gv.at) so gut verlinkt? Unter der Subdomain ris.bka.gv.at ist das Rechtsinformationssystem erreichbar, und viele Unternehmen verlinken im Footer auf die aktuelle Gewerbeordnung, die im RIS zu finden ist. Rätsel gelöst!
Die höchste Anzahl an ausgehenden Links auf unterschiedliche .at-Domains, ist auf der Seite: museen-in-oesterreich.at zu finden. Dort sind 561 .at-Domains verlinkt und insgesamt 1.551 externe Links zu finden.
Outbound-Links Histogramm
Das <img>-Tag wird verwendet, um ein Bild in eine Webseite einzufügen. Das Tag hat ein erforderliches Attribut "src", das die URL des Bildes angibt, das eingefügt werden soll. Ich fand 8,7 Mio. Bilder auf 489k Seiten, davon hatten immerhin 2 Mio. ein ALT-Attribut.
<img> Insgesamt
8.745.391
Seiten mit <img>
489.633
<img> mit ALT
2.090.312
Max. auf einer Seite
27.377
Eine Seite hatte sogar 27.377 Bilder auf der Seite eingebunden und weil das sicher keiner glauben würde, habe ich hier einen Beweisscreenshot. Es ist nicht ganz so tragisch wie man zuerst glaubt, die Bilder werden mit lazy-loading nachgeladen und die Seite ist "okay" schnell. Trotzdem nicht optimal.
Das "alt"-Attribut ist ein wichtiges Attribut für Bilder. Es gibt an, was in einem Bild zu sehen ist, falls das Bild aus irgendeinem Grund nicht angezeigt werden kann, und dient auch dazu, die Zugänglichkeit der Website für Menschen mit visuellen Beeinträchtigungen zu verbessern.
Stehen in "alt"-Attributen wichtige Dinge? "Logo" ist das Wort, dass mit großem Abstand am meisten in "alt"-Texten seht. Auf 128.494 Seiten findet man ein Bild mit "Logo"-Alt-Text. Besonders gscheit finde ich "alt"-Texte die "Image" (10.685 Seiten), "Bild" (5.496 Seiten), Foto (4.128) oder "Icon" (9.370 Seiten) enthalten. Nicht.
Oft verwendete Worte beschreiben entweder Menuelemente oder Social-Media Verlinkungen bzw. Sharing Buttons. Nachfolgend eine kleine Übersicht aus diesen beiden Kategorien.
menu, menü, menue, menu-icon, mobile-menu, submenu, ... | 62.508 |
---|---|
home, haus, homepage, ... | 16.864 |
arrow, pfeil, arrow-right, arrow-left, pfeilchen, abwärtspfeil, previous, next, richtungspfeil, pfeil-icon, navigationspfeil, pfeillinks, pfeilrechts, ... | 13.001 |
icon, icons, ... | 9.662 |
burger, burger-menu, bento ... | 866 |
facebook, facebookicon, facebook_pixel, facebook-logo, ... | 18.602 |
---|---|
instagram, instagramicon, instagramm, ... | 9.934 |
youtube, youtubeicon, social-logo-youtube, ... | 8.178 |
linkedin, linkedin-logo, ... | 3.603 |
tiktok, tiktok-logo, #tiktok, ... | 498 |
Wenn Sie Datenschutzanwalt Abmahnanwalt sind, und eine Einnahmequelle suchen, ein Disziplinarverfahren bei der Rechtsanwaltskammer Sie nicht abschreckt und Sie wegen schweren Betrugs vor Gericht stehen wollen, dann können Sie die 95.102 Webseiten mit Google Fonts "eigenhändig ansurfen" und danach abmahnen. 🤡 ... und bitte die 130 .gv.at-Seiten nicht vergessen.
Startseiten mit Google-Tags
Mittlerweile wissen alle, dass Google Fonts abmahnbar sind. Das Problem mit den externen Verlinkungen, die private IP-Adressen in die USA oder andere Länder senden, ist allerdings ein größeres, und betrifft quasi alle externen Ressourcen die mittels <script> oder <link> eingebunden werden ohne das ein Benutzer vorher zustimmt.
Wenn man schon 95k Seiten mit Google Fonts findet, wie viele Seiten binden überhaupt externe Ressourcen von anderen Domains ein? Ich konnte insgesamt 379k Domains (65 %) finden, die externe Scripte oder Stylesheets verwenden, und damit potenziell personenbezogene Daten an Dritte weitergeben.
TOP 20 externe Ressourcen Domains
Ressourcen (Skripte oder Stylesheets) von allen Google Domains zusammen, werden auf über 221k Webseiten eingebunden. Da fallen zum Beispiel die Google Fonts, Google Analytics und Google Tag Manager rein. In den "Top Ten" sind die Content Management Systeme Jimdo, WIX und Wordpress. World4You (Platz 3) kommt hier wieder vor, weil dort so viele .at-Domains geparkt sind.
In diesem Abschnitt sind alle Analysen die auf Basis der Website-Inhalte durchgeführt wurden, aber nicht speziell mit HTML oder anderen Technologien zu tun haben.
Die Wortanzahl, nachdem HTML, Skripte und Styles entfernt wurden, liegt zwischen 0 und 600.000 Wörtern (... wieder die Wordpress-Seite mit den offenen Kommentaren 😳). Auf 29 % der Webseiten sind weniger als 100 Wörter geschrieben. Ein Teil davon lädt wahrscheinlich Inhalte mittels Javascript nach und die anderen sind Platzhalter-Seiten oder Webseiten von Menschen die sich gerne kurzfassen.
Anzahl Wörter auf Webseiten
Seit einigen Jahren existiert in Österreich die Offenlegungspflicht für elektronische Medien nach dem Mediengesetz (umgangssprachlich Impressumspflicht). Da sowohl gewerbliche als auch private Webseiten ein Impressum benötigen, könnte man davon ausgehen, dass auf jeder Seite irgendwo das Wort Impressum (bzw. eine englische Form) vorkommt?
Webseiten mit/ohne Impressum
Ich konnte auf 64,67 % der Webseiten das Wort "Impressum", "Imprint", "Legal Notice", "Legal Disclosure" finden. Da fehlen jetzt noch Seiten, die den gesamten Inhalt der Javascript nachladen und Webseiten in anderen Sprachen als Deutsch oder Englisch. Wenn wir schon bei Sprachen sind! Welche Sprachen sind auf österreichischen Webseiten zu finden?
Mit dem PHP Package patrickschur/language-detection kann man Sprachen erkennen. Ich habe die Inhalte der Webseiten gekürzt auf 50 Worte und dann die Spracherkennung durchgeführt. Wenig überraschend, sind 70 % in Deutsch, bei 20 % war keine Erkennung möglich und 8,5 % sind in Englisch. Bei den 1,5 % sonstigen Sprachen findet man hauptsächlich Sprachen aus den Nachbarländern.
Webseiten Sprache
TOP 10 - Sonstige: Tschechisch (680), Vietnamesisch* (279), Polnisch (219), Ungarisch (184), Slowakisch (176), Russisch (133), Schwedisch (90), Slowenisch (84), Türkisch (80), Serbisch (72)
279 Seiten auf Vietnamesisch? Das kam mir spanisch vor. Ist es auch. Alle diese Seiten liefern denselben Content (siehe Screenshot), der von einer Landingpage-Platform in Vietnam kommt. Die Domains gehören einem Domain-Reseller in Deutschland. Viele der Seiten werden von Google Chrome als Phishing-Seiten markiert.
Da ist was faul im Staate Dänemark. Derzeit scheinen die Seiten unbedenklich zu sein, dass kann sich jederzeit ändern, wenn neuer Content ausgespielt wird.
Geschlechtergerechte Sprache ist auf österreichischen Webseiten noch nicht wirklich angekommen. Wenn man die 345.105 Seiten mit mehr als 200 Wörtern nach typischen Gendering-Formen durchsucht, findet man diese nur auf 14 % der Startseiten. Gesucht wurde nach den empfohlenen/gebräuchlichen Formen mit binnen I (In, Innen), Sternchen (*in, *innen), Doppelpunkt (:in, :innen), Schrägstrich (/in, /innen) und Unterstrich (_in, _innen).
Gendern auf Webseite
Bei den Genderformen ist das binnen I mit 8 % am beliebtesten, gefolgt von Doppelpunkt (4 %), Sternchen (4 %) und abgeschlagen Schrägstrich (2 %) und Unterstrich (0,3 %). Am öftesten werden folgende Wörter gegendert: Mitarbeiter, Kunde, Schüler, Teilnehmer und Patient.
Gender-Formen
Gegenderte Wörter
* Bei der Singular binnen-I-Form (In) musste ich manuell nacharbeiten und alle offensichtlich falschen Wörter entfernen. Also so Sachen wie LinkedIn, LogIn, CheckIn, ... wurden entfernt.
Die Liste der gegenderten Wörter enthält 11.433 unterschiedliche Wörter. Neben vielen gängigen Begriffen, findet man auch Wörter die man nicht so oft braucht: Trickdogtrainer/in, Corona-Verharmloser*innen, Woidarbeiter*innen, Qualitätsröster/innen, DownhillerInnen, Clown*innen, Hackbrett-Künstler/in, Wildtierschmuggler:innen, ViewerInnen, ...
Ich hoffe ich konnte an diesen Beispielen zeigen, dass man durch die strukturierte Analyse von Webseiten einiges über seine Konkurrenten oder potenziellen Kunden erfahren kann. Der Schwerpunkt der Auswertungen lag hier eher auf technischen Kennzahlen und oberflächlichen Auswertungen. Die Möglichkeiten sind allerdings viel weitreichender und können wichtige Erkenntnisse für dein Unternehmen liefern.
Michael Feichtinger. Entwickler und Berater. Nach 10 Jahren in verschiedenen Webagenturen und beinahe 15 Jahren bei einem großen österreichischen Jobportal, jetzt selbstständig und buchbar. Ich beschäftige mich mit allen Themen rund um Webentwicklung, Technologien und Prozessen in der Entwicklungsabteilungen.
Man kann mich auf Twitter, LinkedIn oder per Mail erreichen.
Datenschutz: Auf dieser Seite werden keine personenbezogenen Daten erhoben, verarbeitet, gespeichert oder weitergegeben. Es werden keine Cookies gesetzt und es ist kein Tracking eingebunden oder andere externe Abhängigkeiten.
Impressum: Klosterstraße 3, 4020 Linz, Webentwicklung und Beratung, Mitglied der WKÖ, Behörde: Bezirkshauptmannschaft Linz, GISA: 35488286