|
Introducción
Seguridad Física
Seguridad Local
Seguridad del Sistema de Archivos
Seguridad del Núcleo
Seguridad de Red
Seguridad del Root
Preparación para la
Seguridad
¿Qué hacer en caso de Ruptura?
Recursos
|
Normas prácticas para aumentar la seguridad
Aunque sea necesario tener claros los conceptos y dedicarle algo de tiempo a una
correcta planificación, tampoco los pelligros expuestos tienen por qué asustar a nadie.
Todas las distribuciones de Linux traen unos valores por defecto que son más que
razonables para cubrir unas necesidades normales.
- nosuid, nodev, noexec.
Salvo casos excepcionales, no debería haber
ninguna razón para que se permita la ejecución de programas SUID/SGID en los directorios
home de los usuarios. Esto lo podemos evitar usando la opción `nosuid'
en el fichero /etc/fstab para las particiones que tengan permiso de escritura por
alguien que no sea el root. También puede ser útil usar `nodev' y `noexec'
en las particiones de los directorios personales de los usuarios y en /var, lo
que prohíbe la creación dispositivos de bloque o carácter y la ejecución de programas.
- Sistemas de ficheros en red
Si exporta sistemas de archivos vía
NFS, esté seguro de configurar /etc/exports con los accesos lo más
restrictivos posibles. Esto significa no usar plantillas, no permitir acceso de escritura
a root y montar como sólo lectura siempre que sea posible.
- umask
Configure la máscara de creación de ficheros para que sea lo
más restrictiva posible. Son habituales 022, 033, y la más restictiva 077,
y añadirla a /etc/profile.
El comando umask se puede usar para determinar el modo de creación de
ficheros por defecto en su sistema. Es el complemento octal a los modos de fichero
deseado. Si los ficheros se crean sin ningún miramiento de estado de permisos, el
usuario, de forma inadvertida, podrá asignar permisos de lectura o escritura a alguien
que no debería tenerlos. De forma típica, el estado de umask incluye 022, 027
y 077, que es lo más restrictivo. Normalmente umask se pone en /etc/profile
y por tanto se aplica a todos los usuarios del sistema. Por ejemplo, puede tener una
línea parecida a la siguiente:
# Pone el valor por defecto de umask del usuario
umask 033
Esté seguro de que el valor umask de root es 077, lo cual
desactiva los permisos de lectura, escritura y ejecución para otros usuarios, salvo que
explícitamente use chmod(1).
Si está usando , y utiliza su
esquema de creación de idetificador de grupos y usuarios (User Private Groups),
sólo es necesario usar 002 para umask. Esto se debe a que al crear un
usuario se crea un grupo exclusivo para ese usuario.
- Limitar recursos
Ponga el límites al sistema de ficheros en lugar
de 'ilimitado' como está por defecto. Puede controlar el límite por usuario utilizando
el módulo PAM de límite de recursos y /etc/pam.d/limits.conf. Por
ejemplo, los límites para un grupo `users' podría parecer a esto:
@users hard core 0
@users hard nproc 50
@users hard rss 5000
Esto dice que se prohiba la creación de ficheros core, restringe el número
de procesos a 50, y restringe el uso de memoria por usuario a 5M.
- wtmp, utmp
Los ficheros /var/log/wtmp y /var/run/utmp
contienen los registros de conexión de todos los usuarios de su sistema. Se debe mantener
su integridad, ya que determinan cuándo y desde dónde entró en su sistema un usuario o
un potencial intruso. Los ficheros deberían tener los permisos 644, sin
afectar a la normal operación del sistema.
- Sticky bit
El sticky bit se puede usar para prevenir
borrados accidentales o proteger un fichero para sobreescritura. También previene que
alguien cree enlaces simbólicos a un fichero, que ha sido el origen de ataques basados en
el borrado de los ficheros /etc/passwd o /etc/shadow. Vea la
página del manual de chattr(1) para tener más información.
- SUID y SGID
Los ficheros SUID y SGID de su
sistema son potenciales riesgos de seguridad y deberían ser controlados. Como estos
programas garantizan privilegios especiales al usuario que los ejecuta, es necesario estar
seguro que no hay instalados programas inseguros. Un truco favorito de los crackers
es explotar programas con el bit SUID, y entonces dejar un programa SUID
como puerta trasera para entrar la próxima vez, incluso aunque el agujero original ya
esté tapado.
Encuentre todos los programas SUID/SGID de su sistema y mantener la pista
de lo que son, para que esté prevenido de cualquier cambio que podría indicar un
potencial intruso. Use el siguiente comando para localizar todos los progrmas SUID/SGID
en su sistema:
root# find / -type f \( -perm -04000 -o -perm -02000 \)
Incluso podría crear una base de datos de progrmas SUID con
root# find / -type f \( -perm -04000 -o -perm -02000 \)>/var/suid
y posteriormente verificar si ha aparecido alguno nuevo con el siguiente guión:
for fich in `find / -type f \( -perm -04000 -o -perm -02000 \)`
do
if ! grep $fich /var/suid
then
echo "$fich es un nuevo fichero con SUID"
fi
done
echo "Actualiza la base de datos si es necesario"
Puede eliminar los permisos SUID o SGIG de un programa con chmod(1),
y siempre puede devolverlo a su estado original si piensa que es absolutamente necesario.
- Permisos de escritura
Los ficheros con permiso de escritura global,
particularmente los del sistema, pueden ser un agujero de seguridad si un cracker obtiene
acceso a su sistema y los modifica. Además, los directorios con permiso de escritura
global son peligrosos, ya que permiten a un cracker añadir y borrar los ficheros que
quiera. Para localizar los ficheros con permiso de escritura global, use el siguiente
comando:
root# find / -perm -2 -print
y esté seguro de saber por qué tienen esos permisos de escritura. En el curso normal
de una operación los ficheros tendrán permisos de escritura, incluidos algunos de /dev
y enlaces simbólicos.
- Ficheros extraños
Los ficheros sin propietario también pueden ser
un indicio de que un intruso ha accedido a su sistema. Puede localizar los ficheros de su
sistema que no tienen propietario o que no pertenecen a un grupo con el comando:
root# find / -nouser -o -nogroup -print
- Ficheros peligrosos
La localización de ficheros .rhosts
debería ser uno de los deberes regulares de la administración de su sistema, ya que
estos ficheros no se deberían permitir en sus sistema. Recuerde que un cracker sólo
necesita una cuenta insegura para potencialmente obtener acceso a toda su red. Puede
localizar todos los ficheros .rhosts de su sistema con el siguiente comando:
root# find /home -name .rhosts -print
- Permisos
Finalmente, antes de cambiar permisos en cualquier sistema
de ficheros, esté seguro de que entiende lo que hace. Nunca cambie permisos de un fichero
simplemente porque parezca la forma fácil de hacer que algo funcione. Siempre debe
determinar porqué el fichero tiene esos permisos y propietario antes de modificarlos.
Copyright © 1997-1999 Gonzalo Álvarez Marañón y Pedro Pablo Fábrega Martínez.
Todos los derechos reservados.
Criptonomicón es un servicio ofrecido libremente desde el
Instituto de Física Aplicada del CSIC. Para información sobre privacidad, por favor
consulte la declaración de política sobre privacidad.
Para sugerencias, comentarios o quejas, acuda al libro de
visitas. Para contribuir al Criptonomicón, lea la página de contribuciones. |