Segurança e SSL
Restringir a IPs permitidos o acesso de administrador do 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
- A partir da sua ligação, entre no painel: deve carregar como sempre.
- A partir do telemóvel com os dados móveis (outro IP), entre no mesmo endereço: deve dar o erro 403 «Forbidden».
- 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
- Aviso histórico sobre registos massivos no PrestaShop 1.6 e 1.7 Documenta a falha corrigida no PrestaShop 1.6.1.24 e 1.7.5.2 e explica como agir se ainda encontrar...
- Configurar a segurança dos cookies de sessão no GLPI Verifique o HTTPS e a configuração PHP efetiva do GLPI para resolver avisos de cookies Secure, sem o...
- Desativar o registo público de utilizadores no Joomla Indica como impedir o registo público de utilizadores em versões mantidas do Joomla quando o site nã...
- Mostrar um aviso temporário substituindo o ficheiro index Explica como mostrar uma página temporária guardando o index original e avisa que este método não bl...
Algo não bate certo ou mudou? Diga-nos e revemos.