[Linux] su, paramètres sudo

Interdire aux utilisateurs de base de devenir root Et Je veux laisser une trace lors de l'utilisation de la commande sudo Le cadre à ce moment-là.

J'écrirai séparément pour CentOS 7 et Ubuntu 16.04.

1.1 Paramètre d'interdiction su (CentOS)

Modifiez le fichier /etc/pam.d/su </ font>. Décommentez ʻauth required pam_wheel.so use_uid`.

/etc/pam.d/su


# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid

Avec cela, seuls les utilisateurs appartenant au groupe de roues peuvent su, et les autres sont interdits.

1.2 Paramètre d'interdiction su (Ubuntu)

Le fichier est le même que CentOS, mais la description de l'élément est modifiée. Ajoutez group = adm.

/etc/pam.d/su


auth required pam_wheel.so group=adm

ubuntu n'a pas de groupe de roues, alors laissez-le comme adm. → Seuls les utilisateurs appartenant au groupe adm peuvent C'est un décor.

2. paramètre sudo (commun)

visudo

Modifiez le fichier / etc / sudoers </ font> avec la commande.

Comment écrire

visudo


[Nom d'utilisateur] TOUS= (ALL:ALL) ALL

Spécifiez l'utilisateur à autoriser avec [Nom d'utilisateur]. Vous pouvez spécifier par groupe en ajoutant% au début.

Le premier ALL est la permission de l'hôte, donc ALL est généralement bien.

Le deuxième ALL est "Quel utilisateur serez-vous?"

Le troisième ALL est la version de groupe ci-dessus Il peut être spécifié en ajoutant un signe deux-points (:). OK sans

Le quatrième ALL est "Quelle commande peut être exécutée?" Écrivez le chemin de la commande comme délimiteur.

De plus, l'ajout d'un! Au début de la commande signifie qu'elle ne sera pas exécutée.

visudo(Exemple)


%group01 ALL=(ALL:ALL) ALL,!/bin/su,!/usr/sbin/visudo,!/usr/bin/bash,!/usr/bin/sh,!/usr/bin/vi /etc/sudoers

→ group01 Les utilisateurs appartenant au groupe peuvent exécuter toutes les commandes avec sudo comme tous les utilisateurs. Cependant, vous ne pouvez pas modifier les fichiers su et sudoers.

Au fait, Vous pouvez également combiner les commandes que vous souhaitez interdire en une seule.

visudo(Résumer les commandes interdites)


##kinshi
Cmnd_Alias KINSHI = /bin/su,/usr/sbin/visudo
dangogrp ALL=(ALL) ALL, !KINSHI 

Comme ça. Interdisez la commande su et la modification des sudoers avec sudo pour éviter que le paramètre lui-même ne soit modifié.

※ Les méthodes ci-dessus ne peuvent pas être complètement interdites et il existe des failles. Par exemple, copiez une commande shell dans un autre répertoire, donnez-lui un alias, lancez une commande externe, utilisez une commande shell autre que celles interdites ci-dessus. En guise de contre-mesure, il existe un moyen d'autoriser les commandes dans un format de liste blanche, mais j'ai l'impression que l'opération est difficile ...

3 Laissez une trace de sudo (seul le fichier de configuration syslog diffère selon le système d'exploitation)

Le résultat de l'exécution lui-même est craché dans le journal d'audit, CentOS:/var/log/secure Ubuntu:/var/log/auth.log

Puisque ces fichiers seront enterrés dans le résultat de l'exécution, modifions la destination de sortie. Créez un fichier pour sortir le journal et changer le propriétaire et le groupe. (Le propriétaire du fichier journal CentOS est root, donc aucun changement n'est OK)

touch /var/log/sudo.log
chown syslog /var/log/sudo.log
chgrp adm /var/log/sudo.log

Paramètres dans / etc / sudoers

visudo

Défini pour transférer vers syslog avec. Ajouté sous l'endroit où les valeurs par défaut sont alignées

visudo(/etc/sudoers)


# sudo log
Defaults syslog=local3

La partie local3 peut être de 0 à 7. Avec un vide.

paramètres syslog

・ Pour Centos

vi /etc/rsyslog.conf 

・ Pour ubuntu

vi /etc/rsyslog.d/50-default.conf

Ajoutez ce qui suit. Associez-le au numéro local.

#sudo log
local3.*    -/var/log/sudo.log

Redémarrez le service syslog

systemctl restart rsyslog

Cela laissera une trace de la commande sudo dans /var/log/sudo.log. Si vous essayez d'exécuter la commande ls -l avec les privilèges root,
sudo ls -l /

Il reste dans le journal comme ceci.

/var/log/sudo.log


May 28 14:16:10 host01 sudo: user01 : TTY=pts/0 ; PWD=/home/user01 ; USER=root ; COMMAND=/bin/ls -l

Avec cela, même si l'utilisateur tape une mauvaise commande avec les privilèges root, il peut identifier et prêcher.

C'est tout