De manera habitual la mayoría de las páginas web se encuentran abiertas a Internet a todos los usuarios de la Red sin ningún tipo de restricción de acceso. Muchos servidores ofrecemos capas de seguridad previas, como bloqueadores de scripts malignos, firewalls WAF, bloqueadores inteligentes de ataques DDoS, sistemas de bloqueo de fuerza bruta (cPHulk), prevención con reCAPTCHA o desaceleración de recursos por cliente. Sin embargo puede darse el caso de que necesitemos bloquear una o varias direcciones IP. Estos casos podrían ser:
- Nuestra web sufre un ataque de denegación de servicio (ataques DDoS) desde una o varias IP
- Conocemos una IP maligna que intenta acceder a nuestra web
- Bloquear el acceso a uno o varios países en concreto
- Permitir la entrada a nuestra web desde sólo algunos sitios (países)
- Evitar el acceso a ciertos robots de búsqueda
- Mejorar el anonimato bloqueando servicios públicos de indexado
En este artículo te explicamos brevemente como poder bloquear direcciones IP de manera sencilla desde cPanel y desde el archivo .htaccess, que es el sistema más común y extendido entre los servidores web Apache y LiteSpeed, y que es compatible con cualquier tipo de web, incluido WordPress, PrestaShop, etc…
Cómo identificar una dirección IP problemática
Lo más importante previamente es detectar la IP que nos da problemas o queremos bloquear. Si ya tienes su dirección IP puedes saltarte este paso. En caso contrario, dependiendo del tipo de web que tengas, puedes obtener esta información de diferente manera.
Terminal SSH
Si tienes acceso a una terminal SSH puedes ejecutar el siguiente comando:
netstat -ntu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
Este comando te sacará un listado de conexiones concurrentes ordenado por IP. Ahí podrás ver todas las IP se se están conectando e investigar que está ocurriendo.
cPanel
Si no tienes acceso a SSH, otra manera de investigar las IP puede ser a través del log que se genera en el servidor. Este log suele ser accesible desde el panel de control del servidor. Concretamente en k3bone empleamos cPanel. Para ello basta con acceder al interfaz de cPanel, e ir a la sección Métrica > Acceso sin procesar (Raw Access Logs)
Dentro encontrarás un archivo comprimido con toda la información de accesos a tu web, desde la que podrás determinar la IP problemática.
Otros casos
Si no tienes acceso a terminal SSH, panel de control, o si te pierdes un poco, nuestra recomendación es que intentes consultar el caso con el soporte de tu servidor para que te asistan.
Cómo saber de que país es la IP problemática
En ciertos casos puede ser interesante conocer la procedencia de la IP, en especial si es un ataque DoS y se emplean muchas IPs del mismo país. En este caso podemos comprobarlo entrando al sitio web: https://ipwhois.io
Una vez obtenido el origen de la o las IPs podremos bloquear completamente uno o varios países de manera sencilla. Te lo contamos un poco más adelante…
Bloquear una IP en cPanel
Una vez tengamos las direcciones IP que queremos bloquear, entramos a cPanel y vamos a la opción de Seguridad > Bloqueador de IP
Dentro de la opción de Bloqueado de IP, encontraremos la siguiente pantalla:
Tal y como se explica, el sistema es sencillo. Empleamos como ejemplo la IP 83.55.222.36:
- Si deseamos bloquear una IP en concreto, introduciremos su dirección directamente: 83.55.222.36.
- Si deseamos bloquear todas las que empiecen por 83, pondríamos: 83.*.*.*.
- Si queremos bloquear un rango de las que acaben entre 30 y 40, sería algo así: 83.55.222.30-40
Con esto sería suficiente para lograr nuestro objetivo.
Bloquear una IP en .htaccess
En los casos que no sea posible usar cPanel, emplearemos el sistema más genérico y habitual mediante el archivo .htaccess
El primer paso es descargar el archivo de nuestro FTP que normalmente se encontrará en el directorio raíz de nuestra web. En caso de no existir ninguno, podemos crear uno desde 0.
A continuación abrimos el bloc de notas y lo editamos. El código a usar para bloquear IPs es el siguiente (usamos el ej. 83.55.222.36):
order allow,deny
allow from all
deny from 83.55.222.36
order allow,deny nos indicaría el orden en el que vamos a filtrar (permitir, denegar). Primero permitimos todas con allow from all y luego denegamos las IPs concretas con deny from /em>. De hecho podríamos bloquear un país por completo empleando una lista con todas sus direcciones IP que se pueden obtener en: https://www.countryipblocks.net/acl.php
Podríamos incluso bloquear a todos los países del mundo y permitir sólo el acceso desde España por ej, usando el sistema de manera contraria. Es decir con order deny,allow negaríamos todas las IPs y solo permitiríamos las que listemos con allow from
order deny,allow
deny from all
allow from 83.55.222.36
Todo esto nos ha dado la idea para crear el siguiente vídeo en el que os explicamos todo con más detalle:
En k3bone disponemos de cPanel, desde el cual podrás gestionar y bloquear las IPs fácilmente. Aquí puedes ver nuestros planes de hosting de alojamiento SSD económicos para webs y WordPress.