LNMP entorno de seguridad, seguridad, configuración, experiencia

  

El sitio web de la lámpara anterior se está desarrollando hacia lnmp, el entorno de trabajo del autor utiliza lnmp durante muchos años, estoy muy contento de compartir con ustedes la configuración de seguridad php de la página web lnmp durante muchos años. Todos comparten, de hecho, el contenido es el mismo 80%, aquí se enfoca en la configuración de seguridad de php, vea el contenido.

1. Use open_basedir para limitar el acceso a directorios cruzados del host virtual [HOST = www.45it.com] open_basedir = /data /Site /www.45it.com /: /tmp /

[HOST = test.45it.com] open_basedir = /data /site /test.45it.com /: /tmp /

La configuración anterior significa que el programa php en www.45it.com está restringido a dos directorios en la configuración de open_basedir y no puede acceder a otros directorios. Si no configura los programas anteriores, test.45it.com y www.45it.com pueden acceder entre sí. Si uno de los sitios tiene una vulnerabilidad, el pirata informático está implantado en el webshell y luego puede llevar el mismo servidor a través de este sitio. Otros sitios, el último troyano colgado.

[advertencia] Nota: El directorio debe ir seguido de /. Por ejemplo, si escribe /tmp, su sitio tiene /tmp123 y otros directorios que comienzan con /tmp, luego los hackers También puede acceder a estos directorios. Además, php5.3 admite esta escritura y 5.2 no. [/warning]

2. Deshabilite las funciones de PHP inseguras disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open, proc_get_status, phpinfo

Deshabilite php para que no ejecute la función php anterior, arriba El programa php puede ejecutar comandos de linux, como ping, netstat, mysql, etc. Si su sistema tiene un error de encendido, puede comprender las consecuencias.

3. Preste atención a la información de seguridad del software Preste atención activamente al kernel de Linux, la seguridad php Espere la información y tome el error en el tiempo

4. php user read-only Este método es mi método más respetado, pero debe discutirse con el ingeniero de php antes de la ejecución. ¿Por qué? Por ejemplo, el usuario root y el grupo del sitio www.45it.com no son nadie, y el usuario y el grupo que ejecutan php son phpuser. Los permisos del directorio son 755 y los permisos del archivo son 644. Por lo tanto, php es de solo lectura y no puede escribir ningún archivo en el directorio del sitio. Es decir, los usuarios no pueden cargar archivos. Incluso si hay lagunas, los piratas informáticos no pueden pasar por la puerta trasera y es aún más imposible colgar troyanos. Antes de hacer esto, pídales a los programadores que cambien la caché de archivos a la memoria caché nosql (como memcached, redis, etc.) y los archivos cargados pasarán. La interfaz se pasa a otro servidor (servidor estático).

[advertencia] Nota: es un mal hábito generar un caché local. El uso del almacenamiento en caché de archivos es lento y desperdicia espacio en el disco. El punto más importante es que el servidor no puede escalar horizontalmente en circunstancias normales. [/warning]

5. Cierre el registro de errores de php display_errors = On to display_errors = Off

Una vez que el programa tenga un error, el mensaje de error detallado se mostrará inmediatamente al usuario, incluida la ruta, algunos incluso la contraseña de la cuenta de la base de datos. Inyectar la contraseña de infiltración es básicamente adivinado por este error. Está fuertemente cerrado en el entorno de producción.

6. separación de carga php Sube archivos a un servidor remoto, como nfs. Por supuesto, también puede llamar a la interfaz php que escribió. Incluso si existe una vulnerabilidad de carga, el archivo se transfiere al servidor estático. Los archivos como Trojans no se pueden ejecutar en absoluto.

Por ejemplo: php site www.45it.com, directorio /data/site/www.45it.com static file file.45it.com, directory /data /site /static.45it.com

El archivo se transfirió directamente a /data/site/static.45it.com. No se puede acceder al archivo cargado a través de www.45it.com y solo se puede acceder usando static.45it.com , pero static.45it.com no admite php.

7. Cierre la información de php expose_php = Activado para expose_php = Desactivado

No revele fácilmente la información de su versión de php para evitar que los piratas informáticos utilicen esta versión. Php lanza el ataque.

8. Deshabilita la carga dinámica de la biblioteca de enlaces disable_dl = Activado; cambia a enable_dl = Desactivado;

9. Desactiva la url remota abierta allow_url_fopen = Activado para allow_url_fopen = Desactivado

De hecho, esto no es realmente seguro y no causará problemas como la intrusión en la web, pero afecta mucho al rendimiento. Creo que es un problema de seguridad limitado.

Los siguientes métodos no podrán ser remotos Contenido de la URL

$ data = file_get_contents (" http: //www.baidu.com/");

Los siguientes métodos están disponibles Contenido del archivo local

$ data = file_get_contents (" 1.txt ");

Si su sitio tiene poco tráfico y la base de datos funciona bien, pero la carga del servidor web es sorprendentemente alta. Por favor, compruebe directamente si hay este método. He encontrado demasiados problemas, el entorno de producción actual se ha deshabilitado en todos los ámbitos, si los ingenieros de php necesitan obtener el contenido de la web remota, se recomienda que utilicen curl.

Cómo usar php curl Por favor, consulte mi artículo anterior "Uso de PHP Curl reemplaza file_get_contents, y el rendimiento de curl y file_get_contents en php.

10. La seguridad de php en el sitio lnmp está aquí por el momento, y habrá problemas de seguimiento.

Copyright © Conocimiento de Windows All Rights Reserved