Zum Inhalt springen

BIND/rndc: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
DanielZorin (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=== Die Verwendung von rndc ===
=== Die Verwendung von rndc ===
BIND enthält das Utility <tt>rndc</tt>, mit dem Sie den <tt>named</tt>-Daemon über die Befehlszeile vom lokalen und von einem Remote Host verwalten können.
BIND stellt mit ''rndc'' (Remote Name Daemon Control) ein Werkzeug zur Verwaltung des ''named''-Daemons über eine authentifizierte TCP-Verbindung bereit.


Um zu verhindern, dass nicht authorisierte Benutzer Zugriff zum <tt>named</tt>-Daemon erlangen, verwendet BIND eine Authentifizierungsmethode, auf einem gemeinsamen geheimen Schlüssel basierend, um Hostsystemen den Zugriff zu gewähren. Das heisst, das ein übereinstimmender Schlüssel in <tt>/etc/named.conf</tt> und der <tt>rndc</tt> Konfigurationsdatei <tt>/etc/rndc.conf</tt> existieren muss.
* Kommunikation erfolgt standardmäßig über TCP-Port 953.
* Die Authentifizierung basiert auf einem gemeinsam genutzten TSIG-Schlüssel (HMAC).
* Schlüsseldefinitionen in der ''named''-Konfiguration und in der ''rndc''-Konfiguration müssen übereinstimmen.
* Die Beispiele verwenden ''/etc/named.conf'' und ''/etc/rndc.key''; unter Debian liegen die entsprechenden Dateien typischerweise unter ''/etc/bind/'' (z. B. ''/etc/bind/named.conf'', ''/etc/bind/rndc.key'').


==== Konfigurieren von /etc/named.conf ====
==== Konfiguration in /etc/named.conf ====
Um die Verbindung von <tt>rndc</tt>zu Ihrem <tt>named</tt>-Dienst zu ermöglichen, muss beim Start von <tt>named</tt> die <tt>controls</tt>-Anweisung in Ihrer <tt>/etc/named.conf</tt>-Datei vorhanden sein.
Für die Nutzung von ''rndc'' muss eine ''controls''-Direktive in der ''named''-Konfiguration vorhanden sein.


Das folgende Beispiel einer <tt>controls</tt>-Anweisung ermöglicht es Ihnen, <tt>rndc</tt>-Befehle vom lokalen Host auszuführen.
; Beispiel: ''controls''-Direktive (IPv4 und IPv6, lokal)
<syntaxhighlight lang="json" highlight="" line copy>
controls {
  inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
  inet ::1      allow { localhost; } keys { "rndc-key"; };
};
</syntaxhighlight>


Controls {
Diese Anweisung veranlasst ''named'', auf 127.0.0.1:953 und ::1:953 Verbindungen zu akzeptieren und nur Anfragen zu erlauben, die mit dem Schlüssel ''"rndc-key"'' signiert sind.
  inet 127.0.0.1 allow { localhost; } keys { ''<key-name>''<nowiki>; };</nowiki>
};


Diese Anweisung weist <tt>named</tt> an, am standardmäßigen TCP-Port 953 nach Loopback-Adressen zu suchen und lässt <tt>rndc</tt>-Befehle zu, die vom lokalen Host ausgeführt werden, wenn der richtige Schlüssel angegeben wird. Der <tt>''<key-name>''</tt> bezieht sich auf die <tt>key</tt>-Direktive, die sich auch in der <tt>/etc/named.conf</tt>-Datei befindet. Im nächsten Beispiel wird eine <tt>key</tt>-Anweisung veranschaulicht.
; Beispiel: ''key''-Definition


key "''<key-name>''" {
<syntaxhighlight lang="json" highlight="" line copy>
  algorithm hmac-md5;
key "rndc-key" {
  secret "''<key-value>''";
  algorithm hmac-sha256;
};
  secret "BASE64-KEY";
};
</syntaxhighlight>


In diesem Beispiel benutzt <tt>''<key-value>''</tt> einen HMAC-MD5-Algorithmus. Mit dem nachfolgenden Befehl können Sie Ihre eigenen Schlüssel unter Verwendung eines HMAC-MD5-Algorithmus erstellen:
* ''algorithm hmac-sha256;'' – empfiehlt sich als aktueller Standard für TSIG-Schlüssel.
* Ältere Installationen verwenden teilweise noch ''hmac-md5''; dieser Algorithmus gilt als veraltet und sollte nur aus Kompatibilitätsgründen verwendet werden.


dnssec-keygen -a hmac-md5 -b ''<bit-length>'' -n HOST ''<key-file-name>''
; Schlüsselgenerierung mit rndc-confgen
In typischen Installationen wird der Schlüssel automatisch mit ''rndc-confgen'' erzeugt:


Es empfiehlt sich, einen Schlüssel mit einer Größe von mindestens 256 Bit zu erstellen. Der Schlüssel, der im <tt>''<key-value>''</tt>-Bereich gespeichert werden sollte, kann in der Datei <tt>''<key-file-name>''</tt>, welche von diesem Befehl erzeugt wurde, gefunden werden.
<syntaxhighlight lang="bash" highlight="1" line copy>rndc-confgen -a</syntaxhighlight>
 
Dieser Befehl erzeugt eine Datei ''/etc/rndc.key'' (unter Debian in der Regel ''/etc/bind/rndc.key'') mit einer passenden ''key''-Definition und setzt dabei restriktive Dateirechte (z. B. Modus 0600).
 
Alternativ kann ein TSIG-Schlüssel explizit mit ''dnssec-keygen'' erzeugt werden:
 
<syntaxhighlight lang="bash" highlight="1" line copy>dnssec-keygen -a hmac-sha256 -b 256 -n HOST rndc-key</syntaxhighlight>
 
Der generierte Schlüssel befindet sich in der zugehörigen ''.key''-Datei (z. B. ''Krndc-key.+161+12345.key'') und wird in das Feld ''secret'' übernommen.


; Warnung
; Warnung
: Da <tt>/etc/named.conf</tt> von jedem gelesen werden kann, ist es angeraten, das <tt>key</tt>-Statement in eine separate Datei auszulagern, welche nur von root gelesen werden kann und ein <tt>include</tt>-Statement zu verwenden, um diese Datei einzubinden. Zum Beispiel:
: Klartext-Schlüssel sollten nicht direkt in einer global lesbaren Konfigurationsdatei stehen. Schlüsseldefinitionen werden in eine separate, nur für ''root'' lesbare Datei ausgelagert und per ''include'' eingebunden, z. B.:
include "/etc/rndc.key";


==== Konfigurieren von /etc/rndc.conf ====
<syntaxhighlight lang="json" highlight="" line copy>
Die <tt>key</tt>-Anweisung ist die wichtigste in der Datei <tt>/etc/rndc.conf</tt>.
include "/etc/rndc.key";
</syntaxhighlight>


key "''<key-name>''" {
: Unter Debian wird die Datei typischerweise als ''/etc/bind/rndc.key'' abgelegt und entsprechend eingebunden.
  algorithm hmac-md5;
  secret "''<key-value>''";
};


<tt>''<key-name>''</tt> und <tt>''<key-value>''</tt> sollten exakt mit den Einstellungen in <tt>/etc/named.conf</tt> übereinstimmen.
==== Konfiguration in /etc/rndc.conf ====
Die Datei ''/etc/rndc.conf'' beschreibt, mit welchen Schlüsseln und gegen welche Server ''rndc'' arbeitet. Auf vielen Systemen genügt die automatisch erzeugte Datei ''/etc/rndc.key''; eine explizite ''rndc.conf'' ist dann optional.


Um den Schlüsseln, welche in <tt>/etc/named.conf</tt> auf dem Ziel-Server angegeben sind, zu entsprechen, fügen Sie folgende Zeilen zu <tt>/etc/rndc.conf</tt> hinzu.
; Minimalbeispiel
<syntaxhighlight lang="json" highlight="" line copy>
key "rndc-key" {
  algorithm hmac-sha256;
  secret "BASE64-KEY";
};


Options {
options {
  default-server localhost;
  default-server 127.0.0.1;
  default-key     "''<key-name>''";
  default-key "rndc-key";
};
};


Diese Anweisung setzt den globalen Default-Schlüssel. Die<tt>rndc</tt> Konfigurationsdatei kann allerdings auch verschiedene Schlüssel für verschiedene Server verwenden, wie im folgenden Beispiel gezeigt:
server 127.0.0.1 {
  key "rndc-key";
};
</syntaxhighlight>


server localhost {
* ''key'' – definiert den gemeinsam genutzten Schlüssel.
  key  "''<key-name>''";
* ''options'' – setzt globale Vorgaben wie ''default-server'' und ''default-key''.
};
* ''server'' – ermöglicht serverbezogene Einstellungen, z. B. abweichende Ports oder Schlüssel.


; Achtung
; Achtung
: Stellen Sie sicher, dass jeweils nur ein root-Benutzer auf die Datei <tt>/etc/rndc.conf</tt> zugreifen kann.
: ''/etc/rndc.conf'' und die verwendeten Schlüsseldateien (z. B. ''/etc/rndc.key'' oder ''/etc/bind/rndc.key'') sollten nur für ''root'' lesbar sein (Modus 0600), um unbefugten Zugriff auf Geheimschlüssel zu verhindern.


Für weitere Informationen zur Datei <tt>/etc/rndc.conf</tt>, siehe die <tt>rndc.conf</tt> man-Seiten.
Für Detailinformationen zu allen Direktiven steht die Manpage ''rndc.conf(5)'' zur Verfügung.


==== Befehlszeilenoptionen ====
==== Befehlszeilenoptionen ====
Ein <tt>rndc</tt>-Befehl sieht wie folgt aus:
Die allgemeine Aufrufsyntax von ''rndc'' lautet:
 
<syntaxhighlight lang="bash" highlight="1" line copy>rndc [Optionen] command [command-options]</syntaxhighlight>
 
Häufig verwendete Befehle bei korrekt konfiguriertem lokalen Host:
{| class="wikitable options big"
! Befehl
! Beschreibung
|-
| status
| zeigt Status des Servers, Versionsinformationen und die Zahl der geladenen Zonen.
|-
| ''reload''
| lädt Konfiguration und Zonendateien neu, ohne den Prozess neu zu starten.
|-
| reconfig
| liest nur die Konfiguration neu und erkennt neue oder entfernte Zonen, ohne alle Zonendateien neu zu laden.
|-
| reload ''<zonenname>''
| lädt nur die angegebene Zone neu.
|-
| refresh ''<zonenname>''
| startet einen sofortigen SOA-Refresh für eine Slave-Zone.
|-
| freeze ''<zonenname>''
| friert eine dynamische Zone ein; Journaldaten werden in die Zonendatei geschrieben, weitere Updates werden blockiert.
|-
| thaw ''<zonenname>''
| hebt ''freeze'' auf und erlaubt wieder dynamische Updates.
|-
| sync ''<zonenname>''
| schreibt Journaldaten in die Zonendatei; mit ''-clean'' wird das Journal anschließend gelöscht.
|-
| flush
| leert den gesamten Resolver-Cache.
|-
| flushname ''<name>''
| entfernt nur Einträge für einen bestimmten Namen aus dem Cache.
|-
| flushtree ''<name>''
| entfernt alle Einträge unterhalb eines Namensbaums aus dem Cache.
|-
| halt
| beendet den ''named''-Dienst sofort, ohne dynamische Zonendaten zuerst zu sichern.
|-
| stop
| stoppt ''named'' kontrolliert und speichert zuvor dynamische Updates und IXFR-Informationen.
|-
| querylog
| schaltet die ausführliche Protokollierung von Anfragen ein oder aus.
|-
| stats
| schreibt Statistikdaten in die von ''statistics-file'' konfigurierte Datei (unter Debian typischerweise z. B. ''/var/cache/bind/named.stats'').
|}
 
Gegebenenfalls ist es notwendig, Vorgaben aus der Konfigurationsdatei zu überschreiben:
 
* '''''-c DATEI''''' – verwendet eine alternative Konfigurationsdatei.
* '''''-p PORT''''' – verwendet einen anderen als den Standardport 953 für die Verbindung zu ''named''.
* '''''-s SERVER''''' – adressiert einen anderen Zielserver als den in ''options'' definierten ''default-server''.
* '''''-y KEYNAME''''' – verwendet einen anderen als den in ''options'' konfigurierten ''default-key''.
 
Weitere Details zu Befehlen und Optionen sind in den Manpages ''rndc(8)'' und ''named(8)'' beschrieben.
<noinclude>
 
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


rndc ''<options>'' ''<command>'' ''<command-options>''
=== Dokumentation ===
<!--
; Man-Page
#


Wenn <tt>rndc</tt> auf einem korrekt konfigurierten lokalen Host ausgeführt wird, stehen Ihnen folgende Befehle zur Verfügung:
; Info-Pages
* <tt>halt</tt> — Hält den <tt>named</tt>-Service sofort an.
-->
* <tt>querylog</tt> — Protokolliert alle Abfragen, die von Clients auf diesem Name-Server durchgeführt wurden.
* <tt>refresh</tt> — Aktualisiert die Datenbank des Nameservers.
* <tt>reload</tt> — Weist den Name-Server an, die Zone-Dateien neu zu laden, aber alle vorher verarbeiteten Antworten zu behalten. Dadurch können Sie Änderungen in den Zone-Dateien durchführen, ohne dass die gespeicherten Auflösungen von Namen verloren gehen.
* Wenn sich Ihre Änderungen nur auf eine bestimmte Zone auswirken, können Sie lediglich diese Zone neu laden. Geben Sie hierzu nach dem <tt>reload</tt>-Befehl den Namen der Zone ein.
* <tt>stats</tt> — Schreibt die aktuellen <tt>named</tt>-Statistiken in die Datei <tt>/var/named/named.stats</tt>.
* <tt>stop</tt> — Stoppt den Server vorsichtig, und speichert dabei alle dynamischen Updates und die vorhandenen ''Incremental Zone Transfers'' (''IXFR'') Daten, vor dem Beenden.


Gelegentlich werden Sie bestimmt auch die Standardeinstellungen in der <tt>/etc/rndc.conf</tt>-Datei übergehen wollen. Hierzu stehen Ihnen folgende Optionen zur Verfügung:
=== Links ===
* <tt>-c ''<configuration-file>''</tt> — Gibt einen alternativen Speicherort der Konfigurationsdatei an.
==== Projekt ====
* <tt>-p ''<port-number>''</tt> — Legt für die <tt>rndc</tt>-Verbindung eine andere als die standardmäßige Portnummer 953 fest.
==== Weblinks ====
* <tt>-s ''<server>''</tt> — Ermöglicht es Ihnen, einen anderen als den <tt>default-server</tt> in <tt>/etc/rndc.conf</tt> anzugeben.
* <tt>-y ''<key-name>''</tt> — Ermöglicht es Ihnen, einen anderen als den <tt>default-key</tt> in der <tt>/etc/rndc.conf</tt>-Datei einzustellen.


Zusätzliche Informationen zu diesen Optionen finden Sie auf der <tt>rndc</tt>-man-Seite
<!--
{{DEFAULTSORT:new}}
{{DISPLAYTITLE:new}}
-->


{{SORTIERUNG:BIND}}
{{SORTIERUNG:BIND}}
[[Kategorie:BIND]]


[[Kategorie:BIND]]
</noinclude>

Version vom 8. Dezember 2025, 13:39 Uhr

Die Verwendung von rndc

BIND stellt mit rndc (Remote Name Daemon Control) ein Werkzeug zur Verwaltung des named-Daemons über eine authentifizierte TCP-Verbindung bereit.

  • Kommunikation erfolgt standardmäßig über TCP-Port 953.
  • Die Authentifizierung basiert auf einem gemeinsam genutzten TSIG-Schlüssel (HMAC).
  • Schlüsseldefinitionen in der named-Konfiguration und in der rndc-Konfiguration müssen übereinstimmen.
  • Die Beispiele verwenden /etc/named.conf und /etc/rndc.key; unter Debian liegen die entsprechenden Dateien typischerweise unter /etc/bind/ (z. B. /etc/bind/named.conf, /etc/bind/rndc.key).

Konfiguration in /etc/named.conf

Für die Nutzung von rndc muss eine controls-Direktive in der named-Konfiguration vorhanden sein.

Beispiel
controls-Direktive (IPv4 und IPv6, lokal)
controls {
  inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; };
  inet ::1       allow { localhost; } keys { "rndc-key"; };
};

Diese Anweisung veranlasst named, auf 127.0.0.1:953 und ::1:953 Verbindungen zu akzeptieren und nur Anfragen zu erlauben, die mit dem Schlüssel "rndc-key" signiert sind.

Beispiel
key-Definition
key "rndc-key" {
  algorithm hmac-sha256;
  secret "BASE64-KEY";
};
  • algorithm hmac-sha256; – empfiehlt sich als aktueller Standard für TSIG-Schlüssel.
  • Ältere Installationen verwenden teilweise noch hmac-md5; dieser Algorithmus gilt als veraltet und sollte nur aus Kompatibilitätsgründen verwendet werden.
Schlüsselgenerierung mit rndc-confgen

In typischen Installationen wird der Schlüssel automatisch mit rndc-confgen erzeugt:

rndc-confgen -a

Dieser Befehl erzeugt eine Datei /etc/rndc.key (unter Debian in der Regel /etc/bind/rndc.key) mit einer passenden key-Definition und setzt dabei restriktive Dateirechte (z. B. Modus 0600).

Alternativ kann ein TSIG-Schlüssel explizit mit dnssec-keygen erzeugt werden:

dnssec-keygen -a hmac-sha256 -b 256 -n HOST rndc-key

Der generierte Schlüssel befindet sich in der zugehörigen .key-Datei (z. B. Krndc-key.+161+12345.key) und wird in das Feld secret übernommen.

Warnung
Klartext-Schlüssel sollten nicht direkt in einer global lesbaren Konfigurationsdatei stehen. Schlüsseldefinitionen werden in eine separate, nur für root lesbare Datei ausgelagert und per include eingebunden, z. B.:
include "/etc/rndc.key";
Unter Debian wird die Datei typischerweise als /etc/bind/rndc.key abgelegt und entsprechend eingebunden.

Konfiguration in /etc/rndc.conf

Die Datei /etc/rndc.conf beschreibt, mit welchen Schlüsseln und gegen welche Server rndc arbeitet. Auf vielen Systemen genügt die automatisch erzeugte Datei /etc/rndc.key; eine explizite rndc.conf ist dann optional.

Minimalbeispiel
key "rndc-key" {
  algorithm hmac-sha256;
  secret "BASE64-KEY";
};

options {
  default-server 127.0.0.1;
  default-key "rndc-key";
};

server 127.0.0.1 {
  key "rndc-key";
};
  • key – definiert den gemeinsam genutzten Schlüssel.
  • options – setzt globale Vorgaben wie default-server und default-key.
  • server – ermöglicht serverbezogene Einstellungen, z. B. abweichende Ports oder Schlüssel.
Achtung
/etc/rndc.conf und die verwendeten Schlüsseldateien (z. B. /etc/rndc.key oder /etc/bind/rndc.key) sollten nur für root lesbar sein (Modus 0600), um unbefugten Zugriff auf Geheimschlüssel zu verhindern.

Für Detailinformationen zu allen Direktiven steht die Manpage rndc.conf(5) zur Verfügung.

Befehlszeilenoptionen

Die allgemeine Aufrufsyntax von rndc lautet:

rndc [Optionen] command [command-options]

Häufig verwendete Befehle bei korrekt konfiguriertem lokalen Host:

Befehl Beschreibung
status zeigt Status des Servers, Versionsinformationen und die Zahl der geladenen Zonen.
reload lädt Konfiguration und Zonendateien neu, ohne den Prozess neu zu starten.
reconfig liest nur die Konfiguration neu und erkennt neue oder entfernte Zonen, ohne alle Zonendateien neu zu laden.
reload <zonenname> lädt nur die angegebene Zone neu.
refresh <zonenname> startet einen sofortigen SOA-Refresh für eine Slave-Zone.
freeze <zonenname> friert eine dynamische Zone ein; Journaldaten werden in die Zonendatei geschrieben, weitere Updates werden blockiert.
thaw <zonenname> hebt freeze auf und erlaubt wieder dynamische Updates.
sync <zonenname> schreibt Journaldaten in die Zonendatei; mit -clean wird das Journal anschließend gelöscht.
flush leert den gesamten Resolver-Cache.
flushname <name> entfernt nur Einträge für einen bestimmten Namen aus dem Cache.
flushtree <name> entfernt alle Einträge unterhalb eines Namensbaums aus dem Cache.
halt beendet den named-Dienst sofort, ohne dynamische Zonendaten zuerst zu sichern.
stop stoppt named kontrolliert und speichert zuvor dynamische Updates und IXFR-Informationen.
querylog schaltet die ausführliche Protokollierung von Anfragen ein oder aus.
stats schreibt Statistikdaten in die von statistics-file konfigurierte Datei (unter Debian typischerweise z. B. /var/cache/bind/named.stats).

Gegebenenfalls ist es notwendig, Vorgaben aus der Konfigurationsdatei zu überschreiben:

  • -c DATEI – verwendet eine alternative Konfigurationsdatei.
  • -p PORT – verwendet einen anderen als den Standardport 953 für die Verbindung zu named.
  • -s SERVER – adressiert einen anderen Zielserver als den in options definierten default-server.
  • -y KEYNAME – verwendet einen anderen als den in options konfigurierten default-key.

Weitere Details zu Befehlen und Optionen sind in den Manpages rndc(8) und named(8) beschrieben.


Anhang

Siehe auch



Dokumentation

Links

Projekt

Weblinks