¿Estas atascado? ¡Yo te ayudo!, pregunta aquí.

Configurar Usuario de un dominio y limitar acceso a un solo directorio apache

Soluciones a problemas de instalación y/o configuración de programas comerciales y gratuitos.

Notapor alexiter » Mar Nov 05, 2024 12:05 pm

Para evitar que un virus que infecte una web, pueda propagarse a otros directorios, podemos definir un usuario especifico por cada web de cada directorio. De forma que un virus que infecte por ejemplo la web de pepito.com solo pueda acceder a ver o acceder al directorio de pepito.com.

1º Tenemos que instalar el mod_itk de apache, que dependiendo como de viejo sea nuestro apache hay que hacerlo de una forma u otra, en casos de ubuntus muy antiguos (como el 14) seria asi:

Código: Seleccionar todo
sudo apt-get update

Código: Seleccionar todo
sudo apt-get install apache2-mpm-itk

Código: Seleccionar todo
sudo systemctl restart apache2


para ubuntus mas nuevos

Código: Seleccionar todo
sudo apt update

Código: Seleccionar todo
sudo apt install libapache2-mpm-itk

Código: Seleccionar todo
sudo a2enmod mpm_itk

Código: Seleccionar todo
sudo systemctl restart apache2


Con esto ya tenemos el modulo instalado y deberia de estar funcionando, para comprobarlo podemos lanzar

en ubuntu 14
Código: Seleccionar todo
apache2ctl -M | grep itk


en ubuntu 18
Código: Seleccionar todo
ls /etc/apache2/mods-available/ | grep itk


EN el primer caso si pone que el modulo esta shared, entonces bien, en el segundo mpm_itk.load entonces bien tambien.

Ahora tenemos que crear los usuarios, cambiando /var/www/sitio1 por el directorio que nos interese y sitio1_user por el nombre del usuario que queramos asignarle.

Código: Seleccionar todo
sudo useradd -d /var/www/sitio1 -s /usr/sbin/nologin sitio1_user


ahora le ponemos contraseña
Código: Seleccionar todo
sudo passwd sitio1_user


ajustamos los privilegios del directorio de la web que queremos limitar al usuario en cuestion:
Código: Seleccionar todo
sudo chown -R sitio1_user:sitio1_user /var/www/sitio1


ahora los permisos del directorio y sus archivos

Código: Seleccionar todo
sudo find /var/www/sitio1 -type d -exec chmod 755 {} \;
sudo find /var/www/sitio1 -type f -exec chmod 644 {} \;


ahora toca configurar los virtualhost de apache que apuntaran al directorio (puede ser tener un conf especifico o estar en el default.conf:
Código: Seleccionar todo
sudo nano /etc/apache2/sites-available/sitio1.conf


y dentro del visualhost del dominio que nos interese ponemos (cambiando AGM usuario que son los dos primeros y AGM directorio que es la ultima linea por el que hayamos creado):
Código: Seleccionar todo
 # Configuración mod_itk para asignar un usuario específico
    AssignUserId AGM AGM

    <Directory /home/HTML/AGM>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Limitar los directorios accesibles con PHP usando open_basedir
    php_admin_value open_basedir "/home/HTML/AGM:/tmp"


y reiniciamos el apache con

Código: Seleccionar todo
service apache2 restart
alexiter
Site Admin
 
Mensajes: 159
Registrado: Dom Nov 17, 2013 9:54 pm

Volver a Programas (instalación y/o configuración)

cron
  • Buscar mensajes nuevos
  • Buscar temas sin respuesta
  • ¿Quién está conectado?
  • Hay 2 Usuarios identificados :: 1 registrado, 0 ocultos y 1 invitado (basados en usuarios activos en los últimos 5 minutos)
  • La mayor cantidad de usuarios identificados fue 844 el Mié May 22, 2024 6:45 pm
  • Usuarios navegando por este Foro: Majestic-12 [Bot] y 1 invitado