15 mejores consejos de seguridad para la pila de lámparas

15 mejores consejos de seguridad para la pila de lámparas

Muchos administradores de sistemas nuevos olvidaron aplicar la seguridad al configurar un entorno de alojamiento web para el uso de producción con Apache, MySQL y PHP. Estoy tratando de incluir todos los consejos de seguridad que debemos considerarse mientras preparamos un nuevo sistema para el uso de producción o cualquier configuración de lámpara existente.

Todos los cambios de configuración utilizados en este artículo se actualizarán en los siguientes archivos de configuración según sus sistemas operativos. En algunos casos, la ruta de archivos de configuración puede cambiar. Así que haga que el cambio sea archivos inapropiados. Después de hacer cambios, reiniciar los servicios relacionados para el cambio en vigencia.

Para Ubuntu, Debian y LinuxMint:
  • Apache2: /etc/apache2/apache2.confusión
  • PHP: /etc/php/[versión]/apache2/php.ini
  • Mysql: /etc/mysql/my.CNF o/etc/mysql/mysql.confusión.d/mysqld.CNF
Para CentOS, Redhat y Fedora:
  • Apache: /etc/httpd/conf/httpd.confusión
  • PHP: /etc/php.ini
  • Mysql: /etc/mi.CNF

#1. Ocultación de la versión e identidad del sistema operativo (Apache)

El Servindokens Directiva controla si el campo de encabezado de respuesta del servidor que se envía de regreso a los clientes. La Servidor de la Significación configura el pie de página en documentos generados por el servidor. Editar el archivo de configuración de Apache y actualizar las siguientes directivas de la siguiente manera.

  • Servidor de la Signa - Muestra la versión de Apache
     Prodirverkens prod 
  • Servertokens: proporciona versiones del sistema operativo junto con otros detalles del servidor confidencial.
     Servidor de laignatura apagada 

#2. Desactivar la lista de directorio (Apache)

Si el listado de directorio está habilitado en Apache. Entonces todos los archivos y la lista de directorios se mostrarán en la página web si no existe un documento predeterminado. Agregue la siguiente configuración en Apache para deshabilitar el servidor de listado de directorio de ancho.

 Opciones -dexes   

Después de eso, puede habilitar una lista de listado por directorio si es necesario.

#3. Restringir el acceso al archivo y el directorio (Apache)

Restringir el acceso en base al directorio, archivar la ubicación en Apache.

Restringir el directorio

Para restringir el directorio y el acceso a los archivos de los usuarios, solo permitirá que los IP se definan con permitido desde.

 Ordenar negar, permitir negar de todos los permisos de 192.168.1.24/24 Permitir desde .ejemplo.comunicarse  

Restringir el archivo

También podemos restringir el archivo específico utilizando la directiva de archivo como a continuación.

 Ordenar negar, permitir negar de todos  

Restringir la ubicación

La Directiva de ubicación limita el alcance de las directivas adjuntas por URL.

 Ordenar negar, permitir negar de todos los permisos de 192.168.1.24/24 Permitir desde .ejemplo.comunicarse  

#4. Desactivar el lado del servidor incluye y CGI (Apache)

Simplemente podemos deshabilitar el lado del servidor incluye y la ejecución de CGI definiendo la etiqueta de directorio. Agregue a continuación en el archivo de configuración del host virtual Apache.

 Opciones -incluye -execcgi  

#5. Restringir la fuga de información de PHP (PHP)

Por defecto, la instalación de PHP expone al mundo que PHP está instalado en el servidor, que incluye la versión PHP dentro del encabezado HTTP (por ejemplo: X-Powered-by: PHP/5.4.20). Leer más

Para ocultar estos valores de la edición de encabezado PHP.INI y actualizar a continuación Directiva para OFF

expose_php = apagado 

#6. Deshabilitar la ejecución del código remoto (PHP)

Si tampable_url_fopen está habilitado en su configuración, permite funciones como file_get_contents () y las declaraciones incluir y requerir que puedan recuperar datos de ubicaciones remotas HTTP o FTP y ejecutar su código.

pertual_url_fopen = offlow_url_include = apagado 

#7. Deshabilitar funciones de PHP peligrosas (PHP)

Podemos deshabilitar cualquier función PHP utilizando la Directiva Disable_Functions en el archivo de configuración de PHP. Deshabilite todas las funciones que pueden ser dañinas y no utilizadas en aplicaciones.

disable_functions = exec, shell_exec, passthru, sistema, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, proc_open, pcntl_exec 

#8. Limite el acceso de PHP al sistema de archivos (PHP)

La directiva Open_Basedir Establece los directorios de los cuales PHP puede acceder a los archivos

Open_Basedir = "/home/user/public_html" 

#9. Deshabilitar los módulos PHP no utilizados (PHP)

PHP admite "extensiones dinámicas" para cargar en el entorno PHP. Podemos deshabilitar cualquier módulo no utilizado para cargar en el sistema cambiando el nombre del archivo de configuración.

CD /ETC /PHP.D/ MV OCI8.ini oci8.ini.desactivar 

#10. Habilitar límites en PHP (PHP)

Para permitir a los usuarios cargar archivos de tamaño máximo, actualice el siguiente valor de configuración.

 upload_max_filesize = 2m #maximum 2mb del archivo que el usuario puede cargar 

Tiempo de ejecución máximo de cada script

 max_execution_time = 30 # segundos 

Cantidad máxima de tiempo Cada script puede gastar datos de solicitudes de análisis

max_input_time = 60 # segundos 

#11. Restringir el acceso remoto de MySQL (MySQL)

Si su entorno de aplicación no requiere acceder a la base de datos de forma remota, entonces deshabilite todas las conexiones remotas para el servidor de la base de datos. La forma más fácil de hacerlo obliga al servidor MySQL a escuchar solo en 127.0.0.1 (localhost).

Editar el archivo de configuración de MySQL y actualizar el siguiente valor.

enlace de enlace = 127.0.0.1 

#12. Deshabilitar el uso de infile local (mysql)

Habilitar el infile local puede ser peligroso para la seguridad de su sistema. Si el infile local está habilitado en el servidor, un usuario puede cargar cualquier archivo (como /etc /passwd, /etc /shadow) a una tabla fácilmente.

Para deshabilitar este archivo de configuración de editar MySQL y agregar el siguiente valor en la sección [MySQLD].

[mysqld] local-infile = 0 

#13. Cree un usuario específico de la aplicación en MySQL (MySQL)

No use el usuario de MySQL 'root' para acceder a la base de datos a través de la aplicación. Puede ser peligroso para su sistema. Así que asegúrese de crear y usar un usuario específico de la aplicación con acceso limitado a la base de datos de la aplicación solamente. Para crear una cuenta MySQL, use el siguiente comando.

[correo electrónico protegido]: ~# mysql -u root -p mysql> Crear usuario 'myusr'@'localhost' identificado por 'contraseña'; mysql> subvención seleccionar, insertar, actualizar, eliminar en mydb.* A 'myusr'@'localhost' identificado por 'contraseña'; MySQL> privilegios de descarga; 

#14. Mejorar la seguridad con MySQL_SECURE_INSTALLATION (MySQL)

Después de instalar MySQL MySQL_Secure_Installation El comando es muy útil para asegurar el servidor MySQL. Este comando también habilitará la protección de contraseña en Root User.

[correo electrónico protegido]: ~# mysql_secure_installation "Solo la salida requerida se muestra a continuación. En realidad, verá más salida en la pantalla "Cambie la contraseña de root? [Y/n] y Nueva contraseña: ********** Vuelva a entrar nueva contraseña: ************ Eliminar usuarios anónimos? [Y/n] y no permita el inicio de sesión de raíz de forma remota? [Y/n] y elimina la base de datos de prueba y el acceso a ella? [Y/n] y recargar tablas de privilegios ahora? [Y/n] y 

#15. Escribir archivos de configuración de proteger (apache/mysql/php)

En esta sección estamos protegiendo todos los archivos de configuración de nuestro servidor utilizados en la pila de lámparas, por lo que nadie puede cambiar estos archivos.

chattr +ai /etc /php.ini chattr +ai /etc /php.d/* chattr +ai/etc/my.CNF Chattr +Ai/etc/httpd/conf/httpd.confusión 

Recuerde que después de habilitar la protección de escritura, no hay usuarios, incluido Root, actualizar estos archivos. En caso de que necesite actualizar cualquiera de los archivos, deshabilite la protección de escritura primero usando el siguiente comando.

chattr -ai nombre de archivo 

Seguiremos actualizando consejos de seguridad de lámpara útiles para este artículo. También le solicitamos que sugiera consejos agregándolos en los comentarios.