No quiero permitir que otros tengan acceso de lectura, así que agregué mi usuario y el apache
usuario a un grupo llamado apachme
y luego configuré ese grupo para todos los archivos y carpetas apache
a los que quiero tener acceso, incluida la raíz de la página web. Luego le di todos los permisos al grupo y al propietario. Después de esto, Apache todavía no puede acceder a los archivos sin configurar el permiso de lectura para permitir todo ( rwxrwxr--(0774)
).
La carpeta que contiene el archivo de índice, es propiedad apache
del grupo apachme
y los permisos.rwxrwxr-x(0775)
con esto me sale un error 500, cambiándolo a 0774
dejará que funcione bien
Estos eran solo para confirmar con qué usuario se estaba ejecutando Apache y que se había agregado al grupo.
Respuesta1
Desde el punto de vista de la seguridad, no es realmente una buena idea configurar páginas web con el mismo usuario de Apache. El usuario de Apache debería poder leer las páginas web, pero no escribir en ellas.
Como tal, en la configuración estándar, es normal que las estructuras web sean legibles para todos, y cuando es necesario escribir, normalmente el usuario de Apache puede escribirlas, lo cual es una pesadilla de seguridad.
Una de las estrategias para evitarlo es instalar/usar mod_ruid2.https://github.com/mind04/mod-ruid2
En cuanto a Debian, basta con hacer:
apt-get install libapache2-mod-ruid2
Tenga en cuenta que el usuario predeterminado de Apache varía según la distribución. En Debian es www-data, en RH/CentOS es apache y en SuSE es wwwrun. De ahora en adelante me referiré a él como el usuario predeterminado de Apache.
Si no define ninguna directiva en un vhost, se comportará de la manera tradicional; de lo contrario, se cambiará el comportamiento.
La idea es tener un proceso ejecutándose en el vhost con el usuario que tiene derechos sobre el vhost y, como tal, los archivos tendrán esa propiedad y, como desee, otros usuarios no podrán leerlos. Normalmente defines un usuario por vhost.
En las directivas Virtualhost o Directorio en un vhost, usted define el usuario y el grupo que estará activo para ese directorio. El usuario: grupo de usuarios son los permisos efectivos que Apache utilizará al acceder al directorio/host virtual y, como tal, cualquier usuario que pertenezca a ese grupo podrá escribir/ver los directorios.
<Directory "/vhostdir/">
RMode config
RUidGid user usergroup
....
Como tal, al escribir los directorios, ahora los archivos se pueden crear como 660 con la propiedad de usuario:grupo de usuarios si son administrados por un grupo de usuarios. Asimismo, los archivos también pueden ser creados por otro usuario con permisos de lectura para el mundo; sin embargo, para escribir, no será el usuario predeterminado de Apache, sino este otro usuario.
Las ventajas de mod_ruid2 son entonces:
- en un entorno de alojamiento virtual, los usuarios no pueden leer los archivos de otros usuarios;
- en un solo usuario, aún puede crear archivos como otro usuario, y ni el usuario predeterminado de Apache ni el usuario ruid2 podrán sobrescribirlos.
- Más importante aún, los archivos escritos ahora se realizarán con el usuario ruid2 y ya no globalmente con el usuario predeterminado de Apache.
Desde la página de github:
ACERCA de mod_ruid2 es un módulo suexec para apache 2.0, 2.2 y 2.4, basado en mod_ruid y mod_suid2
-Se ejecuta sólo en Linux porque sólo el kernel de Linux ha implementado las capacidades de proceso requeridas. -Tiene mejor rendimiento que mod_suid2 porque no necesita matar a los niños httpd después de una solicitud. hace uso de las capacidades del kernel y después de recibir una nueva solicitud suids nuevamente. -Existen algunos problemas de seguridad, por ejemplo, si el atacante explota con éxito el proceso httpd, puede establecer capacidades efectivas y configurar su ID como root. Recomiendo usar algún parche de seguridad en el kernel (grsec), o algo así.
-Hay dos modos de operación principales: stat y config 1. La configuración es la predeterminada, debes definir uid y gid. Si no se define ningún [ug]id, se utilizan el usuario y el grupo predeterminados.
- stat httpd setuid y setgid a uid y gid del nombre de archivo solicitado (script)/directorio. Esto es bueno si usa mod_vhost_alias para alojamiento virtual.
INSTALAR 1. descargue e instale la última versión de libcap desde aquí 2. ejecute /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c 3. configure httpd.conf 4. reinicie Apache
OPCIONES DE CONFIGURACIÓN: RMode config|stat (el valor predeterminado es config) RUidGid user|#uid group|#gid - cuando RMode está configurado, configúrelo en este uid y gid
RMinUidGid usuario|#uid grupo|#gid - cuando uid/gid es < que el mínimo uid/gid establecido en uid/gid predeterminado RDefaultUidGid usuario|#uid grupo|#gid
RGroups grupo1 grupo2: grupos adicionales configurados mediante setgroups @none: borra todos los grupos definidos anteriormente.
RDocumentChrRoot: establece el directorio chroot y la raíz del documento dentro
EJEMPLO:
<VirtualHost example.com> ServerAdmin [email protected] RDocumentChRoot /home /example.com/public_html ServerName example.com ServerAlias www.example.com RMode config # unnecessary since config is the default RUidGid user1 group1 RGroups apachetmp <Directory /home/example.com/public_html/dir> RMode stat </Directory> <Directory /home/example.com/public_html/dir/test> RMode config RUidGid user2 group2 RGroups groups1 </Directory> <Directory /home/example.com/public_html/dir/test/123> RUidGid user3 group3 </Directory> <Location /yustadir> RMode config RUidGid user4 user4 RGroups groups4 </Location>