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.
Mi configuración es el procesador AMD X4 955 + la placa base 770 + dos discos duros de 500GB. Recien
Recientemente, un servidor de base de datos empresarial ha fallado muchas veces: la PC cliente ejecu
Deje que su sitio web se abra en segundo lugar, habilite para IIS " el con
Internet Data Center (IDC), que se desarrolla junto con las necesidades cambiante
Se perdió el archivo de registro de SQL Server. Método de recuperación
Tres formas principales de aumentar el ancho de banda disponible en la red para máquinas virtuales
Consejos para transferir sitios de gran volumen de datos
Evitar el desperdicio de enseñarle cómo elegir el servidor de aplicación
Instale la actualización NET3.5. MSI devolvió el código de error 1603 Solución
Resolución de errores de Sendmail 554
La falla para generar un archivo estático fue originalmente FSO (FileSystemObject) en el pasado
Las ventajas y desventajas de la aceleración CDN y la diferencia entre un servidor de dos líneas
Modificar los parámetros para resolver La cola de la agrupación FastCGI está llena de error
Detrás de la longevidad, ¿debería cambiarse su servidor?
Evitar el tiempo de inactividad del servidor ¿Sabes qué hacer?
Exposición de la Interfaz de activación del producto de Windows 8
AMD requiere que los desarrolladores se centren en Win10 y DirectX 12
De la mejora del rendimiento de la actualización del sistema de Windows7 al sistema de CRM
Win7 M1 Build 6519 VS Win 7 M3 Build 6801
MSN anti-escucha y sus habilidades de cifrado de información
La función de búsqueda de carpetas de Win7 no se puede usar normalmente. Método de procesamiento
La luz del disco duro alto ocupada por la CPU de Microsoft ID del sistema Win8 ha estado destellando