Cómo bloquear una dirección IP desde .htaccess

En servidores Apache podés bloquear una dirección IP con .htaccess para impedir que ese origen acceda a un sitio o a una carpeta determinada. Es una medida útil frente a una IP claramente identificada, pero no reemplaza un firewall, un servicio WAF ni una estrategia contra ataques distribuidos.

Cuándo conviene bloquear una IP

Un bloqueo puntual puede servir cuando los registros muestran solicitudes abusivas repetidas desde la misma dirección, intentos contra una sección concreta o un origen que no debería utilizar una aplicación privada. Antes de actuar, confirmá que la IP realmente corresponde al visitante y no a un proxy, una red corporativa o un servicio compartido.

No bloquees una dirección solo porque aparezca muchas veces. Un buscador legítimo, una integración o varios usuarios detrás del mismo proveedor pueden compartir una IP. Analizá rutas solicitadas, frecuencia, códigos de respuesta, agente de usuario y horario.

Antes de editar .htaccess

  1. Descargá una copia del archivo actual.
  2. Confirmá el dominio y el directorio sobre el que querés aplicar la restricción.
  3. Verificá tu propia IP pública para no bloquearte por error.
  4. Conservá abierto el Administrador de archivos o una sesión alternativa para poder revertir el cambio.
  5. Probá el sitio inmediatamente después de guardar.

El archivo suele encontrarse en public_html, aunque un dominio adicional o una subcarpeta puede utilizar otro .htaccess. En cPanel quizá debas activar Show Hidden Files para verlo.

Bloquear una IP en Apache 2.4

La sintaxis recomendada en Apache moderno utiliza la directiva Require. Para permitir el acceso general y excluir una dirección concreta, agregá:

<RequireAll>
    Require all granted
    Require not ip 203.0.113.25
</RequireAll>

Reemplazá 203.0.113.25 por la IP que necesitás bloquear. La dirección del ejemplo pertenece a un rango reservado para documentación y no representa un visitante real.

Bloquear varias direcciones

Podés incluir más de una condición dentro del mismo bloque:

<RequireAll>
    Require all granted
    Require not ip 203.0.113.25
    Require not ip 198.51.100.42
</RequireAll>

Mantené una lista breve y documentada. Acumular cientos de reglas en .htaccess dificulta el mantenimiento y no es eficiente para responder a tráfico que cambia constantemente.

Bloquear una red completa

Apache acepta redes expresadas en formato CIDR. Por ejemplo, una regla para excluir el rango de documentación 203.0.113.0/24 sería:

<RequireAll>
    Require all granted
    Require not ip 203.0.113.0/24
</RequireAll>

Un /24 abarca 256 direcciones IPv4. No amplíes un bloqueo sin comprender el rango afectado: podrías impedir el acceso de clientes legítimos, conexiones móviles o servicios externos.

Qué ocurre con IPv6

Si el visitante se conecta por IPv6, bloquear solamente su IPv4 no tendrá efecto sobre esa conexión. Apache también permite direcciones y redes IPv6 en Require ip, pero copiá el valor completo desde registros confiables y utilizá un prefijo únicamente cuando sepas qué red querés excluir.

Dónde colocar la regla

Una regla en el .htaccess de public_html suele afectar todo el sitio. Si el problema se limita a una aplicación o carpeta, colocala en el .htaccess de esa ubicación para reducir el alcance. Esto permite, por ejemplo, restringir un área privada sin bloquear el resto de la web.

Prestá atención a otros bloques Require ya existentes. No pegues una segunda configuración sin comprender cómo se combinan las condiciones de autorización.

No copies sintaxis antigua sin comprobar la versión

Muchos tutoriales todavía utilizan Order, Allow y Deny, correspondientes al control de acceso heredado de Apache 2.2. En Apache 2.4 la autorización se expresa mediante Require. Mezclar ambos estilos puede requerir módulos de compatibilidad y generar resultados confusos.

Alternativa: IP Blocker de cPanel

Si preferís evitar la edición manual, cPanel puede ofrecer la herramienta IP Blocker. Permite agregar y retirar direcciones o rangos desde la interfaz. Nuestra guía de IP Blocker en cPanel explica el procedimiento y las precauciones.

No mantengas el mismo bloqueo por varios métodos sin documentarlo. Si más adelante eliminás una IP en cPanel pero todavía existe una regla manual, el acceso continuará denegado y será más difícil encontrar la causa.

Qué cambia cuando utilizás Cloudflare

Si el dominio está bajo el proxy de Cloudflare, las conexiones HTTP llegan al servidor desde direcciones de Cloudflare. Para que Apache evalúe la IP real, el servidor debe estar configurado correctamente para restaurarla, por ejemplo mediante mod_remoteip. De lo contrario, una regla basada en la dirección de conexión podría afectar al proxy en vez del visitante.

Para dominios proxificados suele ser más apropiado bloquear la IP en las reglas de seguridad de Cloudflare. El tráfico se detiene antes de alcanzar el hosting, la regla es más visible y resulta más sencilla de revertir. Antes de aplicarla comprobá que estás viendo la IP original del cliente.

Por qué bloquear una IP no detiene un ataque distribuido

Los bots pueden rotar entre muchas direcciones, proveedores y países. Agregar manualmente cada IP hace crecer el archivo sin resolver el patrón. Para abuso distribuido conviene utilizar límites de solicitudes, reglas por ruta, desafíos administrados, protección del login y el firewall del servidor.

Bloqueá por IP solamente cuando sea una condición precisa. Si el comportamiento puede identificarse por URL, método o frecuencia, una regla diseñada alrededor de ese patrón suele ser más efectiva.

Cómo comprobar el bloqueo

Verificá primero que el sitio continúe disponible desde una conexión no bloqueada. Después, si controlás la IP restringida, probá desde ese origen. Apache normalmente devuelve un código 403, aunque el sitio puede mostrar una página personalizada.

Revisá los registros para confirmar que el acceso fue rechazado y no confundas un 403 de otra capa con la regla recién agregada. Si el sitio responde con error 500, restaurá la copia de .htaccess y revisá la sintaxis o la compatibilidad de las directivas.

Cómo retirar el bloqueo

Eliminá únicamente la línea Require not ip correspondiente y conservá la estructura válida del bloque. Guardá el archivo y repetí la prueba. Si usaste IP Blocker o Cloudflare, quitá la regla en la misma herramienta donde la creaste.

Buenas prácticas finales

  • Anotá el motivo y la fecha de cada bloqueo.
  • Revisá periódicamente si la IP sigue representando un riesgo.
  • Preferí el menor alcance posible: carpeta, aplicación o ruta afectada.
  • No publiques listas reales de IP ni datos completos de los registros.
  • Combiná esta medida con actualizaciones, contraseñas seguras y autenticación de dos factores.

Un bloqueo bien aplicado puede resolver un incidente puntual. Para problemas repetidos o distribuidos, analizá el patrón completo y utilizá la capa de seguridad más cercana al origen del tráfico.