Benutzerdefinierte Richtlinie

Benutzerdefinierte Richtlinie

Ich möchte Logstash als Root ausführen, damit es alle Protokolle lesen kann (es ist sehr mühsam, ihm Zugriff auf alle Protokolle zu gewähren). Ich möchte jedoch nicht, dass es auf meinem Server Amok läuft. Ich habe darüber nachgedacht, es unter SELinux einzuschränken.
Die Optionen, die ich sehe, sind:

  • Erstellen Sie ein völlig neues Label für Logstash. Dies bedeutet auch, dass Sie Labels für Logstash-Konfigurationsdateien, Logstash-Programme und -Bibliotheken usw. erstellen.
  • Führen Sie logstash mit einem Label aus, das für einen anderen Prozess bestimmt ist. Ich habe es im Auge behalten, clogd_tda es logim Namen steht und ich konnte keine verdächtigen Schreibberechtigungen finden, indem ichsudo sesearch --allow -s clogd_t | grep clogd_t | less -p write
  • Geben Sie auf und führen Sie es als uneingeschränkten Root-Prozess aus

Ist eines von beiden normal?

Falls es wichtig ist, ich verwende CentOS 6.7

Antwort1

Ich würde lieber eine benutzerdefinierte Richtlinie erstellen, da dies übersichtlicher ist und Ihnen die Kontrolle über das Geschehen gibt.

Benutzerdefinierte Richtlinie

So wie ich es verstehe, handelt es sich um einen Java-basierten Daemon, den Sie ausführen werden. Daher ist es wahrscheinlich sinnvoll, ihn als auszuführen system_u:system_r:logstash_t. Anschließend müssen Sie (schreibgeschützten?) Zugriff auf alle Protokolldateien der Domäne logstash_t gewähren und abschließend alle weiteren Berechtigungen erteilen, die logstash möglicherweise zum Ausführen benötigt.

Mithilfe der Refpolicy-Schnittstellen erhalten wir etwa Folgendes:

policy_module(logstash, 1.0)

# define the entry point and the domain
type logstash_exec_t
init_daemon_domain(logstash_t, logstash_exec_t)

Dann muss der Logstash-Daemon in der Lage sein, Protokolldateien zu lesen:

logging_search_all_logs(logstash_t)
logging_getattr_all_logs(logstash_t)
logging_read_all_logs(logstash_t)

Damit sollte der Großteil der Arbeit erledigt sein, anschließend müssen Sie den Rest hinzufügen.

Wiederverwendete Richtlinie

Was den zweiten Punkt betrifft, bin ich nicht sicher, warum Sie von sesearch keine Schreibberechtigung gemeldet bekommen, aber wenn Sie sich die Quellen ansehen:

# clogd.te
storage_raw_read_fixed_disk(clogd_t)
storage_raw_write_fixed_disk(clogd_t)

# storage.te 
########################################
## <summary>
##      Allow the caller to directly write to a fixed disk.
##      This is extremely dangerous as it can bypass the
##      SELinux protections for filesystem objects, and
##      should only be used by trusted domains.
## </summary>
## <param name="domain">
##      <summary>
##      Domain allowed access.
##      </summary>
## </param>
#
interface(`storage_raw_write_fixed_disk',`
# and the rest of the stuff here...

Nicht wirklich das, was man von einem Tool zur Protokollüberwachung erwarten würde. Möglicherweise finden Sie etwas Passendes für die zweite Lösung. Stellen Sie nur sicher, dass Sie keine zusätzlichen, nicht benötigten Berechtigungen erhalten, da dies den gesamten Zweck der Ausführung des Prozesses in Selinux zunichte macht.

Ich hoffe es hilft.

verwandte Informationen