En la siguiente entrada voy a explicar cómo securizar /tmp para evitar la ejecución de scripts subidos por atacantes. Es importante realizar esta tarea sobretodo en servidores CentOS 6, pues /tmp no viene montado como un FileSystem a parte.
Primero de todo, voy a explicar dos supuestos, el primero, en el que tendríamos ya montado /tmp como un tmpfs, y por tanto simplemente tenemos que editar /etc/fstab para cambiar las opciones de montado de dicho tmpfs, y el segundo, en el que /tmp es un directorio con permisos 777 y por tanto un riesgo de seguridad.
TMP ya montado como FileSystem
En el primer caso, simplemente bastará con localizar la línea en /etc/fstab en la que está montado nuestro temp, sería algo así:
#cat /etc/fstab /dev/tmp /tmp ext4 defaults 1 2
Pues simplemente debemos añadir a las opciones de montado las variables noexec y nosuid, para evitar que se den permisos de ejecución en el primer caso, y desactivar los atributos SUID en el segundo caso.
/dev/tmp /tmp ext4 defaults,noexec,nosuid 1 2
TMP como directorio
En caso de que nuestro /tmp sea un directorio, debemos remontarlo como punto de montaje para poder securizarlo. El proceso es muy sencillo:
Primero, creamos una carpeta (o escogemos una) donde ubicar nuestro fichero que albergará /tmp:
mkdir /ruta_tmp
Seguidamente, rellenamos de ceros (inflamos) un fichero llamado tmp_fs, en el ejemplo, se le dan 2GB:
dd if=/dev/zero of=/ruta_tmp/tmp_fs seek=512 count=512 bs=1M
Y por último, le damos formato:
mkfs.ext3 /ruta_tmp/tmp_fs
Ahora, añadimos a /etc/fstab la siguiente línea:
/ruta_tmp/tmp_fs /tmp ext3 noexec,nosuid,loop 1 1
Tras esto, solo nos quedaría mover el contenido (ojo, contenido), del /tmp actual a otro directorio:
mv /tmp/* /backup_tmp/
Y una vez realizado esto, podemos montar nuestro nuevo /tmp en su ubicación:
mount /tmp
Si es necesario, reubicar los ficheros de backup_tmp a /tmp de nuevo, si no os es necesario, pues con esto hemos terminado de securizar nuestro tmp.
¡Un saludo!
0 comentarios