/tmp seguro

Todo sistema necesita carpetas temporales donde se pueda leer y escribir archivos pero estos directorios no deberían tener la capacidad de ejecutar programas o scripts. A pesar de que esto sólo te protegerá de alguien que intente correr un script directamente, te va a ayudar a evitar que muchos rootkits automáticos y ciertos troyanos que son utilizados, se ejecuten. Podrán poner los archivos en el sistema pero les será imposible ejecutarlos para obtener acceso al sistema. Uno de los mas grandes problemas es la inyección de código php via el apache en el cual se forza al apache a dercargar los archivos y luego correrlos como exploit. Asegurar las carpetas temporales es probablemente una de las cosas mas importantes en el proceso de asegurar correctamente tu servidor.

Esto esta diseñado para Redhat, pero los cambios son utilizables en cualquier variante de Linux.

El primer paso es revisar si /tmp es ya seguro.
—–comando—–
df -h |grep tmp
—–comando—–

Si eso no muestra nada, entonces ve a la seccion más abajo para crear una partición tmp. Si tienes una partición tmp, entonces necesitas ver si esta montada con la opción noexec

.
—–comando—–
cat /etc/fstab |grep tmp
—–comando—–

Si hay una linea que incluya /tmp y noexec entonces ya esta montada como no ejecutable. Si no es así, sigue las instrucciones de abajo para crear una sin tener que formatear físicamente el disco duro. Idealmente se debería de hacer una particion /tmp cuando el disco fue formateado originalmente, pero de no existir no tendrás ningun problema al crear una partición /tmp usando el siguiente método.

Crear una partición de 190Mb
—–comando—–
cd /dev/; dd if=/dev/zero of=tmpMnt bs=1024 count=200000
—–comando—–

Formatear la partición
—–comando—–
mke2fs /dev/tmpMnt
—–comando—–
Cuando pregunta si quiere uno continuar a pesar de no ser un “block special device” presionar Y

Hacer un respaldo de los datos en /tmp
—–comando—–
cp -Rp /tmp /tmp_backup
—–comando—–

Montar la nueva particion de /tmp
—–comando—–
mount -o loop,noexec,nosuid,rw /dev/tmpMnt /tmp
—–comando—–

Ajustar permisos
—–comando—–
chmod 0777 /tmp
—–comando—–

Copiar los archivos respaldados a la nueva /tmp
—–comando—–
cp -Rp /tmp_backup/* /tmp/
—–comando—–

Una vez hecho esto tenemos que reiniciar mysql ( si lo estamos usando ) y revisar que funcione correctamente. Hacemos esto por que mysql coloca el archivo mysql.sock en /tmp y necesita moverse. If not it migth have trouble starting. If it does you can add this line to the bottom of the /etc/fstab to automatically have it mounted:

Abrir archivo en emacs:
—–comando—–
emacs /etc/fstab
—–comando—–
Ahora agrega esta linea en el final del archivo:

/dev/tmpMnt /tmp ext2 loop,noexec,nosuid,rw 0 0

Mientras tenemos abierto ese archivo, vamos a asegurar /dev/shm. Busca la linea que pertenece a /dev/shm y modificala para que se vea como sigue:
none /dev/shm tmpfs noexec,nosuid 0 0

Desmonta y remonta /dev/shm para que las modificaciones sean efectivas.
—–comando—–
umount /dev/shm
mount /dev/shm
—–comando—–

A continuación borra /var/tmp y créalo de nuevo usando un enlace simbólico a /tmp
—–comando—–
rm -rf /var/tmp/
ln -s /tmp/ /var/
—–comando—–

Si todo funciona bien puedes continuar u borrar la carpeta /tmp_backup
—–comando—–
rm -rf /tmp_backup
—–comando—–

Después de esto tus particiones /tmp, /var/tmp, y /dev/shm están ahora montadas de una manera en la que ningún programa puede ser ejecutado desde estos directorios. Esta es una de las capas esenciales de seguridad que tu sistema linux debería tener.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *