[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] setguid



El mié, 06-03-2002 a las 18:24, Jesús Cabrera escribió:
> Hola, estuve checando la página de  UNAM CERT  http://www.unam-cert.unam.mx
> en el apartado de detección de intrusos y sugieren dar el siguiente comando:
> 
> find / -user root -perm -4000 -print
> 
> Para buscar archivos setuid (especialmente archivos setuid root) en todo el
> sistema ya que los intrusos frecuentemente dejan copias setuid de /bin/sh o
> /bin/time para así autorizarles el acceso como root a una ocasión posterior.
> Mi duda es que encontré los siguientes archivos con setuid y root, ¿a cuales
> me recomiendan cambiarles los privilegios?:

 De los que enumeras, a ninguno. La propiedad `setuid' no solamente se
emplea por codigo malicioso; tambien se utiliza para que ciertos
programas ejecutados por usuarios puedan accesar en algun momento de su
ejecucion partes del sistema que solamente el superusuario tiene acceso.
Vamos uno por uno.

> /usr/bin/at

 Permite especificar actividades periodicas por usuario. Requiere
`setuid' para que los usuarios puedan colocar sus tareas en el
directorio de la cola, que tiene permisos restringidos. El directorio es
/var/spool/at/. No es una buena opcion cambiar los permisos de la cola,
porque entonces cualquier usuario podria alterar los trabajos de los
demas.

> /usr/bin/suidperl
> /usr/bin/sperl5.6.0

 Si observas con cuidado estos programas, son exactamente el mismo
binario. `suidperl' es un vinculo duro hacia sperl5.6.0. Aunque si
compilan perl a partir del codigo fuente original, suidperl es opcional,
en muchas distribuciones viene por su utilidad para crear guiones con no
tantos problemas de seguridad como hacer un guion de shell setuid,
gracias a las opciones perl -w y/o perl -T

> /usr/bin/rcp
> /usr/bin/rlogin
> /usr/bin/rsh

 Los tres programas estan relacionados con rsh, que permite la ejecucion
(rsh), copia (rcp) y entrada (rlogin) desde/hacia servidores remotos. En
este caso, lo sano no es quitar el bit `setuid' a estos programas; lo
mejor es erradicar el paquete que los contiene (rsh, rsh-server en
RedHat y derivados) y utilizar ssh, que es un reemplazo completo y
seguro de estos programas.

> /usr/bin/chage
> /usr/bin/gpasswd
> /usr/bin/passwd
> /usr/bin/chfn
> /usr/bin/chsh
> /usr/bin/newgrp

 Todos estos programas se relacionan con los archivos /etc/passwd,
/etc/shadow, /etc/group y /etc/gshadow. Consecuencias de quitar el bit
setuid a estos programas:

 /usr/bin/chage: el usuario no podra revisar su informacion de
expiracion de la contrase~a, porque reside en el archivo /etc/shadow
que, por omision, tiene seguridad bastante draconiana.

 /usr/bin/gpasswd: el usuario no podra modificar la contrase~a asignada
a su grupo, porque esta reside en el archivo protegido /etc/gshadow

 /usr/bin/passwd: el usuario no podra cambiar su propia contrase~a,
porque reside en /etc/shadow

 /usr/bin/chfn: el usuario no podra cambiar su informacion personal
(nombre, telefono, oficina, extension), porque esta informacion reside
en /etc/passwd

 /usr/bin/chsh: el usuario no podra cambiar su shell, porque esta
informacion reside en /etc/chsh

 /usr/bin/newgrp: el usuario no podra cambiar de grupo activo, sin tener
que salir de su sesion.

> /usr/bin/ssh

 Este es el reemplazo seguro de rsh/rcp/rlogin. Necesita ser `setuid'
para asignar los privilegios por cada usuario del sistema despues de
validar su entrada. Aqui, al contrario de otros programas, no necesita
setuid para adquirir mas privilegios, sino para decrementarlos a partir
de root.

> /usr/bin/crontab

 Misma razon que at para setuid, excepto que el directorio de la cola
que protege es /var/spool/cron

> /usr/bin/sudo

 En lugar de dar a todo mundo la contrase~a del superusuario, asignas
privilegios a cada usuario con sudo a maquinas, programas y usuarios
especificos, y sudo permite esta ejecucion. Necesita setuid para
ejecutar los programas con los privilegios del usuario requerido

> /usr/sbin/traceroute

 `traceroute' requiere setuid porque necesita crear paquetes IP 'raw'
para construir los paquetes ICMP, y este privilegio solamente lo tiene
el superusuario. Es muy util no tener que ser el superusuario cada vez
que se quiere hacer un diagnostico de la red, y es un buen antidoto
contra la `rootitis': abrir sesiones X y ejecutar todo como root, con el
pretexto de que `asi todo funciona bien'.

> /usr/sbin/sendmail

 Si usas `sendmail', necesita ser setuid para guardar el correo
electronico para cada usuario en /var/spool/mail. Si utilizas otro MTA
(como qmail, postfix, exim) /usr/sbin/sendmail no requiere ser setuid,
porque controla de otra forma los privilegios de entrega del correo
electronico. 

> /usr/sbin/usernetctl

 Este lo utiliza RedHat para que los usuarios que no sean root puedan
controlar sus conexiones de red, en particular las conexiones SLIP y
PPP.

> /usr/sbin/userhelper

 RedHat utiliza este programa para ejecutar programas (en particular los
que cuentan con interfaz grafica) que requieren ciertos privilegios del
superusuario, como la configuracion de la impresion o de la red.
userhelper es el culpable de la ventana que pregunta por la contrase~a
de root antes de ejecutar estos programas.

> /usr/X11R6/bin/Xwrapper

 El servidor X requiere acceso directo al hardware, y estas llamadas al
sistema (ioctls()) estan restringidas a root. En lugar de que todos los
servidores X sean setuid (mala idea), solamente hay un binario setuid
(un solo punto de falla, buena idea), que se encarga de ejecutar con los
privilegios necesarios a los servidores X correspondientes.
 
> /bin/ping

 Misma razon que traceroute.

> /bin/mount
> /bin/umount

 Montar y desmontar dispositivos requiere de acceso directo a los
dispositivos, y todo acceso a hardware es privilegio del superusuario.
Se necesita que mount/umount sean setuid para que los usuarios puedan
montar sus propios dispositivos (piensen en CDROMS y/o floppys y/o
unidades Zip y/o dispositivos portatiles como un Memory Stick).

> /bin/su

 Misma razon de `sudo' para tener setuid, pero sin un control tan
granular.

> /sbin/pwdb_chkpwd
> /sbin/unix_chkpwd

 Estos programas son parte de PAM, el subsistema de autenticacion que
utiliza Linux (y Sun si mal no recuerdo). Son programas sencillos que
verifican la validez de una contrase~a que no es legible directamente
(contenida en /etc/shadow y/o en la base de datos correspondiente). Con
estos programas, evitas que todos los programas que verifican la validez
de un usuario (como xlock, segun el ejemplo de la documentacion de PAM)
tengan que ser setuid.

 Moraleja: Si, es buen consejo buscar programas setuid, para mejorar la
seguridad del sistema. No, no hagan cambios masivos, es PESIMA idea
cambiar/eliminar la caracteristica `setuid' sin haber REVISADO LA
DOCUMENTACION, ya que pueden reducir la funcionalidad del sistema o de
plano estropearlo.

					Saludos
-- 
 (o- Cristian Othon Martinez Vera <cfuga en itam mx>  Pulchrum est paucorum
//\     http://eniac.rhon.itam.mx/~cfuga/          hominum.
v_/_
_______________________________________________
Ayuda mailing list
Ayuda en linux org mx



[Hilos de Discusión] [Fecha] [Tema] [Autor]