Ernesto Hernandez-Novich on Fri, 02 Nov 2001 07:50:27 -0600


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Indice por Fecha] [Indice por Hilo]

[LARGO] Usando wheel para proteger su (Era Re: Usuarios en Linux)


On Wed, 24 Oct 2001, Luis Mendieta wrote:
> la otra vez estaba leyendo un libro de Linux y en la
> parte de creacion de usuarios decia, si se crea un
> usuario que pertenezca al grupo de usuario wheel, éste
> podrá usar el comando "su", lo quise probar, es decir
> cree uno que no pertenezca a este grupo pero si puedo
> hacer "su", alguien sabe algo de esto?
> es verdad sobre lo que lei del grupo wheel?

El uso del grupo wheel para usuarios "poderosos" es una tradición en
los Unix estilo BSD, y que ha sido adoptada en otros sistemas operativos
Unix-like. No es una obligación hacerlo, pero es una de las tantas
formas en las cuales puede mejorarse la seguridad de un sistema Linux.

El programa su permite cambiar la identidad de un usuario a otro;
generalmente se asocia con "convertirse en root", pero puede ser
empleado para convertirse en cualquier otro usuario. Esto es obviamente
peligroso, de modo que es conveniente regular el acceso de los usuarios
comunes a un programa como éste.

Entran en juego los permisos de Unix. El programa /bin/su generalmente
tiene permisos de acceso como (esto es tomado de Debian Woody)

$ ls -l /bin/su
-rwsr-xr-x    1 root     root        23260 Aug 22 12:33 /bin/su

que quiere decir que su dueño puede leerlo, escribirlo y ejecutarlo,
los miembros del grupo root pueden leerlo y ejecutarlo, mientras que
el resto de los usuarios pueden leerlo y ejecutarlo. Más aún, la 's'
indica que sea quien sea que ejecute el comando, lo hace con privilegios
del dueño (o sea root), cosa que es necesaria para poder cambiarse de
usuario. Lo primero que queremos es que "el pueblo" (o populacho según
su precaria educación y actitudes revoltosas :-) no pueda ejecutar
el comando, lo cual logramos con un simple

# chmod 4750 /bin/su
# ls -l /bin/su
-rwsr-x---    1 root     root        23260 Aug 22 12:33 /bin/su

Ahora, solamente el dueño (root) y los miembros del grupo root son
capaces de acceder al ejecutable. Pero el grupo root usualmente se
asocia exclusivamente con el usuario root, por lo tanto "inventamos"
un nuevo grupo y lo llamamos wheel. Luego, hacemos que /bin/su le
pertenezca al grupo wheel con un simple

# chgrp wheel /bin/su
# ls -l /bin/su
-rwsr-x---    1 root     wheel       23260 Aug 22 12:33 /bin/su

Y ahora, debe resultar obvio que solamente root y los miembros del
grupo wheel tendrán la posibilidad de ejecutar /bin/su. El principio
puede extenderse a otros comandos "poderosos".

Esta es la forma básica de hacerlo y que, de paso, funciona en cualquier
Unix. Pero en Linux tenemos alternativas adicionales, en particular el
empleo de PAM (que es mucho más limpio y elegante); si uno examina
/etc/pam.d/su (si alguno tiene una distribución que _no_ tenga éste archivo,
por favor comentarlo para agregarla a mi lista de "distribuciones
indeseables" :-) encuentra las condiciones de autenticación para emplear
el comando 'su'. En mi máquina personal tengo

# Uncomment this to force users to be a member of group root
# before than can use `su'. You can also add "group=foo" to
# to the end of this line if you want to use a group other
# than the default "root".
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth       required   pam_wheel.so    (A)

# Uncomment this if you want wheel members to be able to
# su without a password.
# auth       sufficient pam_wheel.so trust (B)

# Uncomment this if you want members of a specific group to not
# be allowed to use su at all.
# auth       required   pam_wheel.so deny group=nosu (C)

...y algunas cosas más que no vienen al caso. El primer comentario es
suficientemente claro: basta con quitar el comentario de la línea (A)
para que solamente los miembros del grupo 'root' puedan usar su, y
(siguiendo el mismo comentario) si se agrega 'group=wheel' a la misma
línea...

La línea (B) es una "comodidad": que cualquier usuario del grupo
'wheel' pueda hacer su sin que le pidan password. Sobre mi cadáver.

La línea (C) es una bendición: poder impedir que miembros de determinado
grupo puedan usar su. Para el paranoico es excelente poner a todos los
usuarios en el grupo 'lusers' y luego colocar 'group=lusers'.

Basta modificar (A), (B) y/o (C) a gusto y no hace falta cambiar los
permisos de /bin/su.

Por último y a título informativo solamente, antes de que existiera PAM,
se podía instrumentar el programa su para "cablearle" el nombre del grupo
privilegiado y se modificaba /etc/default/login.defs para definir
dicho grupo.

man chgrp
man chmod
man pam
-- 
Ernesto Hernández-Novich - Running Linux 2.4.13 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*+++++$ P++++$ L+++$ E--- W+ N++ o K+++ w--
O- M- V- PS+ PE Y+ PGP>++ t+ 5- X+ R* tv+ b++ DI+++$ D++ G++ e++>+++ h r% y+
-----END GEEK CODE BLOCK-----

----------------------------------------------------------------------------
Enviar e-mail a <majordomo@linux.org.ve> colocando en el cuerpo:
"unsubscribe l-linux"    (Para retirarse)
"info l-linux"           (Para recibir las normas vigentes - Netiquette)
Visite el canal IRC #velug en undernet.org para consultas interactivas.
----------------------------------------------------------------------------