|
1.
Lectura para todos
Los usuarios normales no deberían tener acceso a los archivos de
configuración o contraseñas. Un atacante puede robar contraseñas de
bases de datos o sitios web y usarlos para alterar --o incluso peor,
borrar-- datos. Por esto es importante que los permisos de ficheros
sean correctos. Si usted está seguro que un archivo sólo es usado por
root, asígnele los permisos 0600 y asigne el usuario correcto
al fichero con chown.
1.
Escritura para todos/grupos
Listado de Código 1.1: Buscando ficheros y directorios con escritura para todos |
# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; 2>/dev/null >writable.txt
# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; 2>/dev/null >>writable.txt
|
Esto creará un fichero enorme con los permisos de todos los archivos
que tienen tanto permiso de escritura para el grupo a para
todos. Verifique los permisos y elimine los permisos de escritura para
todos ejecutando /bin/chmod o-w en cada fichero.
1.
Ficheros SUID/SGID
Los ficheros con el bit SUID o SGID habilitado se ejecutan con los
privilegios del usuario o grupo propietario y no del usuario
que ejecuta el archivo. Normalmente esos bits se usan en archivos que
necesitan ejecutarse como root para hacer su labor. Esos archivos
pueden provocar un compromiso de root (si contienen agujeros de
seguridad). Los ficheros con el bit SUID o SGID activado resultan
peligrosos y deberían ser evitados a toda costa. Si usted no usa
estos ficheros utilice en ellos chmod 0 o desinstale (unmerge)
el paquete de donde provienen (verifique a qué paquete pertenecen
usando equery; si todavía no lo tiene instalado simplemente
escriba emerge gentoolkit). En cualquier caso, basta desactivar
el bit SUID con chmod -s.
Listado de Código 1.1: Buscando ficheros setuid |
# find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; 2>/dev/null >suidfiles.txt
|
Esto creará un archivo conteniendo la lista de los ficheros
SUID/SGID.
Listado de Código 1.1: Listado de los binarios setuid |
/bin/su
/bin/ping
/bin/mount
/bin/umount
/var/qmail/bin/qmail-queue
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/crontab
/usr/bin/chage
/usr/bin/expiry
/usr/bin/sperl5.6.1
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/suidperl
/usr/lib/misc/pt_chown
/usr/sbin/unix_chkpwd
/usr/sbin/traceroute
/usr/sbin/pwdb_chkpwd
|
Por defecto, Gentoo Linux no tiene muchos ficheros SUID (aunque
depende de lo que haya instalado), pero usted debería obtener una
lista similar a la anterior. Muchos de los comandos no deben ser
utilizados por los usuarios normales, sólo por root. Desactive el bit
SUID en ping, mount, umount, chfn,
chsh, newgrp, suidperl, pt_chown y
traceroute usando chmod -s en cada fichero. No desactive
el bit en su, qmail-queue o
unix_chkpwd. Desactivar setuid de estos ficheros le impedirá
hacer 'su' y recibir correo. Desactivando el bit (donde es seguro
hacerlo) usted elimina la posibilidad de que un usuario normal (o un
atacante) consiga acceso de root a través de estos archivos.
Los únicos ficheros SUID que tengo en mi sistema són su,
passwd, gpasswd, qmail-queue, unix_chkpwd
y pwdb_chkpwd. Pero si usted está ejecutando X, necesita tener
alguno más, puesto que X necesita el privilegiado acceso proporcionado
por SUID.
1.
Binarios SUID/SGID y enlaces rígidos
Sólo se considera borrado un fichero cuando no tiene más enlaces apuntándole.
Esto podría sonar un poco raro, pero tenga en cuenta que un nombre de fichero
como /usr/bin/perl es actualmente un enlace a el inodo donde los
datos están almacenados. Cualquier número de enlaces puede apuntar al fichero,
y sólo hasta el último de ellos no desaparezca, el fichero continua existiendo.
Si sus usuarios tienen acceso a una partición que no está montada con
nosuid o noexec (por ejemplo, si /tmp,
/home o /var/tmp no están en particiones separadas)
debe tener cuidado asegurándose que sus usuarios no creen enlaces rígidos
(hardlinks, en inglés) a binarios SUID o SGID, porque después que Portage los
haya actualizado, los usuarios continuarían teniendo acceso a las versiones
antiguas.
Aviso:
Si ha recibido una advertencia de Portage acerca de que quedan enlaces rígidos,
y sus usuarios pueden escribir en una partición que permita la ejecución de
ficheros SUID/SGID, deberá leer esta sección cuidadosamente. Uno de sus
usuarios podría intentar burlar una actualización manteniendo una versión
antigua de un programa. Si sus usuarios no crean sus propios ficheros SUID, o
sólo pueden ejecutar programas mediante el cargador dinámico (particiones
montadas como noexec), no tiene por qué preocuparse.
|
Nota:
Los usuarios no necesitan acceso de lectura a un fichero para enlazarlo, sólo
necesitan permiso de lectura al directorio que lo contiene.
|
Para comprobar cuantos enlaces a ficheros tiene, puede usar el comando
stat.
Listado de Código 1.1: Comando stat |
$ stat /bin/su
File: `/bin/su'
Size: 29350 Blocks: 64 IO Block: 131072 regular file
Device: 900h/2304d Inode: 2057419 Links: 1
Access: (4711/-rws--x--x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2005-02-07 01:59:35.000000000 +0000
Modify: 2004-11-04 01:46:17.000000000 +0000
Change: 2004-11-04 01:46:17.000000000 +0000
|
Para encontrar los ficheros SUID y SGID con múltiples enlaces, puede usar
find.
Listado de Código 1.1: Buscar binarios suid/sgid multi-enlazados |
$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
|
|