1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>8.1. Sicherheitsüberlegungen</title>
<link rel="stylesheet" href="../stylesheets/icinga-docs.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<meta name="keywords" content="Supervision, Icinga, Nagios, Linux">
<link rel="home" href="index.html" title="Icinga Version 1.14 Dokumentation">
<link rel="up" href="ch08.html" title="Kapitel 8. Sicherheit und Leistungsoptimierung">
<link rel="prev" href="ch08.html" title="Kapitel 8. Sicherheit und Leistungsoptimierung">
<link rel="next" href="cgisecurity.html" title="8.2. Verbesserte Classic UI Modul-Sicherheit und Authentifizierung">
<script src="../js/jquery-min.js" type="text/javascript"></script><script src="../js/icinga-docs.js" type="text/javascript"></script>
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<CENTER><IMG src="../images/logofullsize.png" border="0" alt="Icinga" title="Icinga"></CENTER>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">8.1. Sicherheitsüberlegungen</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="ch08.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 8. Sicherheit und Leistungsoptimierung</th>
<td width="20%" align="right"> <a accesskey="n" href="cgisecurity.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="8.1. Sicherheitsüberlegungen">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="security"></a>8.1. Sicherheitsüberlegungen</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section">8.1.1. <a href="security.html#introduction">Einführung</a></span></dt>
<dt><span class="section">8.1.2. <a href="security.html#bestpractices">Optimale Verfahren</a></span></dt>
</dl></div>
<div class="section" title="8.1.1. Einführung">
<div class="titlepage"><div><div><h3 class="title">
<a name="introduction"></a>8.1.1. Einführung</h3></div></div></div>
<div class="mediaobject"><img src="../images/security.png"></div>
<p>Dies ist als ein kurzer Überblick einiger Dinge gedacht, die Sie bei der Installation von Icinga im Hinterkopf behalten
sollten, um es in einer sicheren Weise aufzusetzen.</p>
<p>Ihr Überwachungsrechner sollte als eine Hintertür in Ihre anderen System betrachtet werden. In vielen Fällen wird dem
Icinga-Rechner der Zugriff auf Firewalls gewährt, um entfernte Server zu überwachen. In den meisten Fällen ist die Abfrage von
verschiedenen Informationen der entfernten Server erlaubt. Überwachenden Servern wird ein gewisses Maß an Vertrauen entgegen gebracht,
damit sie entfernte Systeme abfragen können. Das bietet einem potenziellen Angreifer eine attraktive Hintertür zu Ihren Systemen. Ein
Angreifer könnte es einfacher haben, in Ihre Systeme einzudringen, wenn er zuerst den Überwachungsserver kompromittiert. Das trifft
besonders dann zu, wenn Sie gemeinsame SSH-Schlüssel nutzen, um entfernte Systeme zu überwachen.</p>
<p>Wenn ein Eindringling in der Lage ist, Prüfergebnisse oder externe Befehle an den Icinga-Daemon zu erteilen, hat er die
Möglichkeit, falsche Überwachungsdaten zu übertragen, Sie mit falschen Benachrichtigungen auf die Palme bringen oder
Eventhandler-Scripte auszulösen. Wenn Sie Eventhandler-Scripte haben, die Services neu starten, Strom unterbrechen usw., dann kann das
ziemlich problematisch sein.</p>
<p>Ein weiterer zu beachtender Bereich ist die Möglichkeit von Eindringlingen, Überwachungsdaten (Statusinformationen) zu belauschen,
während sie über den Draht gehen. Wenn Übertragungskanäle nicht verschlüsselt sind, können Angreifer durch Beobachtung Ihrer
Überwachungsdaten wertvolle Informationen gewinnen. Nehmen Sie als Beispiel die folgende Situation: ein Angreifer belauscht für eine
gewisse Zeit die Überwachungsdaten und analysiert die typische CPU- und Plattenauslastung Ihrer Systeme zusammen mit der Zahl der
Benutzer, die typischerweise angemeldet sind. Der Angreifer ist dann in der Lage, die beste Zeit für die Kompromittierung eines Systems
und dessen Ressourcen (CPU usw.) zu ermitteln, ohne bemerkt zu werden.</p>
<p>Hier sind einige Hinweise, wie Sie Ihre Systeme sichern können, wenn Sie eine Icinga-basierte Überwachungslösung
implementieren...</p>
</div>
<div class="section" title="8.1.2. Optimale Verfahren">
<div class="titlepage"><div><div><h3 class="title">
<a name="bestpractices"></a>8.1.2. Optimale Verfahren</h3></div></div></div>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<p><span class="bold"><strong>Benutzen Sie eine eigene Überwachungs-Box</strong></span>. Wir würden empfehlen, dass Sie einen Server
benutzen, der nur für die Überwachung (und ggf. andere administrative Aufgaben) vorgesehen ist. Schützen Sie Ihren
Überwachungsserver, als wäre es einer der wichtigsten Server Ihres Netzwerks. Halten Sie die laufenden Services auf einem Minimum
und beschränken Sie den Zugang durch TCP-Wrapper, Firewalls usw. Weil der Icinga-Rechner berechtigt ist, mit Ihren Servern zu
reden und vielleicht durch Ihre Firewalls zu gehen, kann es ein Sicherheitsrisiko sein, wenn Sie Benutzern Zugang zu Ihrem
Überwachungsserver gewähren. Bedenken Sie, dass es einfacher ist, root-Zugang über eine Sicherheitslücke zu bekommen, wenn Sie ein
lokales Benutzerkonto auf dem System haben.</p>
<p><span class="inlinemediaobject"><img src="../images/security3.png"></span></p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Lassen Sie Icinga nicht als root laufen</strong></span> . Icinga muss nicht als root laufen,
also tun Sie es nicht. Sie können Icinga anweisen, die Berechtigungen nach dem Start zu "droppen" und mit Hilfe der <a class="link" href="configmain-nagios_user" target="_top">icinga_user</a>- und <a class="link" href="configmain-nagios_group" target="_top">icinga_group</a>-Direktiven in der Hauptkonfigurationsdatei unter anderen Benutzer- und/oder
Gruppenberechtigungen zu laufen. Wenn Sie Eventhandler oder Plugins ausführen müssen, die Root-Berechtigungen benötigen, möchten Sie
vielleicht <a class="link" href="http://www.courtesan.com/sudo/sudo.html" target="_top">sudo</a> nutzen.</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Verriegeln Sie das Prüfergebnis-Verzeichnis</strong></span>. Stellen Sie sicher, dass nur der
<span class="emphasis"><em>icinga</em></span>-Benutzer im <a class="link" href="configmain.html#configmain-check_result_path">check result path</a> lesen und schreiben
darf. Wenn andere Benutzer außer <span class="emphasis"><em>icinga</em></span> (oder <span class="emphasis"><em>root</em></span>) in diesem Verzeichnis schreiben
dürfen, dann können sie falsche Host-/Service-Prüfergebnisse an den Icinga-Daemon senden. Dies kann zu Ärger (falschen
Benachrichtigungen) oder Sicherheitsproblemen (ausgelösten Eventhandlern) führen.</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Verriegeln Sie das External Command File</strong></span>. Wenn Sie <a class="link" href="extcommands.html" target="_top">externe Befehle</a> aktivieren, dann stellen Sie sicher, dass Sie passende Berechtigungen für das
<span class="emphasis"><em>/usr/local/icinga/var/rw</em></span>-Verzeichnis setzen. Nur der Icinga-Benutzer (normalerweise
<span class="emphasis"><em>icinga</em></span>) und der Web-Server-Benutzer (normalerweise <span class="emphasis"><em>nobody</em></span>, <span class="emphasis"><em>httpd</em></span>,
<span class="emphasis"><em>apache2</em></span> oder <span class="emphasis"><em>www-data</em></span>) sollten Schreibberechtigung für das Commmand-File besitzen. Wenn
Sie Icinga auf einer Maschine installiert haben, die der Überwachung und administrativen Aufgaben dient, dann sollte das
ausreichen. Wenn Sie es auf einer allgemeinen- oder Multi-User-Maschine installiert haben (nicht empfohlen) und dem
Web-Server-Benutzer Schreibberechtigung auf das Command-File geben, kann das ein Sicherheitsproblem sein. Sie wollen schließlich
nicht, dass jeder Benutzer auf Ihrem System Icinga über das External-Command-File kontrollieren kann. In diesem Fall würden
wir raten, nur dem <span class="emphasis"><em>nagios</em></span>-Benutzer Schreibberechtigung zu erlauben und etwas wie <a class="link" href="http://cgiwrap.sourceforge.net/" target="_top">CGIWrap</a> zu benutzen, um die CGIs als <span class="emphasis"><em>icinga</em></span> statt als
<span class="emphasis"><em>nobody</em></span> laufen zu lassen.</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Fordern Sie Authentifizierung bei den CGIs</strong></span>. Wir empfehlen dringend Authentifizierung für den
Zugriff auf die CGIs. Sobald Sie das tun, lesen Sie die Dokumentation zu Standardberechtigungen von authentifizierten Kontakten und
autorisieren Sie bestimmte Kontakte für zusätzliche Rechte nur, wenn es nötig ist. Eine Anleitung zur Einrichtung von
Authentifizierung und Autorisierung finden Sie <a class="link" href="cgiauth.html" title="6.2. Authentifizierung und Autorisierung im Classic UI">hier</a>. Wenn Sie mit der <a class="link" href="configcgi.html#configcgi-use_authentication">use_authentication</a>-Direktive die Authentifizierung in der CGI-Konfigurationsdatei
deaktivieren, wird das <a class="link" href="cgis.html#cgis-cmd_cgi">command CGI</a> das Schreiben jeglicher Befehle in das <a class="link" href="configmain.html#configmain-command_file">external command file</a> verweigern. Sie wollen schließlich nicht, dass alle Welt in der Lage
ist, Icinga zu kontrollieren, oder?</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Benutzen Sie absolute Pfade in Befehlsdefinitionen</strong></span>. Wenn Sie Befehle definieren, benutzen Sie
den <span class="emphasis"><em>absoluten Pfad</em></span> (keinen relativen) für Scripte oder Programm, die Sie ausführen.</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Verstecken Sie sensible Daten mit $USERn$-Makros</strong></span>. Die CGIs lesen die <a class="link" href="configmain.html" title="3.2. Optionen der Hauptkonfigurationsdatei">Hauptkonfigurationsdatei</a> und die <a class="link" href="configobject.html" title="3.3. Überblick Objektkonfiguration">Objekt-Konfigurationsdatei(en)</a>, so
dass Sie dort keine sensiblen Informationen (Benutzernamen, Passwörter, usw.) ablegen sollten. Wenn Sie Benutzernamen und/oder
Passwörter in einer Befehlsdefinition angeben müssen, dann nutzen Sie ein $USERn$-<a class="link" href="macros.html" title="5.2. Makros verstehen und wie sie arbeiten">Makro</a>, um sie zu
verstecken. $USERn$-Makros werden in einer oder mehreren <a class="link" href="configmain.html#configmain-resource_file">Ressourcen-Dateien</a>
definiert. Die CGIs werden nicht versuchen, den Inhalt von Ressourcen-Dateien zu lesen, so dass Sie restriktivere Berechtigungen
(600 oder 660) dafür benutzen können. Betrachten Sie die Beispiel-<span class="emphasis"><em>resource.cfg</em></span>-Datei im Basisverzeichnis der
Icinga-Distribution für ein Beispiel, wie $USERn$-Makros zu definieren sind.</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Entfernen Sie gefährliche Zeichen aus Makros</strong></span>. Benutzen Sie die <a class="link" href="configmain.html#configmain-illegal_macro_output_chars">illegal_macro_output_chars</a>-Direktive, um gefährliche Zeichen aus den
$HOSTOUTPUT$- , $SERVICEOUTPUT$-, $HOSTPERFDATA$- und $SERVICEPERFDATA$-Makros zu entfernen, bevor sie in Benachrichtigungen usw.
benutzt werden. Gefährliche Zeichen kann alles sein, was ggf. durch die Shell interpretiert wird und dadurch eine Sicherheitslücke
öffnet. Ein Beispiel dafür sind Backtick-Zeichen (`) in den $HOSTOUTPUT$, $SERVICEOUTPUT$, $HOSTPERFDATA$ und /oder
$SERVICEPERFDATA$-Makros, die es einem Angreifer erlauben, einen beliebigen Befehl als Icinga-Benutzer auszuführen (ein guter
Grund, Icinga NICHT als root-Benutzer laufen zu lassen).</p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Sicherer Zugang zu entfernten Agenten</strong></span>. Verriegeln Sie den Zugang zu Agenten (NRPE,
NSClient, SNMP, usw.) auf entfernten Systemen durch Firewalls, Zugangsliste usw. Sie wollen nicht, dass jeder Ihre Systeme nach
Statusinformationen abfragt. Diese Informationen können durch einen Angreifer genutzt werden, um entfernte Eventhandler-Scripte
auszuführen oder die beste Zeit zu ermitteln, um nicht beobachtet zu werden.</p>
<p><span class="inlinemediaobject"><img src="../images/security1.png"></span></p>
</li>
<li class="listitem">
<p><span class="bold"><strong>Sichere Kommunikationskanäle</strong></span>. Stellen Sie sicher, dass Sie die Kommunikationskanäle zwischen
verschiedenen Icinga-Installationen und Ihren Überwachungskanälen verschlüsseln, wann immer möglich. Sie wollen nicht, dass
jemand Statusinformationen belauscht, die über Ihr Netzwerk gehen. Diese Informationen können durch einen Angreifer genutzt werden,
um die beste Zeit für einen unbeobachteten Zugang zu ermitteln.</p>
<p><span class="inlinemediaobject"><img src="../images/security2.png"></span></p>
</li>
</ol></div>
<a class="indexterm" name="idm139734664440432"></a>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="ch08.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch08.html">Nach oben</a></td>
<td width="40%" align="right"> <a accesskey="n" href="cgisecurity.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Kapitel 8. Sicherheit und Leistungsoptimierung </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> 8.2. Verbesserte Classic UI Modul-Sicherheit und Authentifizierung</td>
</tr>
</table>
</div>
<P class="copyright">© 1999-2009 Ethan Galstad, 2009-2017 Icinga Development Team, https://www.icinga.com</P>
</body>
</html>
|