Segurança e SSL

Restringir a IPs permitidos o acesso de administrador do Magento

Revisto a 4 min de leitura segurança controlo de acesso Magento

Limitar o painel de administração do Magento aos IPs a partir dos quais trabalha protege a loja mesmo que alguém obtenha uma palavra-passe de administrador, e trava os ataques contra falhas da área de administração. Tudo se faz com umas linhas no .htaccess.

Abra o .htaccess da pasta onde está o Magento a partir do gestor de ficheiros do cPanel (ou por FTP), faça uma cópia e adicione as regras no início do ficheiro, antes das do Magento.

Permitir um único IP

Descubra o seu IP público (pesquise «qual é o meu IP» no Google) e adicione:

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

Substitua 203\.0\.113\.10 pelo seu IP. Coloque uma barra invertida \ antes de cada ponto e mantenha o ^ do início e o $ do fim. Quem entrar em /admin a partir de outro IP receberá um erro 403.

Permitir vários IPs

Adicione uma linha RewriteCond %{REMOTE_ADDR} por cada IP:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(index\.php/)?admin(/|$) [NC]
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.10$
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.12$
RewriteCond %{REMOTE_ADDR} !^198\.51\.100\.25$
RewriteRule ^ - [F,L]

Se o seu fornecedor lhe der sempre um IP do mesmo intervalo, pode permitir o intervalo inteiro retirando o final e o $. Por exemplo, !^203\.0\.113\. permite todos os IPs que começam por 203.0.113.. Quanto mais curto for o prefixo, mais IPs alheios ficam permitidos.

Se o seu caminho de administração não for /admin

O habitual é tê-lo alterado (o Magento 2 propõe um caminho aleatório ao instalar, do tipo admin_1a2b3c). Pode consultá-lo por SSH a partir da pasta do Magento:

php bin/magento info:adminuri

E substitua admin por ele na primeira condição. Por exemplo, para backoffice:

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

Se a loja estiver numa subpasta (por exemplo tudominio.com/tienda), inclua essa pasta: ^/tienda/(index\.php/)?admin(/|$).

Se o seu IP mudar todos os dias: permitir apenas o seu país

Com uma ligação de IP dinâmico, não pode fixar um IP. Uma alternativa, menos rigorosa, é permitir o painel apenas a partir do seu país. O servidor geolocaliza cada visita, por isso basta:

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

ES é Espanha. Para vários países, separe-os com |: !^(ES|PT)$. Tem os restantes códigos e mais exemplos em bloquear ou permitir o acesso por países.

Verificar que funciona

  1. A partir da sua ligação, entre no painel: deve carregar como sempre.
  2. A partir do telemóvel com os dados móveis (outro IP), entre no mesmo endereço: deve dar o erro 403 «Forbidden».
  3. Experimente também a variante com index.php (tudominio.com/index.php/admin): deve dar o mesmo 403.

Se ficar de fora, edite o .htaccess a partir do gestor de ficheiros do cPanel e corrija o IP ou retire o bloco. Se a loja estiver por trás da Cloudflare ou de outro proxy, o servidor pode ver o IP do proxy e não o seu: nesse caso, configure a restrição na própria Cloudflare.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.