Enmascarando y Securizando PhpMyAdmin

En ciertas ocasiones nos encontraremos con PhpMyAdmin instalado en la misma máquina que tenemos nuestro servidor web, lo que puede llegar a ser problemático. Con esta entrada vamos a ver como enmascarar el directorio, de modo que podamos dotar de una mayor seguridad ante ataques.

Un primer paso en la seguridad será el enmascarado de la dirección de acceso. Para ello debemos  acceder al fichero de configuración de phpmyadmin sito en /etc/apache2/conf.d/phpmyadmin.conf el cual es un enlace a /etc/phpmyadmin/apache.conf

En dicho fichero podemos encontrar la siguiente entrada:

Alias /phpmyadmin /usr/share/phpmyadmin


que deberemos cambiar por lo que sigue:

Alias /secreto /usr/share/phpmyadmin


Tras lo cual no podremos  acceder por la dirección tradicional sino a través de la nueva entrada secreta creada.


Esta es una medida inicial. Para limitar el acceso a sólo la intranet, debemos habilitar el firewall al puerto 3306 y crear un fichero .htaccess en el directorio de phpmyadmin (/usr/share/phpmyadmin). El contenido de dicho fichero debe ser el siguiente:

Order Deny, Allow
Deny from All
Allow from IP

donde IP es la dirección del equipo desde el que desea acceder.

Si queremos tener un acceso más seguro (usuario, contraseña) desde cualquier sitio deberemos hacer uso de la herramienta htpasswd de cara a crear un usuario y una contraseña de acceso a la página. El formato de uso de la herramienta es:


En nuestro caso debemos utilizar:

$ sudo htpasswd -cb /directorioDestino/.hptasswd usuario


Nota: es recomendable no ubicar el fichero de contraseñas en ninguna carpeta accesible desde Apache.

Una vez que tenemos el usuario y la contraseña creada, debemos editar el fichero /etc/apache2/conf.d/phpmyadmin.conf (el mismo donde hicimos el enmascaramiento de la dirección de acceso a phpmyadmin) para indicarle el nuevo modo de autenticación en el apartado correspondiente al directorio.

Inicialmente contiene:

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php5.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
</Directory>

 Tras los cambios debe quedar como sigue:


<Directory /usr/share/phpmyadmin>
Options Indexes FollowSymLinks
DirectoryIndex index.php
AllowOverride All

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

AuthUserFile /home/administrador/apacheaccess/.htpasswd
AuthName Hello
AuthType Basic
require valid-user

<IfModule mod_php5.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
</IfModule>
</Directory>


Mediante:

AuthUserFile /home/administrador/apacheaccess/.htpasswd
AuthName Hello
AuthType Basic
require valid-user

indicamos que necesita autenticarse un usario válido del fichero de claves indicado. En caso de que sólo demos acceso a alguno de los usuarios indicados en dicho fichero,por ejemplo gonpuga, deberemos cambiar la última línea por:

require user usuario

Con:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Una vez identificado correctamente el usuario, seremos redireccionados a la página de phpmyadmin en modo seguro (https).

Tras esto ya sólo nos queda reiniciar el servidor Apache:

$ sudo /etc/init.d/apache2 restart


y probar que todo funciona correctamente.

Si lo hacemos vemos que nos aparece el siguiente error:



Para solventarlo, debemos activar el mod_rewrite en apache, desactivado por defecto en la versión 2 para ubuntu. Para ello debemos usar:

$ sudo a2enmod rewrite

Además de esto, los directorios debemos cambiar la configuración a AllowOverride all en lugar de none

Tras lo cual nos queda únicamente recargar Apache y probar el funcionamiento del mismo


Fuente: ScottLinux

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentarios:

Publicar un comentario