Adventskalender 23. Dezember 2022 - Drei, Zwei, Eins, ... Meins! - Domainstatus beobachten

Smalltalk
Antworten
Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Adventskalender 23. Dezember 2022 - Drei, Zwei, Eins, ... Meins! - Domainstatus beobachten

Beitrag von heisenberg » 23.12.2022 00:01:39

Über dieses Thema

Der heutige Beitrag ist jetzt weniger etwas aussergewöhnliches oder neues. Ich finde es eher eine interessante Illustration der Anwendung von kleinen, größtenteils bekannten Werkzeugen, vielleicht für Menschen, die noch nicht so in der Materie drin sind.

Domainstatus tracken - frei werdende Domains bemerken

Hin und wieder besteht bei dem Einen oder dem Anderen ein großes Interesse, zu wissen, ob die ein oder andere Internet-Domain, nicht vielleicht zufällig frei werden wird, so dass man diese kostengünstig erwerben kann. Alles, was dazu nötig ist, ist eine Linux-Büchse, WHOIS, ein bisschen Verständnis für Textverarbeitungswerkzeuge unter Linux und ein paar andere Kleinigkeiten.

Beruflich kommt es bei mir immer mal wieder vor, dass eine Domain verloren geht - besser gesagt, der (wohlwollende) Kontakt zu dem bisherigen Inhaber geht verloren. Ausscheiden aus der Firma. Unbekannt verzogen. Vielleicht auch Streit und die damit einhergehende mangelnde Kooperationsbereitschaft. Nach einem aktuellen Fall, habe ich mir nach dieser Methode eine Benachrichtigung gebastelt, um für einen Kunden eine gewünschte Domain direkt nach frei werden wieder registrieren zu können.

Vorbemerkungen

Das hier erwähnte Domaintracking kann jeder für jedwede Domain durchführen und ein entsprechend frei werden Domain auch möglicherweise auch temporär erfolgreich registrieren. Trotzdem würde ich davon abraten, das für Domains zu tun, wo Recht, Gesetz und das benötigte Kleingeld für die gerichtliche Durchsetzung, vermutlich eher auf der Gegenseite zu finden sind.

Weiterhin kann jeder das auch über diverse Dienstleister erledigen lassen. Da bleibt nur zu hoffen, dass der entsprechende Dienstleister auch ehrenwert ist und sich die Domain vielleicht nicht selbst sichert, um sie dann zu einem hohen Preis an die höchstbietende Person zu verkaufen.

Ich gehe mal von einem auf Debian basierenden System aus - also Debian, Ubuntu, Linux Mint, etc. Steht in den folgenden Befehlsausgaben ein '$' am Anfang ist es als Benutzer auszuführen; steht ein '#' am Anfang, muss das Kommando als root ausgeführt werden.

Die WHOIS-Daten und der Domainablauf

Grundsätzlich ist die Anzahl von WHOIS-Anfragen üblicherweise limitiert. Das sollte man bei der Anzahl und der Häufigkeit der ausgeführten Abfragen und zu überwachenden Domains berücksichtigen.

Der Verlauf von Domainregistrierungen, und -löschungen verläuft überlicherweise in Phasen. Zuerst wird sie registriert. Irgendwann ist sie frei. Wird eine Domain beim Registrar nicht mehr bezahlt, können andere Stati, wie beispielsweise gesperrt auftreten. Ein typischer Status ist noch die sogenannte Redemption Grace Period. Eine Gnadenfrist, die dem aktuellen Domaininhaber noch einräumt, eine Domain wieder zurück zu holen - meist ist das mit Kosten verbunden.

WHOIS-Daten sind grundsätzlich nicht einheitlich. Jede TLD bzw. jede Länder-Registry hat da ihr eigenes Format. Deswegen muss man sich die Informationen aus allen Domains individuell rauskratzen. Dies bedeutet, dass für jede Top-Level-Domain - also z. B. ".de", die Top-Level-Domain für Deutschland - ein individuelles Textverarbeitungskommando benötigt wird. Die mangelnde internationale einheitliche Standardisierung erfordert eben auch, dass man die jeweils neuen WHOIS-Daten manuell begutachtet, um den tatsächlichen, aktuellen Status der Domain zu erfassen.

Das WHOIS-Werkzeug

Als erstes benötigen wir die WHOIS-Informationen für die entsprechende Domain. Dafür brauchen wir das whois Paket auf dem System, was wir zuerst installieren:

Code: Alles auswählen

# apt install whois
Dann erstellen wir ein Verzeichnis, in dem die Ausgaben der Domaintracker landen.

Code: Alles auswählen

$ mkdir $HOME/domaintracker
Dann schauen wir uns als erstes Mal die aktuelle WHOIS Ausgabe der gewünschten Domain an. Als Beispiel nehme ich hier mal icanhazip.com. Mit dem folgenden Kommando bekommt man die aktuellen, öffentlich einsehbaren Domaininformationen:

Code: Alles auswählen

$ whois icanhazip.com
Die Ausgabe ist recht länglich, deswegen, habe ich die mal ausgelagert. [1]

Eine Anmerkung noch zu Domainnamen: Auch wenn es bei mir nicht notwendig war, kann es unter Umständen kann es hilfreich sein, Umlaut-Domains in der IDN-Kodierung zu verwenden. Die IDN-Kodierung ist eine Darstellung von Domainnamen, die spezielle Zeichen enthalten, mit einem Basiszeichensatz mit nur geringer Anzahl von kompatiblen Zeichen. Aus dem deutschen Domainnamen flügel.de wird in der IDN-Schreibweise zu: xn--flgel-lva.de, aus dem französischen comme-ci-comme-ça.fr wird xn--comme-ci-comme-a-qpb.fr. Ein aktuelles whois kann aber ohne weiteres mit IDN-Domainnamen umgehen. Im Zweifelsfall kann hier noch Debianidn helfen.

awk

Schaut man sich die vorliegende Ausgabe an, dann sind dort Informationen, die man überhaupt nicht haben will. z. B. das letzte Update der gesamten WHOIS Datenbank. Das Wesentliche an der Ausgabe ist hier nur der erste Block bis zum ersten >>>Last Update of whois database. Also genau dieser Auszug:

Code: Alles auswählen

   Domain Name: ICANHAZIP.COM
   Registry Domain ID: 1564103047_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.cloudflare.com
   Registrar URL: http://www.cloudflare.com
   Updated Date: 2022-06-03T21:50:09Z
   Creation Date: 2009-07-31T00:13:53Z
   Registry Expiry Date: 2024-07-31T00:13:53Z
   Registrar: CloudFlare, Inc.
   Registrar IANA ID: 1910
   Registrar Abuse Contact Email:
   Registrar Abuse Contact Phone:
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Name Server: ARAGORN.NS.CLOUDFLARE.COM
   Name Server: JEAN.NS.CLOUDFLARE.COM
   DNSSEC: signedDelegation
   DNSSEC DS Data: 2371 13 2 294A081C731FA757F3E1262DDB13F7C2C240AA5D7EACD37B6EF69BB5B827236C
   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database ...
Da braucht es nur ein ganz kleines bisschen awk-Magie, um das Gewünschte auszuschneiden:

Code: Alles auswählen

 whois icanhazip.com \
    | awk '/^>>> Last update of whois database:/ {exit} 1;' 
Kurz umschrieben heisst dass, dass awk die whois-Ausgabe verarbeitet. Der Befehl "1" gibt die aktuelle Zeile aus. Wird das Muster ^>>> Last update of whois database: erkannt, bricht das Programm ab.

Falls awk nicht installiert ist, kann es mit dem üblichen ...

Code: Alles auswählen

# apt install gawk

... installiert werden. Ich verwende hier Debiangawk - also GNU awk - der erweiterte Möglichkeiten im Vergleich zum Original bietet.

Ich habe mir noch ein Skript gebastelt, was noch ein paar Optimierungen vornimmt und auch gleich mehrere Domains prüfen kann:

Code: Alles auswählen

#!/bin/bash

_get_stripped_whois() {

        local DOMAIN="$1"
        LC_ALL=C /usr/bin/whois $DOMAIN \
                | grep -v REDACTED      \
                | grep -vE "^%"         \
                | grep -v "Please query the RDDS service of the Registrar" \
                |  /usr/bin/awk '/Last update of (whois|WHOIS) database/ {exit;} 1;' \
                | sort >$HOME/domains/$DOMAIN.txt.tmp

        if [ -s $HOME/domains/$DOMAIN.txt.tmp ] ;then
                mv $HOME/domains/$DOMAIN.txt.tmp $HOME/domains/$DOMAIN.txt
        else
                rm -f $HOME/domains/$DOMAIN.txt.tmp
        fi

}


main() {

        for domain in "$@" ; do
                _get_stripped_whois "$domain"
        done

}

main "$@"
cron

Jetzt haben wir also die gewünschte Ausgabe. Die erzeugen wir nun regelmässig, also z. B. täglich per cron mit dem folgenden Kommando:

Code: Alles auswählen

$ crontab -e
Die folgende Zeile in der crontab holt regelmässig die WHOIS-Daten...

Code: Alles auswählen

0 3 * * * LC_ALL=C /usr/bin/whois icanhazip.com | /usr/bin/awk '/^>>> Last update of whois database:/ {exit} 1;' >$HOME/domaintracker/icanhazip.com
...und schreibt sie nach $HOME/domaintracker/icanhazip.com. Weitere Domains können auf die gleiche Weise eingetragen werden. Das LC_ALL=C ist dafür, dass uns nicht die sprachspezifischen Eigenheiten irgendwie in die Suppe spucken.

Changetrack

Das nächste Werkzeug, was für uns hilfreich ist, ist DebianChangetrack [2]. Changetrack ist eine - mittlerweile recht angestaubte - Software, die mittels RCS beliebige Dateien überwachen kann und bei Änderung eine E-Mail schickt. Als mir das jemand gezeigt hat, habe ich die Nase gerümpft und gesagt: Da ist etckeeper aber besser. War es nicht - nicht in allen Fällen. Denn Changetrack kann beliebig im System verteilte Dateien überwachen.

Dafür wird zunächst mal das Paket installiert:

Code: Alles auswählen

# apt install changetrack
Changetrack braucht nicht wirklich eine Konfiguration, nur eine Dateiliste, die es sowohl systemweit unter /etc/changetrack.conf als auch benutzerspezifisch unter $HOME/.changetrackrc ausliest, um zu bestimmen, welche Dateien überwacht werden soll. Für den Moment tut es also folgende Zeile in $HOME/.changetrackrc des ausführenden normalen Benutzers.

Code: Alles auswählen

/home/benutzername/domaintracker/icanhazip.com
Man kann mit einem in Leerzeichen eingefassten Doppelpunkt hinter dem Dateinamen noch die E-Mailadresse angeben, alternativ zur Angabe als Kommandozeilenparameter beim changetrack-Aufruf.

Zusätzlich braucht es jetzt noch einen weiteren cron-job, der praktischerweise zeitlich kurz nach dem WHOIS-Abruf stattfindet, um uns die Änderungen mitzuteilen.

Code: Alles auswählen

5 3 * * * /usr/bin/changetrack -q -u -oEMAIL@DOMAIN.TLD >/dev/null 2>&1
Damit ist die Aufgabe erledigt und wir bekämen jetzt eine Mail von changetrack, sobald sich eine Änderung an den WHOIS-Daten der für uns interessanten Domain ergibt.

DMA - Dragonfly Mail Agent

Nicht jeder wird unbedingt einen eigenen Mailserver betreiben, deswegen wollen wir hier mit Exim oder Postfix nicht mit Kanonen auf Spatzen schießen. DMA ist ein minimaler Mail-Transfer-Agent, der uns für den sehr simplen Fall dienen soll: Es sollen einfach alle Mails über einen Account bei einem Hoster abgeschickt werden. Das geht auch einfach auf dem heimischen Linux-PC. Zunächst braucht es auch hier wieder die Installation eines Paketchens: Debiandma

Code: Alles auswählen

# DEBIAN_FRONTEND=noninteractive apt-get install dma
Die Variable DEBIAN_FRONTEND soll uns nervige Fragereien vom Hals halten. Wir ersetzen die Konfigurationsdatei ohnehin sofort durch ein paar eigene Zeilen.

Das ist die ganze Konfiguration für den DMA für unseren Mailaccount hier bei GMX, welche in /etc/dma/dma.conf liegt ...

Code: Alles auswählen

SMARTHOST mail.gmx.net
PORT 587
AUTHPATH /etc/dma/auth.conf
SECURETRANSFER
STARTTLS
MASQUERADE mein.benutzer@gmx.de
Die angenehme Funktionalität, die mit MASQUERADE konfiguriert wird, setzt einfacherweise den Absender für alle ausgehenden Adressen, auf die hier angegebene.

Weiterhin braucht es noch das Passwort für diesen Account in /etc/dma/auth.conf:

Code: Alles auswählen

mein.benutzer@gmx.de|mail.gmx.net:mein.passwort
Eine Testmail sollte nun direkt ankommen...

Code: Alles auswählen

echo hallo | mail -s "Mailservertest $(date)" mein.anderer.benutzer@domain.tld
... was man im Mailprotokoll des Systems(Vorgabe: /var/log/mail.log) nachvollziehen kann.

Eine Mail von Changetrack ist dann ein ganz normaler diff, wie z. B. dieser hier:

Code: Alles auswählen

Changes made to '/home/heisenberg/mydomain.com' follow:
  @@ -2,7 +2,7 @@
      Registry Domain ID: 1572104121_DOMAIN_COM-VRSN
      Registrar WHOIS Server: whois.ascio.com
      Registrar URL: http://www.ascio.com
  -   Updated Date: 2022-11-12T09:18:45Z
  +   Updated Date: 2022-12-13T12:11:40Z
      Creation Date: 2009-10-13T09:18:31Z
      Registry Expiry Date: 2022-10-13T09:18:31Z
      Registrar: Ascio Technologies, Inc. Danmark - Filial af Ascio technologies, Inc. USA
  @@ -10,7 +10,7 @@
      Registrar Abuse Contact Email: abuse@ascio.com
      Registrar Abuse Contact Phone: +1.4165350123
      Domain Status: clientHold https://icann.org/epp#clientHold
  -   Domain Status: redemptionPeriod https://icann.org/epp#redemptionPeriod
  +   Domain Status: pendingDelete https://icann.org/epp#pendingDelete
      Name Server: NS1.WEBSERVER.SG
      Name Server: NS2.WEBSERVER.SG
      Name Server: NS3.WEBSERVER.SG
Mit dem kleinen C-Programm rcshist [3] kann man sich dann auch die Historie mit Diffs anschauen. Hier ist ein Beispiel: [4]

Schlussbemerkung

Natürlich kann man die Methodik auch für den genau entgegen gesetzten Anwendungsfall benutzen: Man beobachtet seine Domains und erhält so eine Warnung, sollte sich etwas ändern, obwohl sich doch da eigentlich nichts ändern sollte.

Meine Domain habe ich leider nicht bekommen. Ich dachte die Domain wäre weitestgehend uninteressant. Deswegen erschien mir die gewählte Methode ausreichend. Anhand der Änderung der WHOIS-Nameserver Einträge habe ich dann auch gesehen, wie die Domain weggegangen ist. Erst zu DropCatch, einem Anbieter für Domain-Backordering, und dann zum neuen Eigentümer. Jetzt habe ich auch verstanden, wie das dort läuft: Sobald eine Domain im pendingDelete Status ist, wird ein Auktionsverfahren eingeleitet und der höchste Bieter gewinnt. Na! Das nächste mal klappst vielleicht. Es ist also empfehlenswert sich in der pendingDeletePhase bei einem Domain-Backordering-Anbieter zu registrieren und aktiv zu werden. Fun-Fact: Ich habe mir eine Domain auf meine eigene Liste gesetzt, die ich tatsächlich schon registriert habe. ;-)

Danke für's Lesen!

Anregungen zur Diskussion

Man sieht also hier: Wer am schnellsten ist, bzw. wer am meisten bietet kommt zum Zug bei der Domainvergabe. Die Entwicklung hin zu Premiumdomains bei den neuen generischen Domains(gTLD), d. h. Domains, die sehr beliebt sind und bei denen die Registrare selbst den jährlichen Preis festlegen, ist auch schon ein paar Jahre da. Damit kosten sehr beliebte Domains bis hin zu 5 stelligen Jahresbeträgen. [5]. Wer viel Geld hat, ist also - wie so oft - vorne in der Schlange. Ist das gut so? Falls nein: Wie könnte man die Verteilung besser - zum allgemeinen, gesellschaftlichen Nutzen regeln? Ansonsten: Hat nicht auch fast jeder einen gewissen Jagdtrieb in sich, den man bei solchen Themen gut ausleben kann? ;-)

[1] http://www.megabert.de/downloads/icanha ... .WHOIS.txt
[2] https://changetrack.sourceforge.net/
[3] https://invisible-island.net/rcshist/rcshist.html
[4] http://www.megabert.de/downloads/icanha ... .WHOIS.txt
[5] https://www.inwx.de/de/domain/check#search=car.store
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

dasebastian
Beiträge: 1847
Registriert: 12.07.2020 11:21:17
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 23. Dezember 2022 - Drei, Zwei, Eins, ... Meins! - Domainstatus beobachten

Beitrag von dasebastian » 23.12.2022 16:51:52

Alle beim Baumaufputzen?!

Benutzeravatar
paedubucher
Beiträge: 850
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 23. Dezember 2022 - Drei, Zwei, Eins, ... Meins! - Domainstatus beobachten

Beitrag von paedubucher » 23.12.2022 20:42:03

dasebastian hat geschrieben: ↑ zum Beitrag ↑
23.12.2022 16:51:52
Alle beim Baumaufputzen?!
Fast; unterrichten und 50+ Prüfungen korrigieren :wink:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten