{"id":2105,"date":"2021-03-13T21:40:09","date_gmt":"2021-03-14T02:40:09","guid":{"rendered":"https:\/\/e-lexia.com\/blog\/?p=2105"},"modified":"2024-11-01T11:22:39","modified_gmt":"2024-11-01T16:22:39","slug":"proteger-web-buen-htaccess","status":"publish","type":"post","link":"https:\/\/e-lexia.com\/blog\/proteger-web-buen-htaccess\/","title":{"rendered":"Protege tu web con un buen .htaccess"},"content":{"rendered":"<p>Garantizar la disponibilidad e integridad de la informaci\u00f3n de un sitio web es una de las tareas m\u00e1s cr\u00edticas para generadores y administradores de contenido, tambi\u00e9n conocidos como <em>webmaster<\/em>.<\/p>\n<p>En algunas oportunidades existe el acompa\u00f1amiento de ingenieros web que implementan soluciones que van desde la configuraci\u00f3n del <em><a href=\"https:\/\/e-lexia.com\/diccionario-tic\/firewall\/\" rel=\"noopener\" target=\"_blank\">firewall<\/a><\/em> f\u00edsico hasta recomendaciones en la extensi\u00f3n y complejidad de las contrase\u00f1as.<\/p>\n<p><!-- Google Adsense --><\/p>\n<div class=\"adsense\">\n  <script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-7923590131153633\" crossorigin=\"anonymous\"><\/script><br \/>\n  <ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-7923590131153633\" data-ad-slot=\"5345374831\"><\/ins><br \/>\n  <script>(adsbygoogle = window.adsbygoogle || []).push({});<\/script>\n<\/div>\n<p>Pero en otros casos, como me sucede en este blog, los creadores estamos solos y debemos sortear los ataques cibern\u00e9ticos desde el auto aprendizaje.<\/p>\n<p>Mi recomendaci\u00f3n, especialmente para las empresas, es lograr la <strong>consultor\u00eda permanente de un equipo de seguridad web<\/strong>, que vigile y asegure el <em>core<\/em>, los archivos multimedia y la base de datos, entre otros.<\/p>\n<p>Con respeto a mis amigos y colegas, dejar esta responsabilidad al \u00e1rea de comunicaciones es, cuando menos, irresponsable.<\/p>\n<p>Por lo pronto, comparto este texto para la comunidad <em>bloguera<\/em> independiente, como s\u00edmbolo de agradecimiento a quienes me han orientado en situaciones \u00abciber-peligrosas\u00bb.<\/p>\n<h2>Algunas acciones de seguridad<\/h2>\n<p>En este blog y en <a href=\"https:\/\/www.youtube.com\/user\/juanca826?sub_confirmation=1\" rel=\"noopener\" target=\"_blank\">mi canal de YouTube<\/a> he mencionado algunos consejos de seguridad, especialmente para los sistemas de administraci\u00f3n de contenidos WordPress y Joomla.<\/p>\n<p>Aqu\u00ed algunos de ellos:<\/p>\n<ul>\n<li>Enmascarar la ruta de acceso a la zona de administraci\u00f3n.<\/li>\n<li>Establecer permisos para directorios y archivos, de acuerdo a las posibilidades del propietario, el grupo y el p\u00fablico.<\/li>\n<li>Cambiar el nombre de usuario administrador, que normalmente es \u201c<em>admin<\/em>\u201d o \u201c<em>administrator<\/em>\u201d.<\/li>\n<li>Utilizar contrase\u00f1as complejas y superiores a 16 caracteres de longitud.<\/li>\n<li>Configurar el segundo factor de autenticaci\u00f3n.<\/li>\n<li>Personalizar el prefijo de la base de datos.<\/li>\n<\/ul>\n<p>En Internet existen cientos de publicaciones que, de acuerdo al <a href=\"https:\/\/e-lexia.com\/diccionario-tic\/cms\/\" rel=\"noopener\" target=\"_blank\">CMS<\/a>, entregan m\u00e1s recomendaciones. Lo importante es tener conocimientos (no necesariamente avanzados) sobre la gesti\u00f3n del servicio de almacenamiento (<em>hosting<\/em>) y el funcionamiento del sistema que soporta el sitio web.<\/p>\n<h2>\u00bfQu\u00e9 es el .HTACCESS?<\/h2>\n<p>El .htaccess es un archivo oculto que define parte de la configuraci\u00f3n de los servidores Apache. En \u00e9ste, el administrador establece condiciones de acceso y restricci\u00f3n a ficheros y directorios que est\u00e1n en el servidor (normalmente en la carpeta <code>public_html<\/code>).<\/p>\n<p>Pero aqu\u00ed no termina la funci\u00f3n del .htaccess (que por cierto es el nombre corto de <em>hypertext access<\/em>). En este fichero tambi\u00e9n se definen, entre otras:<\/p>\n<ul>\n<li>Redirecciones<\/li>\n<li>Mensajes personalizados de error<\/li>\n<li>Bloqueo de direcciones IP<\/li>\n<li>Prevenci\u00f3n de <em>hotlinking<\/em><\/li>\n<li>Codificaci\u00f3n de los documentos<\/li>\n<li>Zona horaria, especialmente si es diferente a la del servidor<\/li>\n<li>L\u00edmite de la memoria del PHP<\/li>\n<li>Establece la p\u00e1gina de inicio<\/li>\n<li>Habilita o cancela el <em>cache<\/em><\/li>\n<\/ul>\n<p>Como se aprecia, este archivo de texto es cr\u00edtico en el sistema.<\/p>\n<h2>Evitar el listado de archivos y directorios<\/h2>\n<p>Una de las primeras tareas en seguridad es evitar que los visitantes accedan a ciertos directorios y visualicen los archivos y la estructura del sistema.<\/p>\n<p class=\"nota\">Ojo, esto no ri\u00f1e con la estrategia de <a href=\"https:\/\/e-lexia.com\/diccionario-tic\/url\/\" rel=\"noopener\" target=\"_blank\">URL<\/a> amigables. Este ejercicio es necesario y brinda beneficios a la estrategia SEO.<\/p>\n<p>Lo que se busca aqu\u00ed es evitar que los usuarios ingresen a carpetas del sistema (por ejemplo a \u00abwp-includes\u00bb, para el caso de WordPress, o \u00abcomponents\u00bb, para el caso de Joomla) e identifiquen los directorios y ficheros que hay all\u00ed.<\/p>\n<p>La opci\u00f3n m\u00e1s com\u00fan es crear un archivo <code>index.html<\/code> sin contenido y ubicar en la ra\u00edz de cada directorio que se pretende proteger. \u00a1La tarea puede ser engorrosa si existen numerosas carpetas!<\/p>\n<p>Desde el <code>.htaccess<\/code> es posible lograr lo anterior agregando estas l\u00edneas:<\/p>\n<pre>Options -Indexes<\/pre>\n<p>Otra opci\u00f3n es evitar la lista de archivos espec\u00edficos. Por ejemplo, para ocultar ficheros PHP y HTML se agrega esta l\u00ednea:<\/p>\n<pre>IndexIgnore *.php *.html<\/pre>\n<p>La \u00faltima posibilidad, aunque no es muy com\u00fan, es permitir la lista de directorios pero evitar la aparici\u00f3n de archivos. En estos casos se agrega la l\u00ednea<\/p>\n<pre>IndexIngnore *<\/pre>\n<h2>Bloqueo de acceso total y parcial<\/h2>\n<p>\u00bfEst\u00e1n atacando tu web y a\u00fan no se identifican las direcciones IP desde donde se generan estas acciones? Un camino, un tanto dr\u00e1stico pero necesario, es restringir todas las peticiones al sitio.<\/p>\n<p>La l\u00ednea es:<\/p>\n<pre>Deny from All <\/pre>\n<p>Lo que contin\u00faa ahora es permitir accesos puntuales. Por ejemplo, entrada al personal de soporte t\u00e9cnico. Para ello es necesario conocer la direcci\u00f3n IP.<\/p>\n<p>La regla en el <code>.htaccess<\/code> cambiar\u00eda a:<\/p>\n<pre>Order deny, allow\r\nDeny from All\r\nAllow from xxx.xxx.xxx.xxx\r\n<\/pre>\n<p>Las xxx.xxx.xxx.xxx se reemplazan por la direcci\u00f3n IP. Pueden agregarse varias IP duplicando esa \u00faltima l\u00ednea y definiendo otras ubicaciones.<\/p>\n<p>El otro escenario es conocer las IP de los atacantes. En este caso se niega el acceso mediante la instrucci\u00f3n <code>Deny from<\/code>:<\/p>\n<pre>Order deny, allow\r\nAllow from All\r\nDeny from xxx.xxx.xxx.xxx\r\nDeny from xxx.xxx.xxx.yyy<\/pre>\n<p><!-- ASESOR COMUNICATIVO --><\/p>\n<div class=\"destacado-asesor\">\n<div class=\"destacado-asesor__imagen\">\n    <a href=\"https:\/\/e-lexia.com\/contacto.html\"><br \/>\n      <img decoding=\"async\" src=\"https:\/\/e-lexia.com\/blog\/wp-content\/uploads\/2023\/01\/asesor-comunicativo-juancadotcom.png\" alt=\"Juan Carlos Morales S., asesor en comunicaci\u00f3n digital\"><br \/>\n    <\/a>\n   <\/div>\n<div class=\"destacado-asesor__desc\">\n<h2><a href=\"https:\/\/e-lexia.com\/contacto.html\">\u00bfNecesitas asesor\u00eda en comunicaci\u00f3n digital?<\/a><\/h2>\n<p>Dise\u00f1a y optimiza tus proyectos en comunicaci\u00f3n digital, entregando una mejor experiencia a tus usuarios y potenciando el valor de tu marca.<br \/>\n      <a class=\"cta-asesor\" href=\"https:\/\/e-lexia.com\/contacto.html\">Conversemos<\/a>\n     <\/p>\n<\/p><\/div>\n<\/div>\n<h2>Evitar ejecuci\u00f3n de archivos PHP<\/h2>\n<p>Una buena pr\u00e1ctica es evitar que usuarios no autorizados ejecuten ficheros PHP en aquellas carpetas que son susceptibles a ataques de <em>malware<\/em>. En WordPress, por ejemplo, esta acci\u00f3n se realiza en los directorios <code>wp-include<\/code> y <code>wp-content\/uploads<\/code>.<\/p>\n<p>Para lograr lo anterior se debe crear un archivo <code>.htaccess<\/code> con la siguiente instrucci\u00f3n:<\/p>\n<pre>\r\n&lt;Files *.php&gt;\r\ndeny from all\r\n&lt;\/Files&gt;\r\n<\/pre>\n<p>Por \u00faltimo, este archivo se ubica en la ra\u00edz de cada directorio.<\/p>\n<h2>Proteger archivos de configuraci\u00f3n del sistema<\/h2>\n<p>Es com\u00fan que los CMS almacenen informaci\u00f3n sensible en un archivo espec\u00edfico. Por ejemplo, WordPress, en su archivo <code>wp-config.php<\/code>, especifica:<\/p>\n<ul>\n<li>Nombre de la base de datos<\/li>\n<li>Usuario que administra la base de datos<\/li>\n<li>Contrase\u00f1a del usuario anterior<\/li>\n<li>Codificaci\u00f3n de la DB<\/li>\n<li>Prefijo de la DB<\/li>\n<li>Claves de seguridad<\/li>\n<\/ul>\n<p>A trav\u00e9s del <code>.htaccess<\/code> es posible restringir el acceso a ficheros espec\u00edficos.<\/p>\n<p>Siguiendo el ejemplo de WordPress, las l\u00edneas de c\u00f3digo ser\u00edan:<\/p>\n<pre>\r\n&lt;files wp-config.php&gt;\r\norder allow,deny deny from all\r\n&lt;\/files&gt;\r\n<\/pre>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El .htaccess es un archivo robusto y de suma importancia en servidores Apache, pues desde \u00e9l se establecen diferentes reglas de uso y restricci\u00f3n.<\/p>\n<p>Algunos <em>plugins<\/em> escriben, de manera autom\u00e1tica, pol\u00edticas en este archivo. Por ejemplo, Wordfense, un <em>firewall<\/em> para WordPress, anota varias l\u00edneas sobre accesos y restricciones espec\u00edficos y globales.<\/p>\n<p>Sin embargo, para una gesti\u00f3n integral de sitios web es necesario conocer, revisar y afinar manualmente algunas condiciones. Aqu\u00ed se presentaron las m\u00e1s comunes en asuntos de seguridad web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Garantizar la disponibilidad e integridad de la informaci\u00f3n de un sitio web es una de las tareas m\u00e1s cr\u00edticas para generadores y administradores de contenido, tambi\u00e9n conocidos como webmaster. En algunas oportunidades existe el acompa\u00f1amiento de ingenieros web que implementan soluciones que van desde la configuraci\u00f3n del firewall f\u00edsico hasta&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1645,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[42,58],"class_list":["post-2105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-produccion-web","tag-ciberseguridad","tag-politicas","has-post-thumbnail-archive"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/posts\/2105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/comments?post=2105"}],"version-history":[{"count":0,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/posts\/2105\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/media\/1645"}],"wp:attachment":[{"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/media?parent=2105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/categories?post=2105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/e-lexia.com\/blog\/wp-json\/wp\/v2\/tags?post=2105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}