File: security.html

package info (click to toggle)
icinga 1.0.2-2%2Bsqueeze1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 33,952 kB
  • ctags: 13,294
  • sloc: xml: 154,821; ansic: 99,198; sh: 14,585; sql: 5,852; php: 5,126; perl: 2,838; makefile: 1,268
file content (172 lines) | stat: -rw-r--r-- 13,812 bytes parent folder | download | duplicates (2)
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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Sicherheitsüberlegungen</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<meta name="keywords" content="Supervision, Icinga, Icinga, Linux">
<link rel="home" href="index.html" title="Icinga Version 1.0.2 Dokumentation">
<link rel="up" href="ch07.html" title="Kapitel 7. Sicherheit und Leistungsoptimierung">
<link rel="prev" href="ch07.html" title="Kapitel 7. Sicherheit und Leistungsoptimierung">
<link rel="next" href="cgisecurity.html" title="Verbesserte CGI-Sicherheit und Authentifizierung">
</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">Sicherheitsüberlegungen</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="ch07.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 7. 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="Sicherheitsüberlegungen">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="security"></a>Sicherheitsüberlegungen</h2></div></div></div>
  

  <p><span class="bold"><strong>Einführung</strong></span></p>

  <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>

  <p><a name="security-bestpractices"></a> <span class="bold"><strong>Optimale Verfahren</strong></span></p>

  <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="Authentifizierung und Autorisierung in den CGIs">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="Optionen der Hauptkonfigurationsdatei">Hauptkonfigurationsdatei</a> und die <a class="link" href="configobject.html" title="Ü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="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="id5608052"></a>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="ch07.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch07.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 7. 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"> Verbesserte CGI-Sicherheit und Authentifizierung</td>
</tr>
</table>
</div>
<P class="copyright">© 2009-2010 Icinga Development Team, http://www.icinga.org</P>
</body>
</html>