fichiers journaux dans CentOS 7 [fermé]

8

Dans CentOS 7, comment puis-je localiser et afficher tous les journaux système qui me disent qui a essayé d'entrer dans le système, qui est entré, quels processus ils ont contactés, ce qu'ils ont accompli, etc. Je veux pouvoir lier chaque activité à l'une ou l'autre un ID utilisateur ou une adresse IP distante.

Mon var/log/répertoire contient de nombreuses ressources, y compris /var/log/messageset /var/log/secure, mais la plupart des fichiers sont de type Binary (application/octet-stream)et le système d'exploitation ne sait pas comment les ouvrir, sauf si je leur associe un programme de visualisation inconnu. En outre, var/log/firewalldne semble pas contenir d'informations utiles.

Je peux trouver tous les journaux produits par mon application, ma base de données et NginX / Apache.

CodeMed
la source
Ok, vous avez trouvé /var/loget tous sont des binaires? vous êtes sûr? Comment vérifiez-vous?
Braiam
@Braiam Je n'ai pas dit qu'ils étaient tous des binaires. J'ai dit que la plupart d'entre eux sont des binaires. Par exemple, /var/log/firewalldest un fichier texte qui semble contenir des informations inutiles. Je vérifie en cliquant sur les fichiers dans l'interface graphique. Cliquez d'abord avec le bouton gauche pour essayer d'ouvrir, puis cliquez avec le bouton droit pour afficher les propriétés et vérifier le type de fichier.
CodeMed
Le système ne fait pas cela par défaut. Vous devez activer la journalisation d'audit pour l'obtenir. Je montre de nombreuses méthodes dans ce A: unix.stackexchange.com/questions/75051/… . Il y a un bon aperçu de auditd ici: security.blogoverflow.com/2013/01/… . Cherchez les autres, il y en a beaucoup.
slm
@slm J'ai lu vos liens. Je vous remercie. Ce sera un serveur Web. J'aurai besoin de suivre l'identité de chaque individu qui touche de quelque manière que ce soit à un enregistrement dans une base de données ou à un fichier dans des parties spécifiques du système de fichiers. Je devrai également utiliser ces données de journalisation pour configurer des alertes qui se déclenchent chaque fois qu'un utilisateur non autorisé accède à des données. Je sais comment effectuer la journalisation au niveau de l'application et de la base de données. Je souhaite configurer la journalisation afin que les journaux CentOS puissent être liés aux journaux du conteneur Web, aux journaux d'application et aux journaux de base de données, peut-être par IP. Comment dois-je formuler des questions sur le niveau CentOS de cette exigence?
CodeMed
@CodeMed - Je dirais que c'est CentOS 7, comme vous l'avez fait. Je pense que vous pouvez faire ce que vous voulez en utilisant auditd, wrt la manipulation du système de fichiers et quelles commandes / processus sont invoqués par les utilisateurs sur le système de fichiers local. Cela ne montrera rien au-delà de l'utilisateur nginx, apache, etc. faire X si au niveau de l'application. Vous devrez peut-être mélanger les 2 ensemble. Je le définirais également comme un systemd Q, avec CentOS 7 comme instance spécifique.
slm

Réponses:

10

L'utilitaire (ligne de commande) que vous devez utiliser est journalctl. Par exemple, pour regarder la sortie du dmesg:

journalctl --dmesg

ou entrées analysables relatives au pare-feu:

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

Pour une liste d'unité sélectionnable, utilisez les outils habituels:

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

Voir man journalctlsur votre système pour plus d'options pour restreindre et spécifier la sortie.

Anthon
la source
Je vous remercie. C'est un début. Mais ma question est plus globale. Comment obtenir une liste de tous les journaux disponibles? Et comment obtenir la sortie dans un format que je peux utiliser? Par exemple, une ressource qui peut être importée dans un programme java qui est suivie vers un utilisateur ou une ip. journalcdt --dmesgne semble pas identifier quelqu'un de plus spécifique que localhost.localdoman, et journalctl --firewalldproduit unrecognized option. Votre suggestion ne répond donc pas encore vraiment à ma question.
CodeMed
Vous devriez vraiment regarder la page de manuel. C'est assez infromatif. journalctl --output=json-pretty UNIT=firewalld.servicevous donne une sortie json.
Anthon
Merci pour la mise à jour. J'ai lu le manuel, mais votre réponse peut faciliter l'application. En ce moment, journalctl --output=json-pretty | grep -f UNIT | sort -udonnegrep: UNIT: No such file or directory
CodeMed
De plus, cela journalctl --output=json-pretty UNIT=firewalld.servicene fonctionne que lorsque je suis connecté en tant que root, mais pas lorsque j'essaie d'utiliser le terminal en tant qu'utilisateur normal. Je ne peux donc pas encore utiliser ce code par programme. Si je pouvais en quelque sorte générer automatiquement un nouvel ensemble de fichiers journaux pour chaque unité sélectionnable sans avoir à laisser mon mot de passe root dans un fichier piratable, alors cette question aurait une réponse.
CodeMed
@CodeMed Il y avait une faute de frappe dans les greparguments (je n'ai pas coupé-collé et mis en minuscule l' -Foption).
Anthon