Die UseDNSOption ist meistens unbrauchbar. Wenn die Clientcomputer im Internet verfügbar sind, besteht eine hohe Wahrscheinlichkeit, dass sie über kein Reverse-DNS verfügen, dass sich das Reverse-DNS nicht vorwärts auflöst oder dass das DNS keine anderen Informationen als "Dazu gehört" bereitstellt ISP “, die Ihnen die IP-Adresse bereits mitteilt.
In typischen Konfigurationen wird DNS nur für die Protokollierung verwendet. Es kann zur Authentifizierung verwendet werden, jedoch nur, wenn IgnoreRhosts noin angegeben sshd_config. Dies ist für die Kompatibilität mit alten Installationen , die rsh verwendet, wo man sagen kann „der Benutzer namens bobauf der Maschine genannt darkstarmelden Sie sich an als aliceohne Anmeldeinformationen zeigen“ (durch das Schreiben darkstar bobin ~alice/.rhosts). Dies ist nur dann sicher, wenn Sie allen Computern vertrauen, die möglicherweise eine Verbindung zum SSH-Server herstellen. Mit anderen Worten, dies ist sehr, sehr selten auf sichere Weise verwendbar.
Da die DNS-Suche nur unter besonderen Umständen nützliche Informationen enthält, sollte sie deaktiviert werden. Soweit ich das beurteilen kann, ist der einzige Grund, warum es standardmäßig aktiviert ist, dass es technisch sicherer ist (wenn Sie sich Gedanken über die Authentifizierung und nicht über die Verfügbarkeit machen), obwohl dies nur für eine winzige Anzahl von Umständen gilt.
Ein weiteres Argument zum Deaktivieren dieser Funktion ist, dass jede überflüssige Funktion ein unnötiges Sicherheitsrisiko darstellt .
UseDNS ist also nur für die hostbasierte Authentifizierung relevant? Wenn ich keine hostbasierte Authentifizierung verwende und es mir egal ist, ob Hostname oder IP in Protokollen angezeigt werden, macht UseDNS keinen Unterschied?
user368507
5
@ user368507 Ja, das war's. UseDNSNicht einmal nützlich, wenn Sie eine schlüsselbasierte Hostauthentifizierung verwenden, sondern nur, wenn Sie eine hostnamenbasierte Hostauthentifizierung (dh eine extrem schwache Authentifizierung) verwenden.
Gilles
3
@ Gilles ist natürlich sehr nützlich und kritisch , wenn Sie eine schlüsselbasierte und hostnamenbasierte Authentifizierung verwenden UseDNS. Sie authentifizieren einen Benutzer anhand des Schlüssels und den Server anhand des Hostnamens, der einer MAC-Adresse zugewiesen ist.
Kara Deniz
38
Ich habe einen Fehlerbericht (alt, aber immer noch aktuell) in Ubuntu darüber hinzugefügt.
Ich schlug vor, die Standardeinstellung auf Nein zu ändern und neuere Dokumentation hinzuzufügen:
# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.
Up up upvote ... das ist nützlicher, weil es eine Information enthält, nach der ich gesucht habe.
0xC0000022L
1
Wenn UseDNS nein ist, können Hostnamen nicht in pam_access-Regeln abgeglichen werden, und stattdessen müssen IPs verwendet werden.
ColinM
1
Ich habe diese Antwort vor ein paar Jahren hochgestuft, aber erst heute habe ich festgestellt, dass die Standardeinstellung in OpenSSH 6.8p1, Ubuntu 15.10 und höher, in "UseDNS no" geändert wurde .
Anthony Geoghegan
RedHat (in RHEL7) hat kürzlich auch den Standardwert auf Nein geändert, wodurch hostnamenbasierte Zugriffskontrollen aufgehoben werden (die als meist beratende Kontrollen in einem Intranet nützlich sind, offensichtlich nicht als einziger Zugriffskontrollmechanismus).
Dannysauer
8
Aus der Manpage von sshd_config(5):
UseDNS Specifies whether sshd(8) should look up the remote host name and
check that the resolved host name for the remote IP address maps
back to the very same IP address. The default is “yes”.
Wenn Sie dies aktivieren, wird beim Zugriff von einem Ort ohne ordnungsgemäße DNS (vorwärts und rückwärts) eine Warnung in den Protokollen generiert.
Dies verhindert also keinen Angriff, außer dass eine qualifizierte Remoteadresse des Clients erforderlich ist, um keine Warnung zu protokollieren. Eine solche Warnung kann Ihnen beim Auffinden des Angreifers nur dann helfen, wenn dieser PTR-Datensatz einen Sinn ergibt.
Es ist also ein Filter, wer eine Verbindung herstellen darf, je nachdem, was sich auf dem DNS-Server befindet.
user368507
2
Warum sollte es den Zugang unmöglich machen? sshd generiert nur eine Warnung, wenn DNS A / PTR-Einträge nicht übereinstimmen. Die Anmeldesequenz ist bei der Behebung von Problemen langsam.
Andrey Voitenkov
Dies verhindert den Zugriff, wenn der autorisierte Schlüssel kompromittiert wurde, solange der Angreifer die Werte im from=Feld vor dem fraglichen autorisierten Schlüssel (falls verwendet) nicht fälschen kann .
Alecz
7
Es wird benötigt, wenn Sie die FROM-Option in einer authorized_keys-Datei verwenden und nach Namen und nicht nur nach IPs filtern möchten.
Mit der FROM-Option in einer Zeile einer authorized_keys-Datei können Sie Hosts einschränken, die einen bestimmten Schlüssel verwenden können.
Dies erhöht die Fähigkeit, mehrere Server zu verwalten, die Zugriff aufeinander haben, ohne dass Klone eines Computers die Identität seines Ursprungs annehmen (normalerweise unbeabsichtigt) (übrig gebliebene Crontabs, menschliches Versagen).
Ich möchte hinzufügen, dass ich mich unter CentOS 7 (7.1.1503) und daher unter Red Hat Enterprise Linux 7 nicht mit der Standardeinstellung yesfür anmelden konnteUseDNS . Nachdem noich das Kommentarzeichen entfernt und es auf gesetzt habe , konnte ich mich anmelden. Daher scheint es, dass man tatsächlich den Dienst verweigern kann, wenn DNS nicht richtig funktioniert! In CentOS 6 scheint es die Standardeinstellung zu sein nound daher kann ich sshohne funktionierendes DNS rein!
Ich möchte hinzufügen, dass ich mit LXC-Containern experimentiert habe und nicht mit physischen Maschinen, falls das einen Unterschied macht!
Antworten:
Die
UseDNS
Option ist meistens unbrauchbar. Wenn die Clientcomputer im Internet verfügbar sind, besteht eine hohe Wahrscheinlichkeit, dass sie über kein Reverse-DNS verfügen, dass sich das Reverse-DNS nicht vorwärts auflöst oder dass das DNS keine anderen Informationen als "Dazu gehört" bereitstellt ISP “, die Ihnen die IP-Adresse bereits mitteilt.In typischen Konfigurationen wird DNS nur für die Protokollierung verwendet. Es kann zur Authentifizierung verwendet werden, jedoch nur, wenn
IgnoreRhosts no
in angegebensshd_config
. Dies ist für die Kompatibilität mit alten Installationen , die rsh verwendet, wo man sagen kann „der Benutzer namensbob
auf der Maschine genanntdarkstar
melden Sie sich an alsalice
ohne Anmeldeinformationen zeigen“ (durch das Schreibendarkstar bob
in~alice/.rhosts
). Dies ist nur dann sicher, wenn Sie allen Computern vertrauen, die möglicherweise eine Verbindung zum SSH-Server herstellen. Mit anderen Worten, dies ist sehr, sehr selten auf sichere Weise verwendbar.Da die DNS-Suche nur unter besonderen Umständen nützliche Informationen enthält, sollte sie deaktiviert werden. Soweit ich das beurteilen kann, ist der einzige Grund, warum es standardmäßig aktiviert ist, dass es technisch sicherer ist (wenn Sie sich Gedanken über die Authentifizierung und nicht über die Verfügbarkeit machen), obwohl dies nur für eine winzige Anzahl von Umständen gilt.
Ein weiteres Argument zum Deaktivieren dieser Funktion ist, dass jede überflüssige Funktion ein unnötiges Sicherheitsrisiko darstellt .
quelle
UseDNS
Nicht einmal nützlich, wenn Sie eine schlüsselbasierte Hostauthentifizierung verwenden, sondern nur, wenn Sie eine hostnamenbasierte Hostauthentifizierung (dh eine extrem schwache Authentifizierung) verwenden.UseDNS
. Sie authentifizieren einen Benutzer anhand des Schlüssels und den Server anhand des Hostnamens, der einer MAC-Adresse zugewiesen ist.Ich habe einen Fehlerbericht (alt, aber immer noch aktuell) in Ubuntu darüber hinzugefügt.
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
Ich schlug vor, die Standardeinstellung auf Nein zu ändern und neuere Dokumentation hinzuzufügen:
quelle
Aus der Manpage von
sshd_config(5)
:Wenn Sie dies aktivieren, wird beim Zugriff von einem Ort ohne ordnungsgemäße DNS (vorwärts und rückwärts) eine Warnung in den Protokollen generiert.
Dies verhindert also keinen Angriff, außer dass eine qualifizierte Remoteadresse des Clients erforderlich ist, um keine Warnung zu protokollieren. Eine solche Warnung kann Ihnen beim Auffinden des Angreifers nur dann helfen, wenn dieser PTR-Datensatz einen Sinn ergibt.
bearbeiten: aktualisiert nach Kommentar von Andrey Voitenkov .
quelle
from=
Feld vor dem fraglichen autorisierten Schlüssel (falls verwendet) nicht fälschen kann .Es wird benötigt, wenn Sie die FROM-Option in einer authorized_keys-Datei verwenden und nach Namen und nicht nur nach IPs filtern möchten.
Mit der FROM-Option in einer Zeile einer authorized_keys-Datei können Sie Hosts einschränken, die einen bestimmten Schlüssel verwenden können.
Dies erhöht die Fähigkeit, mehrere Server zu verwalten, die Zugriff aufeinander haben, ohne dass Klone eines Computers die Identität seines Ursprungs annehmen (normalerweise unbeabsichtigt) (übrig gebliebene Crontabs, menschliches Versagen).
quelle
Ich möchte hinzufügen, dass ich mich unter CentOS 7 (7.1.1503) und daher unter Red Hat Enterprise Linux 7 nicht mit der Standardeinstellung
yes
für anmelden konnteUseDNS
. Nachdemno
ich das Kommentarzeichen entfernt und es auf gesetzt habe , konnte ich mich anmelden. Daher scheint es, dass man tatsächlich den Dienst verweigern kann, wenn DNS nicht richtig funktioniert! In CentOS 6 scheint es die Standardeinstellung zu seinno
und daher kann ichssh
ohne funktionierendes DNS rein!Ich möchte hinzufügen, dass ich mit LXC-Containern experimentiert habe und nicht mit physischen Maschinen, falls das einen Unterschied macht!
quelle