Hola,
Quiero subir un escalón en la protección de la web, utilizando el archivo .htaccess, ya que no paran de intentar acceder desde ips de otros paises.
y eso que tengo wordfence, y la url de acceso cambiada, etc...pero nada dale que dale.
Por un lado he protegido en el .htaccess con código a los archivos wpconfig, el propio .htaccess, y otro (que no se para que es, pero que atacan mucho) el xmlrpc.php
También he querido bloquear con .htaccess a algunos paises, es decir que la web no se pueda ver/mostrar ni acceder, en los países que no quiero que se muestre.
Pero cuando coloco el código en el .htaccess la web salta un error y no se muestra.
Sé que desde el panel de webempresa se restringe el acceso a la administración desde países de habla no hispana, y se puede añadir alguno mas, pero lo de que no se pueda ver la web desde otros paises me gustaría hacerlo con .htaccess.
El código que hice es que se bloqueen todos los países menos los de la lista que pongo, es este:
# SEGURIDAD - Bloquear todos los paises menos estosorder deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE ES AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE FR AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE IT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE GR AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE BE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE AT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE DK AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE IE AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE IS AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE LI AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE LU AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE MC AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE NO AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE NL AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE PT AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE PL AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE GB AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE VA AllowCountry
Allow from env=AllowCountry
Que puedo estar haciendo mal? hay algo incorrecto en el código?
O es que ese código en el hosting de webempresa no funciona?
Quedo atenta a vuestra ayuda.
Gracias por adelantado 🙂
Ana
Contenido solo visible a usuarios registrados
Hola Ana.
Puedes probar con esto:
function bloquear_paises() {
$paises_permitidos = array("ES", "DE", "FR", "IT", "US", "GR", "JP", "BE", "AT", "DK", "IE", "IS", "LI", "LU", "MC", "NO", "NL", "PT", "PL", "GB", "VA");
// Obtener la IP del visitante
$ip = $_SERVER['REMOTE_ADDR'];
// Consultar API de geolocalización (ip-api.com)
$geo = @json_decode(file_get_contents("http://ip-api.com/json/{$ip}"));
// Si la API responde correctamente y el país no está permitido, bloquear acceso
if ($geo && isset($geo->countryCode) && !in_array($geo->countryCode, $paises_permitidos)) {
wp_die("Acceso restringido. Tu país no está autorizado.");
}
}
add_action('init', 'bloquear_paises');
Puedes añadirlo en el archivo functions.php o si utilizas un plugin para añadir código como puede ser Code Snippets
Los accesos se están bloqueando ? te lo comento porque intentos de accesos los vas a tener siempre, lo único que tienes que controlar es si llegan acceder.
Piensa en tu web como una ciudad. Así como en cualquier ciudad hay intentos de robo o vandalismo, en cualquier web siempre habrá intentos de ataque de bots y hackers. No significa que la web esté en peligro, sino que es parte del funcionamiento normal de internet. Lo importante es tener medidas de seguridad activas, como un buen firewall, protección contra bots y actualizaciones constantes, para minimizar cualquier riesgo. Nosotros ya tomamos medidas de seguridad para intentar evitar estos ataques.
Un saludo
Hola Pepe! 😊
Espero que estés muy bien!
Muchas gracias por el código, ya lo puse en el functions.php, que hay en el theme child y la web se muestra bien, no como el código que ponía antes en el .htaccess, que hacia que no se viera la web, eso ya es bueno.
Pero... estoy en España y la web se ve, claro, ¿hay alguna forma de que pudiera comprobar si funciona? 🤔
Muchas gracias Pepe!
Ana 😊
Se me ha ocurrido, para ver si el código funciona, quitar "ES", España, y probar, así la "ES" en teoría no se podría ver desde aquí (España), verdad?
pero parece que no funciona, ya que entro en un navegador en oculto y al poner la url la web se muestra normal. 🤔
Hola Ana
El problema es que hace falta la geolocalización y eso es complicado.
Puedes probar con un plugin:
-> https://wordpress.org/plugins/ip2location-country-blocker
Los ataques a una web los vas a tener siempre y no son algo raro ni exclusivo de tu sitio. De hecho, todas las webs en Internet, desde las más grandes hasta las más pequeñas, se enfrentan a estos intentos de forma constante. Los atacantes automatizan estos intentos usando bots, que son programas diseñados para buscar vulnerabilidades en las páginas web. Es como si tu web estuviera siendo 'probada' constantemente por estos bots. Sin embargo, tener estos intentos no significa que la web esté comprometida.
Herramientas como el plugin Wordfence, que estas utilizando, están diseñadas para bloquear estos bots y proteger tu web. Wordfence analiza constantemente el tráfico que llega a tu sitio y detecta patrones de comportamiento sospechosos. Cuando un bot intenta acceder a áreas sensibles, Wordfence lo detecta y lo bloquea. De esta forma, previene que los bots encuentren vulnerabilidades.
En el informe de seguridad de Wordfence podrás ver que está bloqueando intentos de acceso y eso es bueno, Significa que está funcionando correctamente y evitando que estos ataques lleguen a afectar el sitio.
Si lo que comentas es porque en Wordfence ves intentos de ataque bloqueados yo no me preocuparia ya que es algo normal y es a lo que se enfrentan todas las webs, lo preocupante sería si el plugin no los bloquea, pero intentos de accesos los vas a tener siempre.
Un saludo