Bloquear IPs con .htaccess o Nginx: Guía Completa

bloquear IPs .htaccess

📅 Publicado el 1 de septiembre, 2026 · Por Equipo RedServicio

Por qué bloquear IPs .htaccess y en Nginx es importante

Bloquear IPs .htaccess o en la configuración de Nginx es de esas medidas de seguridad que cuesta cinco minutos y ahorra muchos dolores de cabeza. ¿La razón? Un ataque de fuerza bruta, una oleada de spam de bots, un competidor rastreando tu sitio sin permiso… Todo eso pasa por tu IP. Y si controlas quién puede llegar a tu servidor, controlas el problema antes de que empiece.

Aquí va la guía práctica, con código listo para copiar en ambos servidores y algunos avisos sobre cómo no bloquear por accidente a usuarios que no tienen nada que ver.

Bloquear IPs usando .htaccess en Apache

El archivo .htaccess es configuración distribuida: Apache lo lee en cada petición. Eso lo hace ideal para cambios inmediatos, sin reiniciar nada. Edítalo siempre con un editor de texto plano y no rompas la sintaxis (una coma de más y el sitio se cae).

Método con Order y Allow/Deny (Apache 2.2)

Si tu servidor todavía corre Apache 2.2, la sintaxis clásica es esta:

Order allow,deny
Allow from all
Deny from 203.0.113.45
Deny from 198.51.100.0/24

Con eso, la IP 203.0.113.45 y todo el rango 198.51.100.0/24 se llevan un 403 Forbidden al intentar entrar.

Método con Require (Apache 2.4)

Apache 2.4 cambió el control de acceso al módulo mod_authz_host:

<RequireAll>
  Require all granted
  Require not ip 203.0.113.45
  Require not ip 198.51.100.0/24
</RequireAll>

Importante: si tu servidor usa Apache 2.4 y escribes directivas de la 2.2, el resultado es un error 500. Verifica tu versión antes de tocar nada. Y si tienes dudas, el soporte de RedServicio está disponible 24/7 para ayudarte con la configuración de tu hosting.

Bloquear por país o rangos amplios

Puedes usar listas CIDR de rangos por país (IP2Location, por ejemplo) y apilar muchas líneas «Require not ip». Funciona, pero ojo: si la lista pasa de unos pocos cientos de entradas, muévela a la configuración principal del virtualhost. Apache procesa el .htaccess en cada petición, y el rendimiento se nota.

Bloquear IPs usando Nginx

Aquí no hay .htaccess. El bloqueo se configura en el archivo principal del servidor, normalmente /etc/nginx/nginx.conf, o en los archivos dentro de /etc/nginx/conf.d/ o /etc/nginx/sites-available/.

Directivas deny y allow

Nginx evalúa allow y deny de arriba hacia abajo y se detiene en la primera coincidencia:

location / {
  deny 203.0.113.45;
  deny 198.51.100.0/24;
  allow all;
}

Las IPs bloqueadas recibirán un 403. Tras los cambios, recarga:

sudo nginx -t
sudo systemctl reload nginx

nginx -t valida la sintaxis antes de recargar. Ejecútalo siempre. Un error tipográfico ahí puede tumbar el sitio entero.

Bloquear una IP solo en una sección concreta

Una ventaja clara de Nginx: el bloqueo puede ser quirúrgico. Solo al panel de administración, por ejemplo:

location /wp-admin {
  deny 203.0.113.45;
  allow all;
}

Listas geográficas con ngx_http_geo_module

Para bloqueos grandes, el módulo geo te deja definir variables con cientos de rangos y aplicar después una única regla:

geo $bloqueado {
  default 0;
  198.51.100.0/24 1;
  203.0.113.45 1;
}
server {
  if ($bloqueado) { return 403; }
}

Consejos prácticos y buenas prácticas

  1. Identifica las IPs correctas: revisa los logs de acceso (access.log) antes de bloquear. Distingue tráfico legítimo de ataques reales; no es siempre obvio.
  2. Cuidado con las IPs dinámicas y compartidas: bloquear la IP de un proveedor de internet o de un servicio compartido puede afectar a usuarios inocentes.
  3. Ojo con Cloudflare y los proxies: si usas un CDN, el log mostrará la IP del proxy, no la del visitante real. Necesitarás restaurar la IP original (mod_remoteip en Apache o set_real_ip_from en Nginx).
  4. Prueba tras aplicar cambios: accede desde una VPN o desde otra red para confirmar el bloqueo. Y guarda siempre una copia del archivo antes de modificarlo.
  5. Fail2ban como complemento: para bloqueos automáticos y temporales ante intentos de intrusión, Fail2ban analiza los logs y aplica las reglas de firewall por ti.
Tip: para bloqueos masivos y persistentes, una regla a nivel de firewall (iptables/nftables) rinde mejor que las del servidor web, porque corta la conexión antes de que llegue a Nginx o Apache.

Preguntas frecuentes

¿El bloqueo es inmediato? Con .htaccess sí, aplica al instante. En Nginx necesitas recargar la configuración con systemctl reload nginx.

¿Qué error ve el usuario bloqueado? Por defecto un 403 Forbidden, aunque puedes personalizar la página de error con la directiva error_page en Nginx o ErrorDocument en Apache.

¿Puedo bloquear usuarios por User-Agent? Sí, ambas plataformas lo permiten. Pero es menos fiable: un User-Agent se suplanta en segundos.

Conclusión

Bloquear direcciones IP concretas es gratis, rápido de aplicar y muy eficaz contra ataques dirigidos y tráfico indeseado. En Apache, el .htaccess te da flexibilidad inmediata (usa la sintaxis Require si estás en 2.4), mientras que Nginx brilla por rendimiento y por cómo maneja listas grandes de rangos. Antes de bloquear, analiza tus logs; no quieras excluir a clientes legítimos por un falso positivo. Complementa con Fail2ban y un hosting seguro. En RedServicio encontrarás hosting con configuración optimizada, copias de seguridad automáticas y soporte técnico 24/7 para acompañarte en cada paso.

📝

Equipo RedServicio

Artículos escritos y revisados por nuestro equipo técnico especializado en hosting e infraestructura web en España.

¿Listo para un hosting de verdad?

Servidores en España · Soporte 24/7 en español · Migración gratuita

Ver Planes desde 3,95€/mes →

Te puede interesar:

ClisecSeguridad informática

Página GratisCrea tu web gratis

Scroll al inicio