Problemas de seguridad del host virtual Apache + Proftpd

  
                  

1. Proftpd establece la cuenta hostuser /hostuser, y todos los usuarios se asignan a esta cuenta.

El propietario del directorio htdocs /hosts también es hostuser

El atributo de archivo cargado por el usuario mediante FTP es hostuser (644 755).

Bloquea al usuario en tu directorio de inicio.

Apache se ejecuta con nadie (mejor para usuarios de apache independientes), lea el archivo de script para el usuario host.

Para que los directorios se carguen y se escriban en caché, debe configurar 777 y desplazarse por sus subdirectorios. Dos directorios prohíben la ejecución de scripts (.htaccess: php_flag engine off). De esta manera, incluso si un hacker carga un webshell en estos dos directorios, no se puede ejecutar.

El propietario del nuevo archivo en la memoria caché o en las subidas no será nadie.

El directorio de la memoria caché está restringido al acceso externo.

Hay un problema aquí, es decir, los archivos y directorios generados por apache 644 y 755. Cuando proftpd se ejecuta como hostuser: hostuser, el usuario no puede eliminar el contenido de la caché o las cargas.

Solución:

(1) El archivo chmod y el directorio en el programa PHP son 666 y 777, respectivamente.

Tome adodb como ejemplo, debe modificar el archivo adodb.inc.php. 1681 líneas if (! Mkdir ($ dir, 0771)) y adodb-csvlib.inc.php archivo 287 líneas chmod ($ tmpname, 0644); dos lugares

(2) dejan el usuario vacío en el sistema Almacenar en caché y subir

2. PHP safe_mode, su función principal es verificar si el script actual y el propietario del archivo que se va a leer, escribir o modificar son coherentes al leer y escribir archivos. Si son inconsistentes, se niegan a modificar.

Sin embargo, si el propietario del script actual es hostuser, elimine el archivo en el directorio de subidas donde el propietario no es nadie. Una vez que se haya activado safe_mode, no podrá escribirlo.

Por lo tanto, safe_mode no está activado de forma predeterminada,

La alternativa es:

php_admin_value open_basedir /docroot restringe a cada usuario a acceder solo a sus propios archivos. El docroot aquí es el directorio raíz del programa, no el directorio de la caché o las subidas en el programa. Si no es el directorio raíz, no se puede acceder al programa PHP.

3.
(No está garantizado) Todos los scripts PHP pueden filtrar la Ejecución remota de código y los ataques de inclusión de archivos locales. De lo contrario, el pirata informático aún puede leer la contraseña en config.php, o leer y escribir directamente el contenido del directorio de la caché o las subidas.

Los datos en el directorio del caché no se pueden almacenar como una contraseña de usuario.

4. expose_php está desactivado, por lo que php no revelará el número de versión de PHP en el encabezado del archivo http.

Copyright © Conocimiento de Windows All Rights Reserved