{"id":735,"date":"2018-01-28T00:02:22","date_gmt":"2018-01-28T04:02:22","guid":{"rendered":"https:\/\/tecnojupiter.net\/?p=735"},"modified":"2023-09-13T07:46:10","modified_gmt":"2023-09-13T11:46:10","slug":"bloquear-ip-user-agent-apache-htaccess","status":"publish","type":"post","link":"https:\/\/tecnojupiter.test\/bloquear-ip-user-agent-apache-htaccess\/","title":{"rendered":"Bloquear IP y User-Agent con SetEnvIfNoCase en Apache con htaccess"},"content":{"rendered":"
En el post que escrib\u00ed sobre el archivo robots.txt<\/a> te di una idea sobre la cantidad aproximada de User-Agent que existen y la raz\u00f3n por la que debes bloquear cierto tipo de User-Agent.<\/p>\n\n\n\n Ahora en esta entrada te muestro otra alternativa que puedes implementar en tu .htaccess para bloquear esos bot indeseables que son de mala reputaci\u00f3n.<\/p>\n\n\n\n Por lo general cuando queremos bloquear un User-Agent para que no visite nuestra web el m\u00e9todo habitual seria editando el fichero Robots.txt y escribiendo una nueva linea identificando al bot que queremos que no rastree nuestra web, por ejemplo:<\/p>\n\n\n\n User-agent: Baiduspider Pero ya sabemos que algunos rastreadores web<\/strong> ignoran por completo esta solicitud en el fichero robots.txt<\/strong>, por lo que la manera m\u00e1s confiable de bloquear el User-Agent es editando el fichero .htaccess en su lugar.<\/p>\n\n\n\n Este a\u00f1o los raspadores y los bots que se comportan mal parecen estar de moda. Si bien ser\u00e1 muy dif\u00edcil bloquearlos a todos, puedes hacer mucho para evitar que la mayor\u00eda estos raspadores recojan su sitio.<\/p>\n\n\n\n Los fragmentos a continuaci\u00f3n te mostrar\u00e1n c\u00f3mo bloquear User-Agent utilizando la direcci\u00f3n IP y la cadena SetEnvIfNoCase.<\/p>\n\n\n\n Índice de contenido<\/p> Puede bloquear direcciones IP espec\u00edficas en .htaccess f\u00e1cilmente utilizando el siguiente c\u00f3digo:<\/p>\n\n\n\n Order Allow,Deny<\/strong> Simplemente significa que si el servidor web tiene una solicitud que coincida con la regla Denegar, la rechazar\u00e1. Si no coincide con la regla Denegar, entonces lo permitir\u00e1.<\/p>\n\n\n\n deny from<\/strong> xxx.xxx.xxx.xxx. Le dice al servidor que rechace cualquier solicitud de esa IP y que emita un mensaje de Prohibido en lugar de la p\u00e1gina web solicitada.<\/p>\n\n\n\n Puede bloquear m\u00e1s direcciones IP a\u00f1adiendo m\u00e1s lineas Deny from, obviamente siguiendo la secuencia denegar, de las l\u00edneas en su .htaccess.<\/p>\n\n\n\n Esta tipo de bloqueo es mucho m\u00e1s radical as\u00ed que debes estar completamente seguro antes de a\u00f1adir algo como esto, y no cometer un error de bloquear por ejemplo una IP de Google que pueda afectar tu SEO.<\/p>\n\n\n\n Habr\u00eda que decir tambi\u00e9n que, hay varias maneras de bloquear IP con el fichero .htaccess aqu\u00ed te muestro otros ejemplos:<\/p>\n\n\n\n Cuando no queremos que el .htaccess se tan largo, podemos ahorrar algo de espacio a\u00f1adiendo la regla en una sola linea.<\/p>\n\n\n\n Puedes bloquear tantas direcciones IP en una sola linea como quieras, solo debes escribir la IP y dejar un espacio entre ellas.<\/p>\n\n\n\n Tambi\u00e9n puedes usar el m\u00e9todo anterior para permitir el acceso a direcciones IP especificas.<\/p>\n\n\n\n A veces el atacante posee una IP que est\u00e1 incluida en un rango de direcciones especificado en un bloque CIDR (Classless Inter-Domain Routing) y puede utilizarlas todas.<\/p>\n\n\n\n Pongamos por caso que, estas bloqueando una nueva direcci\u00f3n IP en tu .htaccess y te das cuentas que has estado a\u00f1adiendo direcciones IP que empiezan con los mismos n\u00fameros, elige una de ellas para realizar una consulta Whois<\/a>.<\/p>\n\n\n\n En los resultados de la consulta Whois encontraras el valor del bloque CIDR que representa a esa direccion IP asociada a esa red en particular, para denegarle el acceso a todas las IP que utiliza el mismo atacante que comprenden ese rango, un modo muy \u00fatil es bloquear mediante CIDR, implementando la siguiente regla en el .htaccess.<\/p>\n\n\n\n Un ejemplo muy gen\u00e9rico de bloqueo por CIDR, cambia los n\u00fameros a los que quieras bloquear:<\/p>\n\n\n\n Recuerda cambiar el rango IP CIDR a las que quieras bloquear.<\/p>\n\n\n\n De manera semejante al punto anterior, puedes bloquear un rango de direcciones IP completo \u00abtruncando d\u00edgitos\u00bb hasta que aparezca el IP buscado.<\/p>\n\n\n\n Por ejemplo, esta direcci\u00f3n IP 217.147.169.238<\/strong> es una direcci\u00f3n IP espec\u00edfica y \u00fanica, por cierto pertenece a Ucrania<\/strong> y de hecho es una IP que tuve que bloquear por constantes intentos de ataque a mi sitio web<\/strong>.<\/p>\n\n\n\n Volviendo al tema, si quitamos los \u00faltimos d\u00edgitos (238) de la direcci\u00f3n IP en el .htaccess, cualquier IP que comience con el resto de n\u00fameros, o sea, que 217.147.169 vale para;<\/p>\n\n\n\n 217.147.169.1 Y si todav\u00eda queremos ser m\u00e1s restrictivos, quitando otros decimales a la direcci\u00f3n IP, el rango de bloqueo se ampl\u00eda a cualquier direcci\u00f3n IP que empiece con 217.147.xxx.xxx as\u00ed que estar\u00edamos bloqueando 65.536 posibles direcciones IP.<\/p>\n\n\n\n Y si que queremos ser a\u00fan m\u00e1s restrictivos siguiendo esta l\u00f3gica quitando decimales es posible bloquear todo un rango de direcciones IP a distintos grados de necesidad.<\/p>\n\n\n\n Sirva de ejemplo (modelo):<\/p>\n\n\n\n Utilizando la directiva SetEnvIfNoCase de Apache<\/strong> en tu fichero .htaccess se puede decir que es una forma f\u00e1cil de bloquear los User-Agent.<\/p>\n\n\n\n La cual consiste en establecer una variable de entorno llamada bad_bot que tendr\u00e1 un valor o condici\u00f3n bad_bot en el caso que la petici\u00f3n a nuestro sitio web provenga de un User-Agent especifico.<\/p>\n\n\n\n Entonces, digamos que queremos bloquear algunos bots implementamos el siguiente fragmento:<\/p>\n\n\n\n La ultima linea Deny from env=bad_bot<\/strong>, declara que, cada condici\u00f3n que termine con bad_bot se le emitir\u00e1 un error 403 Forbidden, el cual como mencionaba deniega el acceso a nuestro sitio web a aquellas peticiones cuyo casos se cumpla la condici\u00f3n bad_bot.<\/p>\n\n\n\n El anterior fragmento de c\u00f3digo es solo un ejemplo de como se implementa la directiva SetEnvIfNoCase, no es una lista completa de la cantidad de malos bots que existen.<\/p>\n\n\n\n Puedes incluir los que est\u00e1n en esta lista que se mantiene en GitHub bad-bot-blocker<\/a>, tambi\u00e9n puedes revisar esta otra lista<\/a> para tomar algunos nombres de User-Agent e incluirlos en tu .htaccess con la directiva SetEnvIfNoCase.<\/p>\n\n\n\n Si causas un error interno en el servidor puedes revertirlo utilizando el archivo Existen muchos plugins que puedes instalar y activar con pocos clic los cuales te permiten hacer lo mismo y evitar estas ediciones.<\/p>\n\n\n\n Pero soy creyente de DIY<\/strong> (Do It Yourself<\/strong>) que traducido a nuestro idioma ‘Hazlo tu mismo<\/strong>‘, al hacerlo de forma manual editando el fichero En el post que escrib\u00ed sobre el archivo robots.txt te di una idea sobre la cantidad aproximada de User-Agent que existen y la raz\u00f3n por la que debes bloquear cierto tipo de User-Agent. Ahora en esta entrada te muestro otra alternativa que puedes implementar en tu .htaccess para bloquear esos bot indeseables que son de mala…<\/p>\n","protected":false},"author":1,"featured_media":756,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[4],"tags":[23,18],"_links":{"self":[{"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/posts\/735"}],"collection":[{"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/comments?post=735"}],"version-history":[{"count":1,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/posts\/735\/revisions"}],"predecessor-version":[{"id":3154,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/posts\/735\/revisions\/3154"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/media\/756"}],"wp:attachment":[{"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/media?parent=735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/categories?post=735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecnojupiter.test\/wp-json\/wp\/v2\/tags?post=735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
Disallow: \/<\/p>\n\n\n\nBloqueo por direcci\u00f3n IP.<\/span><\/h2>\n\n\n\n
Order allow, deny\nDeny from 123.123.123.123\nAllow from all<\/pre>\n\n\n\n
Bloqueo de dos direcciones IP especificas<\/span><\/h3>\n\n\n\n
# block dos direcciones IP en una sola linea \ndeny from 99.58.47.66 11.22.37.47<\/pre>\n\n\n\n
# permitur acceso a dos direcciones IP\nallow from 157.55.39.102 66.249.65.221<\/pre>\n\n\n\n
Bloquear rango de IP por numero CIDR<\/span><\/h3>\n\n\n\n
# bloquear acceso de IPs por CIDR\n<Limit GET POST PUT>\norder allow,deny\nallow from all\nDeny from 10.1.0.0\/16\nDeny from 80.0.0\/8\n<\/Limit><\/pre>\n\n\n\n
Bloquear rango de IP por \u00abtruncado de digitos\u00bb<\/span><\/h3>\n\n\n\n
217.147.169.2
217.147.169.3
217.147.169.4
217.147.169.5…Y as\u00ed sucesivamente, sera bloqueada. Teniendo en cuenta que una direccion IP se lee de izquierda a derecha.<\/p>\n\n\n\n# bloquear rango de IP por truncado numeros\n<Limit GET POST PUT>\norder allow,deny\nallow from all\ndeny from 217.147.169.238\ndeny from 217.147.169.*\ndeny from 217.147.*.*\ndeny from 217.*.*.*\n<\/Limit><\/pre>\n\n\n\n
\n\n\n\nBloqueo de bots por SetEnvIfNoCase User-Agent<\/span><\/h2>\n\n\n\n
# Block Bad Bots & Scrapers\n\nSetEnvIfNoCase User-Agent \"^Xenu\" bad_bot\nSetEnvIfNoCase User-Agent \"^Zeus\" bad_bot\nSetEnvIfNoCase User-Agent \"ZmEu\" bad_bot\nSetEnvIfNoCase User-Agent \"^Zyborg\" bad_bot\n\n# Esc\u00e1neres de vulnerabilidad\nSetEnvIfNoCase User-Agent \"Acunetix\" bad_bot\nSetEnvIfNoCase User-Agent \"FHscan\" bad_bot\n\n# Motor de b\u00fasqueda chino agresivo\nSetEnvIfNoCase User-Agent \"Baiduspider\" bad_bot\n\n# Motor de b\u00fasqueda ruso agresivo\nSetEnvIfNoCase User-Agent \"Yandex\" bad_bot\n\nOrder Allow,Deny\nAllow from all\nDeny from env=bad_bot<\/pre>\n\n\n\n
.htaccess<\/code> original o simplemente eliminando la lineas donde escribiste nuevas reglas.<\/p>\n\n\n\n
Conclusi\u00f3n<\/span><\/h2>\n\n\n\n
.htaccess<\/code> puedes bloquear de forma efectiva IP y User-Agent con mayor eficiencia y rendimiento para la web, recuerda que instalar muchos plugins en tu instalaci\u00f3n de WordPress no es muy recomendable sobre todo si estas en un plan de hosting compartido.<\/p>\n","protected":false},"excerpt":{"rendered":"