J'utilise Zabbix pour surveiller mon environnement et zabbix_agentd
exécute en tant qu'utilisateur zabbix
un script personnalisé toutes les 60 secondes; il utilise sudo
pour exécuter ce script en tant que root
.
Dans /var/log/auth.log
je vois toutes les 60 secondes:
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 11 17:40:32 my-server sudo: pam_unix(sudo:session): session closed for user root
Je veux empêcher ce message d'inonder mon journal. J'ai ajouté la ligne suivante au /etc/pam.d/sudo
fichier, immédiatement avant session required pam_unix.so
:
session [success=1 default=ignore] pam_succeed_if.so service in sudo quiet uid = 0
et le message a disparu.
Mais le problème est que de cette façon, j'ai supprimé tous les messages PAM lorsque quelqu'un exécute un script avec sudo
as root
.
Je souhaite arrêter le message uniquement pour l'utilisateur zabbix
(pas tous les autres utilisateurs). sudo
sait que l' zabbix
utilisateur veut exécuter le script avec des root
privilèges et est-il possible de le dire à PAM? Comment puis-je dire à PAM de ne pas se connecter pour un utilisateur spécifique lors de l'utilisation sudo
?
Remarque : j'ai essayé de filtrer les messages dans syslog; bien que cela fonctionne, il a le même problème que ci-dessus, à savoir qu'il est trop aveugle, car le message de journal n'indique pas quel utilisateur devient root.
la source
session closed for user root
et si je le filtre en fait, je filtre tous les messages. Je veux un utilisateur spécifique qui n'est pas mentionné dans le message et je ne peux pas filtrer par son nom ...Réponses:
Vous semblez assez proche de votre ligne de conf PAM:
En regardant la page de manuel pour
pam_succeed_if
, je pense que vous voulez tester que l'utilisateur demandeur (ruser
) estzabbix
.Je suggère donc:
Cela supprimera le prochain test lorsque l'utilisateur
zabbix
deviendraroot
(mais pas d'autres transitions). J'ai testé cela avec une paire de mes propres utilisateurs.Supprimez le
uid = 0
test ci-dessus si vous voulez garder le silence sur le fait dezabbix
devenir un utilisateur, plutôt que simplement root.J'ai supprimé le
service in sudo
test: c'est redondant étant donné que cette ligne est dedans/etc/pam.d/sudo
.la source
service in sudo
.[user] : TTY=unknown ; PWD=... ; USER=root ; COMMAND=...
ligne du journal, vous pouvez l'ajouter à un fichier sudoers.d /:Defaults:[user] !logfile, !syslog
(remplacez le[user]
cas échéant)/etc/sudoers.d/
- Je préfère utiliser le nom de l'utilisateur, du groupe ou de l'application auquel cela s'applique. Voir sudo.ws/man/1.8.15/sudoers.man.html:
en ait. Et sontlogfiles
explicites ou quelque chose qui devrait être remplacé?Sur la base de la réponse de Toby, j'ai trouvé un moyen de configurer cela d'une manière légèrement différente sur Debian / Ubuntu. Pour le contexte, voir:
Debian / Ubuntu ont donc cette
pam-auth-update
commande et quand vous la regardez,/etc/pam.d/sudo
elle ressemble à ceci:et
/etc/pam.d/common-session-noninteractive
ressemble à ceci:Donc, bien sûr, je pourrais modifier l'un des fichiers ci-dessus, mais il y a clairement une "puissance plus élevée" à l'œuvre ici. Comment faire en sorte que mes modifications fonctionnent correctement avec d'autres packages qui pourraient vouloir ajouter des règles de pam? Pour couronner le tout, il semblait que je ne pouvais pas simplement ajouter une ligne
/etc/pam.d/sudo
entre les deux@include
comme ceci ..Après avoir lu les liens ci-dessus ainsi que d'autres exemples (voir
/usr/share/pam-configs/unix
), j'ai trouvé ceci, dans/usr/share/pam-configs/myapp
:Session
etSession-Type
contrôler quels fichiers sont modifiés etPriority
définit dans quel ordre ils vont. Après avoir ajouté ce fichier et exécutépam-auth-update
,/etc/pam.d/common-session-noninteractive
ressemble à ceci (en bas :)... c'est ce que nous voulons parce que notre
pam_succeed_if
gamme doit venir avantsession required pam_unix.so
. (Cette ligne vient de/use/share/pam-configs/unix
et aPriority: 256
donc elle finit deuxième.) Notez également que j'ai laissé leservice = sudo
prédicat carcommon-session-noninteractive
pourrait également être inclus dans d'autres configurationssudo
.Dans mon cas, je l' avais déjà emballé mon code comme installateur .deb donc j'ajouté le
/usr/share/pam-configs/myapp
fichier, et ajoutépam-auth-update --package
à mespostinst
etprerm
scripts et je suis bon pour aller!Caveat...
Si vous lisez l' article PAMConfigFrameworkSpec que j'ai lié ci - dessus , il définit une
Session-Interactive-Only
option, mais n'a aucun moyen de spécifier uniquement des règles non interactives . Ainsi/etc/pam.d/common-session
a également été mis à jour . Je ne pense pas qu'il y ait un moyen de contourner cela. Si vous êtes d'accord avec les sessions interactives qui ne sont pas enregistrées pour cet utilisateur (c'est un compte de service, non?), Alors vous devriez être prêt!Bonus: comment supprimer également la sortie du journal sudo
Outre les
session openened|closed
lignes émises par PAM,sudo
enregistre des informations supplémentaires sur la commande exécutée. Cela ressemble à ceci:Si vous souhaitez également supprimer cela, ouvrez ce lien puis continuez ci-dessous ...
Donc ... vous êtes probablement familier avec une
/etc/sudoers.d/___
configuration typique qui pourrait faire quelque chose comme ça pour un compte de service qui a besoin de privilèges de superutilisateur pour certaines actions:qui pourrait entrer
/etc/sudoers.d/10_myuser
. Eh bien, entre autres choses, vous pouvez également spécifierDefaults
. Notez spécifiquement cette syntaxe'Defaults' ':' User_List
Maintenant, regardez la section OPTIONS SUDOERS . Les bits intéressants incluent
log_input
,log_output
mais (probablement) plus important encore,syslog
etlogfile
. Il me semble que dans les versions récentes de Debian, rsyslog ousudo
log tostdout
oustderr
par défaut. Donc, pour moi, cela apparaissait dans le journal journal de mon service, et non par exemple/var/log/auth.log
où il ne serait pas mélangé dans mes journaux d'application. Pour supprimer la journalisation sudo, j'ai ajouté ce qui suit pour/etc/sudoers.d/10_myuser
qu'il ressemble à ceci:YMMV, si vous pensez que la désactivation de la journalisation crée des problèmes avec les audits de sécurité, vous pouvez également essayer de résoudre ce problème via les filtres rsyslog.
la source
success=1
, (qui ignore la clause suivante), et (2) Parce que la façon dont vous avez spécifiéservice = sudo
, tout travail CRON en cours d'exécution, entraînerequirement "service = sudo" not met by user "root"
. (Et peut-être d'autres effets secondaires.) Cependant, vos bonus ont très bien fonctionné! Je vous remercie.postinst
etprerm
?success=1
- Je préfère ne pas sauterpam_unix
complètement. Je veux seulement arrêter d'enregistrer la sortie, ce qui[default=ignore]
semble fonctionner très bien sans ignorer pam_unix.cron
jobs etservice = sudo
: Est-il possible que vos jobs cron s'exécutent en tant qu'utilisateur privé, mais vous n'appelez passudo
dans le cadre des jobs cron?Après pas mal de tests et de recherches effrayants, j'ai trouvé une solution de travail pour Debian Stretch (sur Raspberry). Il y a sûrement plus d'une façon d'accomplir ce que demande OP. Mais la documentation PAM est écrasante, donc la plupart des choses sont vraiment TL; DR.
/etc/rsyslog.d/anyname.conf
en utilisant::msg, contains, "session opened for user root by pi" stop
/etc/pam.d/sudo
/usr/share/pam-configs/
/etc/sudoers.d/020_pi
Je vais vous montrer comment faire (2) et (4).
Pour se débarrasser de «ouverture / fermeture de session»:
Nous voulons nous débarrasser du
/var/log/auth.log
spam suivant :Faites ceci:
Ce qui est d'une importance cruciale ici, c'est que
success=1
, signifie ignorer la clause 1 suivante (ou dans le jargon PAM "sauter par-dessus le module suivant dans la pile"), en cas de succès.De
man pam.conf
:Ensuite, redémarrez et laissez-le fonctionner quelques heures (pour vérifier les tâches cron par exemple) pour tester que cela fonctionne. Assurez-vous ensuite de rétablir les autorisations de fichier, sinon vous aurez un trou de sécurité béant dans votre système. (
sudo chmod 644 /etc/pam.d/sudo
)Pour se débarrasser des messages «TTY PWD COMMAND» répétés:
Nous voulons également nous débarrasser des messages comme celui-ci:
Dans mon cas, cela a été généré par un script IDS qui exécutait arp-scan toutes les quelques minutes. Pour le supprimer de l'affichage dans les journaux, créez le fichier suivant:
(Voici
xxx
le nom de votre machine etpi
le nom d'utilisateur.)la source
sudo su -
Ensuite, vous n'avez pas à définir d'autorisations dangereuses et risquez d'oublier de changer retour.Tu auras:
avec votre réponse.
fonctionne mais vous obtiendrez toujours un:
dans vos journaux.
la source