Protokolldateien in CentOS 7 [geschlossen]

8

Wie kann ich in CentOS 7 alle Systemprotokolle finden und anzeigen, aus denen hervorgeht, wer versucht hat, in das System einzutreten, wer eingestiegen ist, welche Prozesse sie kontaktiert haben, was sie erreicht haben usw. Ich möchte in der Lage sein, jede Aktivität mit beiden zu verknüpfen eine Benutzer-ID oder eine Remote-IP-Adresse.

Mein var/log/Verzeichnis enthält zahlreiche Ressourcen, einschließlich /var/log/messagesund /var/log/secure, aber die meisten Dateien sind vom Typ Binary (application/octet-stream)und das Betriebssystem kann sie nur öffnen, wenn ich ihnen ein unbekanntes Anzeigeprogramm zuordne. Auch var/log/firewalldscheint keine nützlichen Informationen zu enthalten.

Ich kann alle von meiner App, meiner Datenbank und NginX / Apache erstellten Protokolle finden.

CodeMed
quelle
Ok, du hast gefunden /var/logund alle von ihnen sind Binärdateien? Bist du sicher? Wie prüfst du?
Braiam
@Braiam Ich habe nicht gesagt, dass sie alle Binärdateien sind. Ich sagte, die meisten von ihnen sind Binärdateien. Beispielsweise /var/log/firewalldhandelt es sich um eine Textdatei, die scheinbar nutzlose Informationen enthält. Ich überprüfe, indem ich auf die Dateien in der GUI klicke. Klicken Sie zuerst mit der linken Maustaste, um zu versuchen, zu öffnen, und klicken Sie dann mit der rechten Maustaste, um Eigenschaften anzuzeigen, um den Dateityp zu überprüfen.
CodeMed
Das System tut dies standardmäßig nicht. Sie müssen die Überwachungsprotokollierung aktivieren, um dies zu erhalten. Ich zeige viele der Methoden in diesem A: unix.stackexchange.com/questions/75051/… . Hier finden Sie einen guten Überblick über auditd: security.blogoverflow.com/2013/01/… . Suche nach anderen, es gibt viele.
slm
@slm Ich habe deine Links gelesen. Vielen Dank. Dies wird ein Webserver sein. Ich muss die Identität jeder Person verfolgen, die in irgendeiner Weise einen Datensatz in einer Datenbank oder eine Datei in bestimmten Teilen des Dateisystems berührt. Ich muss diese Protokolldaten auch verwenden, um Warnungen einzurichten, die jedes Mal ausgelöst werden, wenn ein nicht autorisierter Benutzer auf Daten zugreift. Ich weiß, wie die Protokollierung auf Anwendungs- und Datenbankebene durchgeführt wird. Ich möchte die Protokollierung so einrichten, dass CentOS-Protokolle mit den Webcontainerprotokollen, App-Protokollen und Datenbankprotokollen verknüpft werden können, möglicherweise über IP. Wie soll ich Fragen zum CentOS-Level dieser Anforderung formulieren?
CodeMed
@CodeMed - Ich würde sagen, dass es CentOS 7 ist, genau wie Sie. Ich denke, Sie können mit auditd tun, was Sie wollen, die Manipulation des Dateisystems vornehmen und welche Befehle / Prozesse von Benutzern im lokalen Dateisystem aufgerufen werden. Dies zeigt nichts anderes als Benutzer Nginx, Apache usw. X allerdings von der Anwendungsebene aus ausführen. Möglicherweise müssen Sie die 2 zusammen mischen. Ich würde es auch als systemd Q einrahmen, wobei CentOS 7 die spezifische Instanz ist.
slm

Antworten:

10

Das (Befehlszeilen-) Dienstprogramm, das Sie verwenden sollten, ist journalctl. ZB um die dmesg Ausgabe zu betrachten:

journalctl --dmesg

oder analysierbare Einträge in Bezug auf die Firewall:

journalctl --output=json-pretty UNIT=firewalld.service

Verwenden Sie für eine Liste der auswählbaren EINHEITEN die üblichen Werkzeuge:

journalctl --output=json-pretty | grep -F UNIT | sort -u

man journalctlWeitere Optionen zum Einschränken und Festlegen der Ausgabe finden Sie auf Ihrem System.

Anthon
quelle
Vielen Dank. Dies ist ein Anfang. Aber meine Frage ist globaler. Wie erhalte ich eine Liste aller verfügbaren Protokolle? Und wie bekomme ich die Ausgabe in ein Format, das ich verwenden kann? Zum Beispiel eine Ressource, die in ein Java-Programm importiert werden kann, das einem Benutzer oder einer IP-Adresse zugeordnet ist. journalcdt --dmesgscheint niemanden spezifischer zu identifizieren als localhost.localdomanund journalctl --firewalldproduziert unrecognized option. Ihr Vorschlag beantwortet meine Frage also noch nicht wirklich.
CodeMed
Sie sollten sich wirklich die Manpage ansehen. Es ist ziemlich infromativ. journalctl --output=json-pretty UNIT=firewalld.servicegibt Ihnen json Ausgabe.
Anthon
Danke für das Update. Ich habe das Handbuch gelesen, aber Ihre Antwort kann die Anwendung erleichtern. Im Moment journalctl --output=json-pretty | grep -f UNIT | sort -ugibtgrep: UNIT: No such file or directory
CodeMed
Funktioniert auch journalctl --output=json-pretty UNIT=firewalld.servicenur, wenn ich als root angemeldet bin, aber nicht, wenn ich versuche, das Terminal als normalen Benutzer zu verwenden. Daher kann ich diesen Code noch nicht programmgesteuert verwenden. Wenn ich irgendwie automatisch einen neuen Satz von Protokolldateien für jede auswählbare Einheit generieren könnte, ohne mein Root-Passwort in einer hackbaren Datei belassen zu müssen, wäre diese Frage beantwortet.
CodeMed
@CodeMed Die grepArgumente enthielten einen Tippfehler (ich habe die -FOption nicht ausgeschnitten und eingefügt und in Kleinbuchstaben geschrieben ).
Anthon