Entornos AMP (apache+php+mysql) recomendaciones de configuración

un entorno AMP (LAMP en GNU/linux, WAMP en windows,…)es un programa conjunto de programas que te permiten tener un servidor de páginas web.

Suelen traer un apache+php+mysql con el phpmyadmin y el sqliteadmin. La configuración por defecto es basiquísima, que suele resumirse en root sin contraseña, y carpetas por defecto

Yo me lo instale para alojar mi pesteproyecto de página web, y para probar algún cms que otro ver como están hechos y cosas de esas (esa mala manía de aprender cosas que no sirven para nada, andá si gracias a eso tengo trabajo actualmente!).

Aunque sea un entorno de pruebas, se debe configurar bien. Porque si no, un día de estos llegará google, y vera que tienes un servidor, y te indexará como sólo el sabe. y alguien aburrido de cualquier país le dara por buscar en google: “intitle:wamp5 homepage” y que pasará? esto:

wamp5 homepage

(Pincha para ver)

Lo he descubierto gracias al google analitycs xD en la sección de palabras con las que llegan a tu web xD

Así que voy a dar una serie de consejos o recomendaciones cuando instalas un server web (Aunque sea un entorno de pruebas, que empieza siendo un entorno de pruebas y luego… chupa chupa que yo te aviso…):

Si vuestro WAMP tiene página de inicio: BORRARLA

Las paginas de inicio de los wamp suelen tener información de los modulos cargados, extensiones, listados de carpetas, accesos a herramientas de gestión… es recomendable borrarlo, o modificarlo para que no muestre la mitad de las cosas. y aunque le cambies el nombre al archivo si google lo indexa…

Ponerle contraseña para root al MySql.

Curiosidad:

En los entornos GNU/Linux te pide contraseña para root cuando instalas, en entornos windows no

Dejando aparte que es mejor más estable un server en linux que un server en windows (hablando de apache, php y mysql) El mysql debe tener password para root, porque si no, podran entrar en nuestras base de datos y hacer todo lo que quieran puesto que son root…

poner la contraseña es facil, solo hay que tener en cuenta que no debe hacerse desde el phpmyadmin:

Abrimos la consola del mysql (si, una cosa negra en la que se escribe)

Para los ejemplos en windows asumiré que el mysql esta instalado en la carpeta c:\mysql. que cada uno cambie c:\mysql por la ruta donde esté instalado el mysql. La versión que uso del mysql es la 5.0.51b, asi que comprobar todas las rutas no sea que os pete por la versión del mysql.

En windows:

Inicio/ejecutar o teclaWindows+r

y escribimos “cmd” (sin comillas)

ya en el cmd, escribimos:

c:\mysql\mysql5.0.51b\bin\mysql.exe -uroot mysql

en entornos GNU/Linux:

Abrimos un terminal y escribimos:

mysql -uroot mysql

Esto lo que hace es abrir la consola del mysql con el usuario root y entrar en la base de datos “mysql” (donde se guarda toda la informacion sobre el mysql, usuarios, algunas opciones,…)

Si este paso os da error, y el error es:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

Vuestro root ya tiene contraseña, si no, abreis entrado en la consola de mysql

no habra cambiado nada salvo el promp, que en vez de ser c:\Documents and settings\loquesea será mysql>

ahora a poner la contraseña:

UPDATE user SET Password=PASSWORD(‘LA_CONTRASEÑA_QUE_QUIERES_PARA_ROOT‘) WHERE User=”root”;

con esto nuestro root ya tiene contraseña.

Podemos comprobarlo volviendo a abrir la consola mysql:

mysql> quit

… \mysql.exe -uroot mysql

si entras… algo no ha ido bien… revisa los pasos

si te salta el error que he puesto en azulito antes, chachi, porque es lo que debe hacer.

ahora para entrar a la tabla mysql hay que poner:

…\mysql.exe -uroot -pLA_CONTRASEÑA_QUE_PUSISTE_ANTES mysql

Una vez mysql tiene contraseña para root puedes hacer un par de cosas.

1.- Configurarte el phpmyadmin si lo vas a utilizar:

phpMyAdmin es una herramienta php de gestión de una base(s) de datos Mysql

Solo tienes que editar el archivo de configuración config.inc.php de donde tengas la carpeta del phpmyadmin y dejarlo tal que:

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

auth_type tiene varios valores: cookie, http, o config. Con config le ponemos el user y el password y ya entramos directamente, por lo que es ALTAMENTE NO RECOMENDABLE. Yo recomiendo cookie o http, con config te salta una página web con un login y pass, y con http te salta una ventana de autentificación (o autenticación) de apache.

2.- Quitar los usuarios invitados de la base de datos

Quien quiere invitados en su almacén de datos?

Normalmente mysql suele poner 2 usuarios, root con todos los permisos e invitado con ningún permiso. Yo personalmente prefiero quitar a los invitados

Borrar invitados: (esto se puede hacer desde el phpmyadmin)

entramos en el phpmyadmin

phpmyadmin

Entramos en privilegios (es lo rojo en la foto)

y borramos al usuario invitado.

3.- Seguridad para nuestra base de datos.

Algunos dicen que esto es paranoico, pero yo no lo veo tan paranoico.

Para darle mas seguridad a nuestras bases de datos, una medida más a tomar es la de crear un usuario distinto para las bases de datos de proyectos distintos.

Es decir, voy a hostear en este server mysql: mi blog, una pagina de un amigo, un proyectillo mio, una galeria de fotos, y 3 o 4 proyectos mas. Ante todo, si en vuestro mysql va a meter la zarpa alguien mas, un usuario para cada zarpa ajena y le dais privilegios sobre las bases de datos que necesite y por supuesto, a las bases de datos “mysql” e “information_schema” jamas deis permisos de ningún tipo a nadie más. Y para los proyectillos personales, es recomendable que cada uno tenga un usuario mysql con solo acceso total a su base de datos (usuario wordpress para la base de datos del wordpress,…)

También es aconsejable que vosotros trabajéis con un usuario aparte, y usar root sólo cuando necesites privilegios de root en el mysql.

APACHE

Se puede cambiar la localización del directorio donde dejar las webs para que no sea el de por defecto, hacer enlaces simbólicos,…

PHP

Cargar solo las extensiones que necesitéis. Si no vas a hacer tratamiento de imágenes, no se necesita la gd

Desactivar Register_globals si teneis un php4 o inferior.

Y ya de sentido común: Actualizar

Estar al tanto de las actualizaciones de seguridad, valorar si el cambio de versión es bueno o si realmente lo necesitáis.


Comments

  1. buenos consejos, gracias

  2. Muy bueno….gracias….y como se hace para ponerle contraseña a la pantalla de inicio donde aparece WAMP SERVER…version tal….y donde ademas podemos ver nuestros sitios y la opcion de entrar al php myadmin…..Mejor dicho la pantalla que nos aparece cuando dijitamos 127.0.0.1…………Gracias…

  3. yo a esa pantalla le suelo cambiar el nombre, para que no aparezca poniendo solo la ip del servidor.

    Le suelo llamar admin.php o algo asi, y por .htaccess restringir el acceso.

  4. Pues aún cuando había aplicado estas técnicas nunca está demás saber que se mejora sustancialmente la seguridad en nuestro entorno de desarrollo (algo que no sabía).

    ¡Muchas gracias por la información!

Deja un comentario

Your email address will not be published / Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.