Restringir a IPs permitidas el acceso administrador de Magento

En ocasiones puede ser interesante limitar el acceso administrador a Magento únicamente a IPs autorizadas para minimizar el impacto de una posible brecha de seguridad en los datos de acceso, o a la hora de aprovechar vulnerabilidades del área de administración.

Para ello se debería añadir las siguientes reglas al inicio del fichero .htaccess del directorio donde se encuentre alojado la instalación de Magento a proteger:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin(.*) [NC]
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.10
RewriteRule .* - [F,L]

Sustituiríamos 10.1.1.10 por la IP permitida, los puntos deben tener una barra invertida delante \ y podemos añadir tantas IPs como necesitemos, una por línea siguiendo la misma sintaxis, podemos añadir tantas IPs como necesitemos, una por línea siguiendo la misma sintaxis:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin(.*) [NC]
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.10
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.12
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.13
RewriteRule .* - [F,L]

Si nuestra IP varía pero sigue un rango o patrón, podemos reducir la coincidencia, por ejemplo si indicamos 10.1, permitirá el acceso a toda IP que empiece por 10.1...

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin(.*) [NC]
RewriteCond %{REMOTE_ADDR} !^10\.1\
RewriteRule .* - [F,L]

Si tuviesemos una ruta administrador personalizada, bastaría con cambiar admin por nuestro acceso, ej backoffice.

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index.php/)?backoffice(.*) [NC]
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.10
RewriteRule .* - [F,L]

No siempre se podrá establecer una IP por disponer de IPs dinámicas que cambien cada día y sean de rangos diferentes, aunque menos seguro, se podría restringir el acceso para que solo se permita desde un país determinado por medio de geolocalización:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin(.*) [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(ES)$
RewriteRule .* - [F,L]

En este ejemplo hemos sustituido la IP por el código del país, en este caso España (ES), al acceder el servidor web geolocalizará la IP, para permitir únicamente el acceso si la IP es española.