{"id":723,"date":"2013-04-14T18:55:52","date_gmt":"2013-04-15T00:55:52","guid":{"rendered":"http:\/\/www.lastdragon.net\/?p=723"},"modified":"2013-04-14T19:07:22","modified_gmt":"2013-04-15T01:07:22","slug":"paginas-web-virtualmente-inhackeables","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=723","title":{"rendered":"P\u00e1ginas web virtualmente inhackeables"},"content":{"rendered":"<p>El titulo es algo pretencioso, porque todos sabemos que no hay nada unbreakable aunque para la mayor\u00eda, la gran mayor\u00eda de los ataques y atacantes si ser\u00e1 as\u00ed, solo espero que mis amigos programadores que son muchos no se enojen por lo siguiente. Si estos consejos se aplicaran en la mayor\u00eda de las paginas y sistemas, ser hackers seria aburrido, no tendr\u00edan patio de juego, no tendr\u00edan que atacar. Si esto se aplicara matar\u00eda a todos los pseudo hackers. solo quedaria un redusido grupo de gente realmente experta<\/p>\n<p>Existen muchas formas de endurecer la seguridad de un servidor, diferentes formas, para diferentes servicios, correo, vpn, ftp, pero ahora hablare solo de WEB<\/p>\n<p>Hoy le\u00ed en el Twitter sobre <a href=\"http:\/\/blog.segu-info.com.ar\/2013\/04\/ataque-distribuido-por-fuerza-bruta.html\">una botnet que infecta sitios con WordPress, los vuelve zombies y a su vez atacan otros sitios web<\/a>. Me doy cuenta que en lugar de que estemos mejor con administradores m\u00e1s preparados, estamos peor que antes. Lo que a continuaci\u00f3n escribo era una verdad que ya sab\u00eda desde 1997 y que no ha perdido veracidad hasta hoy 14 de abril de 2013  <\/p>\n<p>Dicen que WordPress es inseguro, \u00bf Muy inseguro ? dicen que es inseguro pero yo lo uso y los hechos dicen que nunca he sido hackeado desde que lo uso, es mas desde el 24 de enero del 2001, en 12 a\u00f1os jam\u00e1s he sido hackeado y eso que a veces relajo la seguridad del sitio y desaf\u00edo a algunos grupos a hackearlo abiertamente. Es m\u00e1s si ocurriera, que tan valido seria el hackeo. Pr\u00e1cticamente tengo que dejar la puerta abierta, pr\u00e1cticamente tengo que darles el root. \u00bfContar\u00eda como hackeo?<\/p>\n<p>Espero que estos consejos que no son m\u00e1s que sentido com\u00fan ayuden a muchos, especialmente a administradores de sitio de gobierno a reforzar la seguridad de sus sitios.<\/p>\n<p>Mi primer consejo es.<\/p>\n<p><strong>1 ) Nunca conf\u00edes en el programador<\/strong><\/p>\n<p>Administradores de servidores, nunca conf\u00eden en un programador, la visi\u00f3n de un programador no est\u00e1 orientada a la seguridad. Su visi\u00f3n est\u00e1 orientada a VISTAS, MODELO DE NEGOCIO y CONTROLADORES, No drivers, CONTROLADORES son conceptos de programaci\u00f3n \u201cmoderna\u201d, La mayor\u00eda de los programadores no entiende de seguridad, conf\u00edan su seguridad a FrameWorks, los frameworks les dicen que est\u00e1n seguros y no saben por qu\u00e9 est\u00e1n seguros. Lo creen como un acto de fe, pero un administrador de servidores debe ser ateo. La FE es para el que no entiende una explicaci\u00f3n racional.<\/p>\n<p><a href=\"https:\/\/www.lastdragon.net\/?p=723\">NUNCA CONFIES EN UN PROGRAMADOR<\/a><\/p>\n<p>Los CMS como WordPress, PHP-Nuke, Joomla, no se crearon de la nada, no son creados espont\u00e1neamente, todos estos sistemas fueron creados por programadores y recuerda el primer consejo, <strong>nunca conf\u00edes en un programador<\/strong>.<\/p>\n<p><strong>2 )  Servidor WEB<\/strong><\/p>\n<p>Apache, NginX httpd ligth, etc. Todos son exactamente igual, aunque te quieran vender que uno es mejor que otro. Todo es igual, la diferencia es que uno trae N cantidad de m\u00f3dulos y el otro no. Pero si al que no tiene m\u00f3dulos le pones los mismos que el que si trae por default ser\u00e1 exactamente igual, igual de pesado, igual en su tiempo de reacci\u00f3n. Usa el que te sea c\u00f3modo. Solo que tambi\u00e9n usa tu sentido com\u00fan.<\/p>\n<p>Un servidor WEB debe sin duda despachar p\u00e1ginas, no es un FTP, no debe tener activado los m\u00e9todos, delete, put.<\/p>\n<p>Arrancar un servidor WEB como root.<\/p>\n<p>El puerto 80 TCP conocido como http, desgraciadamente el puerto 80 TCP solo puede abrirlo root, un servidor WEB que se respete debe ser capaz de abrir el puerto 80 con root y despu\u00e9s lanzar un hilo baj\u00e1ndolo a UID de otro usuario sin privilegios, incluso cada VHOST deber\u00eda ser un UID diferente para que nunca haya hackeos masivos, el problema es que de entrada el proceso ra\u00edz corre como root, por eso puede abrir el puerto 80. El servidor WEB tambi\u00e9n es un programa y la regla m\u00e1xima y consejo n\u00famero 1 es, rep\u00edtelo\u2026. NUNCA CONFIES EN UN PROGRAMADOR.<\/p>\n<p>La mayor\u00eda de los supuestos hackers son ni\u00f1os tarados que solo saben \u201chackear\u201d usando SQL inyecci\u00f3n, en su vida han o\u00eddo de alg\u00fan otro tipo ataque como Buffers Overflows y cosas m\u00e1s complicadas. Sin embargo habr\u00e1 quienes de la vieja escuela si sepan esto. Recordemos que el servicio WEB inicia como root para abrir el puerto 80, si existe alguna forma de explotar esto, un verdadero hackers encontrara la forma de tomar root. No le des la oportunidad de tomarlo. Inicia tu servidor WEB con un usuario sin privilegios, el problema es que obviamente no podr\u00e1 abrir el puerto 80 TCP. No importa. Configura tu servidor WEB para funcionar con puertos que no requieren permisos de root, los puertos root son del 1 al 1024, configura tu servidor WEB en el 1025 o en adelante. 8080 TCP, 8081, el que gustes. Hecho esto, por medio de tu firewall desv\u00eda todo el trafico 80 TCP al puerto que hayas designado para servidor WEB. De esta forma los clientes como Firefox, internet Explorer, chrome y otros podr\u00e1n seguir entrando a tu p\u00e1gina WEB como si nunca hubieras cambiado el puerto y tu servidor WEB jam\u00e1s tendr\u00e1 un hilo maestro con root.<\/p>\n<p><strong>3) Sistema de archivos para tu p\u00e1gina WEB<\/strong><\/p>\n<p>Con tu servidor WEB sin privilegios de ning\u00fan tipo, lo siguiente es evitar que un atacante pueda modificar tus archivos.  La mayor\u00eda de los novatos comenten el error de asignarle el mismo usuario con el que corre el servidor web a los archivos, directorios o carpetas. La mayor\u00eda de los CMS lo piden para configurar, pero una vez configurado esto ya no tiene m\u00e1s sentido.<\/p>\n<p>Cambia el propietario de tus archivos a root, \u00bf por qu\u00e9 no a otro usuario ? por que pueden ganar acceso con otro usuario y podr\u00edan hackearte. Pero si ganan acceso con root, el hackeo fue hecho desde antes, solo que no lo sab\u00edas y si tienen root da igual que permiso de usuario tengan.<\/p>\n<p>Aseg\u00farate que tus archivos y tus carpetas solo puedan ser modificados por root y solo le\u00edda por todos los dem\u00e1s.<\/p>\n<p>Muchos CMS como wordpress permiten subir archivos, si pueden subir archivos pueden sobrescribir archivos y recuerda, JAMAS CONFIES EN UN PROGRAMADOR. Si el programador falla en sus medidas de seguridad. No importara, pues no tiene permiso de escribir en ninguna parte y por lo tanto no podr\u00e1 modificar tu p\u00e1gina WEB<\/p>\n<p><strong>4) Base de datos<\/strong><\/p>\n<p>Los programadores novatos e incluso los administradores de sitios novatos usan un solo usuario de base de datos, cualquier motor de base de datos que se respete maneja usuarios y estos usuarios pueden tener ACL aka Listas de acceso. El m\u00e1s usado para desarrollo WEB es MySQL y MySQL soporta perfectamente ACL<\/p>\n<p>Crea N cantidad de usuarios para un mismo sitio WEB, tantos como necesites, haz tu an\u00e1lisis. Por ejemplo WordPress debe tener al menos 2 usuarios.<\/p>\n<p>Cuando configuras WordPress solo te pide uno, \u00bf por que ? por que los programadores de wordpress y muchos CMS son est\u00fapidos. Usan el mismo usuario de la DB para los visitantes como para las conexiones administrativas. Por eso te lo repetir\u00e9 de nuevo, NUNCA CONFIES EN EL PROGRAMADOR.<\/p>\n<p>En que universo el sentido com\u00fan dicta que un usuario de DB debe tener los permisos para insertar del lado del cliente que viene a visitar tu pagina WEB, solo le estas dando la oportunidad de hacer SQL Inyecci\u00f3n. <\/p>\n<p>Tomemos el caso de WordPress<\/p>\n<p>\u00bf Que necesita hacer un visitante. ?<\/p>\n<p>\u00bfUn visitante escribe art\u00edculos?<br \/>\nNo en la mayor\u00eda de los casos, los wordpress son personales y solo el autor escribe en el.<br \/>\n\u00bfUn visitante escribe comentario?<br \/>\nSi, en la mayor\u00eda de los casos SI.<\/p>\n<p>\u00bf Que hacer ?<\/p>\n<p>La tabla de art\u00edculos debe ser de solo lectura, solo deben permitirse los selects, la tablas de comentarios deben poder escribir, ah\u00ed se debe permitir los inserts, pero solo eso. No updates, no delete, ni nada m\u00e1s que un simple y sencillo insert<\/p>\n<p>\u00bf Que necesita hacer un autor de un sitio WordPress ?<\/p>\n<p>El autor si debe poder hacer lo que quiera, borrar, modificar, escribir, ETC, pero por sentido com\u00fan, esto lo har\u00e1 con otra cuenta de usuario de MySQL ligada a su portal y a las tablas que interesa que pueda modificar. Con otra instancia del portal WordPress, un clon del portal que solo es accesible para el autor delimit\u00e1ndolo a una red o incluso a una sola ip<\/p>\n<p>Este sencillo an\u00e1lisis a WordPress lo puedes aplicar para otros CMS o para desarrollos privados, sean WEB o Apps. Analiza y toma medidas<\/p>\n<p><strong>5) El Internet, no permitas que te usen para atacar otros sitios<\/strong>.<\/p>\n<p>En la mayor\u00eda de los casos un servidor WEB recibe conexiones y env\u00eda datos por conexiones que un  cliente remoto abri\u00f3. Nunca las conexiones proceden de INICIO del servidor WEB hacia internet. Si esto en la GRAN, GRAN, GRAN mayor\u00eda de los casos es as\u00ed que no tiene sentido permitir que un servidor WEB inicie una conexi\u00f3n a otro servidor WEB, con tu firewall bloquea cualquier conexi\u00f3n saliente por el puerto 80 TCP y en el remoto caso de que realmente necesites iniciar una conexi\u00f3n desde el servidor, traza tu ruta a que host especifico debe permit\u00edrsele llegar a esa conexi\u00f3n y fuera de esa \u201clista blanca\u201d no debe poder realizar conexiones a ning\u00fan lado<\/p>\n<p><strong>6) Desnuda a tu atacante y mitiga DDoS<\/strong><\/p>\n<p>Muchos sitios que son hackeados son paginas de gobierno y muchos son gobiernos locales, muchas empresas, son empresas con un mercado local. Debes preguntarte lo siguiente, en serio a alguien en china le importa lo que el presidente municipal de un pueblo olvidado de Oaxaca, Tabasco, Yucat\u00e1n, Quer\u00e9taro o cualquier otro estado de la republica; tenga que decir.<\/p>\n<p>No la verdad es que a veces lo que dicen en la p\u00e1gina de gobierno no le importa ni a sus propios ciudadanos. Para lo \u00fanico que sirven esos sitios es para que ataques lamers y lamers en si ganen fama ya que los medios dan difusi\u00f3n del ataque como si fuera la gran cosa.<\/p>\n<p>Si a sus propios ciudadanos no les importa, porque le habr\u00eda de importar a alguien en China, Jap\u00f3n o cualquier otro pa\u00eds. No permitas conexiones de lugares que no necesitan saber de ti, en el caso de p\u00e1ginas de gobierno. Lo ideal es que solo permite conexiones de tu estado, pero siendo m\u00e1s flexibles, solo permite conexiones procedentes de M\u00e9xico, \u00bfno sabes cuales ips permitir? Te lo voy a facilitar, descarga aqu\u00ed la <a href=\"https:\/\/www.lastdragon.net\/misarchivos\/listaipmex.txt\">lista de redes ips homologadas mexicanas<\/a>.<\/p>\n<p>Este consejo se llama desnuda al atacante, \u00bfPor qu\u00e9? Porque la mayor\u00eda de los atacantes son cobardes, intentaran usar Tor u otras conexiones que conmutar sus ips, la mayor\u00eda de esas ips son de Francia y otros pa\u00edses debido al onion routing del tor. Si tu solo permites conexiones nacionales, si un atacante quiere hacerlo, tendr\u00e1 que quitarse el Tor, tendr\u00e1 que dar \u201cla cara\u201d y su ip que podr\u00e1s bloquear con un solo click<\/p>\n<p><strong>Como mitigas el DDoS<\/strong><\/p>\n<p>Los DDoS importantes son hechos por grupos de personas o botnets en el mundo, la gran mayor\u00eda del ataque vendr\u00e1 del extranjero, si tus conexiones solo permiten trafico nacional, tal vez ni siquiera te enteres que estabas bajo ataque DDoS haciendo quedar en rid\u00edculo a muchos hackers<\/p>\n<p>Existen muchas m\u00e1s opciones para hacer tan dif\u00edcil un ataque a tus sitios pero ya con estos consejos puedes hacerle la vida infernal a pseudo hackersitos.<\/p>\n<p>La seguridad se aplica con sentido com\u00fan, usa tu sentido com\u00fan aunque sea el menos com\u00fan de los sentidos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El titulo es algo pretencioso, porque todos sabemos que no hay nada unbreakable aunque para la mayor\u00eda, la gran mayor\u00eda de los ataques y atacantes si ser\u00e1 as\u00ed, solo espero que mis amigos programadores que son muchos no se enojen por lo siguiente. Si estos consejos se aplicaran en la mayor\u00eda de las paginas y&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4],"tags":[],"class_list":["post-723","post","type-post","status-publish","format-standard","hentry","category-consultoria-y-manuales","category-hackers-and-tools"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=723"}],"version-history":[{"count":0,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/723\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}