¿Has necesitado alguna vez bloquear IP’s para que no accedan a tu web?
En ocasiones puede ser necesario bloquear ip’s que están intentando acceder a tu web para obtener información de forma ilegal o simplemente porque se realizan conexiones masivas desde algún país extranjero saturando el servidor. El caso es que hay muchos motivos por los cuales en algún momento de la existencia de nuestro sitio web deberemos bloquear algunas direcciones ip para que no molesten.
Hay varias formas de bloquear direcciones IP, en mi opinión la más efectiva y simple es utilizando el archivo .htaccess ubicado en la carpeta raíz de vuestro servidor web. Ese es el primer archivo que un navegador web visita antes de nada, antes incluso de leer el fichero html o php. En ese archivo se pueden hacer re-direcciones, re-escribir rutas url, bloquear el acceso a directorios, archivos y mucho más.
¿Cómo se bloquea una ip con el htaccess?
Lo primero de todo es localizar el archivo llamado .htaccess en vuestro servidor y editarlo (en ocasiones el archivo está oculto o hay que crearlo)
order allow,deny deny from 255.0.0.0 deny from 80.40.20.10 allow from all
Con este ejemplo estamos bloqueando únicamente la ip 80.40.20.10
Como es sabido las direcciones ip se componen de 4 cifras de 1 a 3 dígitos de 0 a 254. Si nos viéramos en la necesidad de bloquear todas as direcciones ip que empiezen por 80.40.20.??? lo único que deberíamos hacer es dejar en blanco el último valor de la ip; es decir… deny from 80.40.20.
Ej.
order allow,deny deny from 255.0.0.0 deny from 80.40.20. allow from all
En este caso estaríamos bloqueando todas las ip desde 80.40.20.0 hasta 80.40.20.254 (un total de 255 ip’s)
¿Cómo bloquear las ips de todo un país?
Afortunadamente hay webs que ofrecen estos servicios y podemos utilizarlas para generar automáticamente el código que hay que insertar en el archivos htaccess con todas las ip’s seleccionadas. Por ejemplo, podemos permitir todas las ip’s de un país y denegar todas las demás; Podemos denegar todas las ip’s de un continente permitiendo todas las demás, etc.
Tan solo acceder a una de esas webs (como por ejemplo countryipblocks.net) seleccionar si quereis permitir o denegar (allow / deny) y ejegir el país/continente para que se genere el rango de ip’s de ese país o continente automáticamente.
¿Esto es para siempre o tiene caducidad?
Lamentablemente las ip’s en ocasiones cambian y es necesario volver a generar la lista de ip’s permitidas i/o denegadas. Lo recomendable es rehacer la lista de ip’s una vez al mes o contratar un servicio premium con una cleve api que se encargue diariamente de actualizar las direcciones ip establecidas como permitidas o denegadas.
¿Si tengo un servidor negix o no puedo acceder al htaccess puedo bloquear ip’s?
También se pueden bloquear ip’s desde el archivo robots.txt y hay otras formas pero no las vamos a explicar aquí porque nos centramos en hacerlo desde el archivo .htaccess.
¿Importa si tengo la web creada con Drupal, WordPress o programa a medida?
Con el método de bloqueo de ip’s desde htaccess no importa con que se ha creado el sitio web, pero en el caso de que no tengamos acceso al htacces y necesitemos un método alternativo si que importa; Por ejemplo WordPress y Drupal disponen de complementos/funciones que pueden ofrecer estos servicios de forma gratuita o de pago con actualizaciones diarias. En caso de una web creada a medida o desde cero sería necesario hablar con el programador para que implementase una función de bloqueo sincronizada con algún servicio de pago que permitiera actualizar las ip’s permitidas o denegadas.
¿Cómo afecta al posicionamiento de la web bloquear IP con htaccess?
Si el bloqueo es solo a ip’s de clientes finales que realizan accesos masivos o potencialmente peligrosos el impacto en el SEO es nulo.
Si por el contrario bloqueamos el acceso a países enteros o continentes el SEO si se ve afectado, Primero por que desde esos países no se puede acceder al contendido y por lo tanto no aparece en los resultados de búsqueda, lo que hace que no haya visitas desde los lugares afectados. El número de visitas afecta mucho al posicionamiento por lo tanto… A menos visitas menos posicionamiento.
Conclusión: No os volváis locos bloqueando todos los países excepto el vuestro porque eso impedirá que la web sea visitada desde cualquier otro país y las visitas serán muchas menos.Por ejemplo… Si permitiendo el acceso a todo el mundo se reciben 30 visitas diarias Google apunta ese dato y asigna una puntuación SEO a las url’s visitadas. Si bloqueamos todos los países excepto el país donde se venden o se ofrecen los servicios posiblemente las visitas se reduzcan a 3 o 5. Con lo que las páginas visitadas recibirán una puntuación menor.
En mi opinión no se deberían bloquear las ip’s a menos que den problemas o puedan darlos (siempre que sea posible predecirlos).
Si necesitas ayuda con este tema o cualquier aclaración al respecto pueden contactar con un profesional haciendo clic aquí o llamando directamente al 677.25.70.46 de 10 a 22h
Interesante tu manera de explicar el bloqueo, yo tengo habilitado ciertos paises y mi analytics mejoró bastante
En mi caso debo bloquear las ip porque ultimamente esta intentando acceder al wp-login de mi sitio
A nosotros nos pasó lo mismo durante un tiempo pero después de tomar medidas los intentos cesaron.
Lo primero que te recomiendo que hagas es proteger el directorio donde se encuentra el archivo de acceso (en tu caso el archivo wp-login.php ubicado en wp-admin). La forma más simple de protegerlo es denegar el acceso externo con un archivo robots.txt; esto se hace creando un archivo de texto con el nombre «robots.txt» y escribir dentro algo parecido a esto:
De este modo permitimos el acceso al archivo admin-ajax.php que puede ser necesario en una web montada con WordPress pero negamos el acceso a todos los archivos restantes de ese directorio.
Pero lo que realmente buscamos es prevenir el consumo excesivo de esos intentos de acceso para el servidor…
La forma más simple es crear un archivo .htpasswd dentro del directorio a proteger con un usuario y una clave encriptada y añadir el código necesario en .htaccess para que la funcionalidad quede activada; De este modo antes de poder acceder a la carpeta en cuestión tendrán que superar un obstáculo más, uno que prácticamente no consume recursos en el servidor puesto que no tiene que procesar el php para servir la web.
Si necesitas ayuda para proteger el directorio con .htpasswd .htaccess no dudes en contactar. Si tienes tiempo libre y te animas aquí te dejo un post que explica como se hacerlo: https://clouding.io/kb/proteger-directorios-con-password-y-htaccess/
Nota: Una clave difícil es la mejor protección que se puede tener. Una Clave difícil debería de constar de letras minúsculas, mayúsculas, números y a ser posible algún carácter especial como un – (guión) una # (almohadilla) o una @ (arroba)…
Hola carlos. Hay alguna manera eficaz de bloquear ips de otros continentes, es decir se puede bloquear asia y europa? Son de donde mas hacen ataques ddos. Estuve viendo paginas con listado por continentes, pero son listados inmensos, inclusive al seleccionar los continentes y generar el listado se cuelgan las mismas paginas antes de generar el listado de tan pesado que es.
Sabes alguna forma de bloquear continentes pero sin que sea un listado enorme?
Gracias
Saludos
Lo ideal para protegerte de ataques de ese tipo no es denegar el acceso a países enteros porque el atacante puede seguir haciéndolo simplemente utilizando un VPN gratuito. Lo ideal sería implementar un firewall para tu sitio web o instalar un módulo o plugin ya programado para el CMS que utilices. Si la web utiliza por ejemplo un WordPress puedes instalar un plugin llamado Wordreference que se encarga de bloquear una por una las ip’s que intentan un ataque. Existen programas con funciones de protección para los CMS más populares, desgraciadamente muchos sitios web todavía funcionan sobre sistemas PHP programados desde 0 o con un Framework open-source (de código abierto), en ese caso un programador debería encargarse de programar los php y js necesarios para añadir esa funcionalidad al sitio web.
Espero que te sirva de ayuda.