{"id":1935,"date":"2013-05-23T20:59:23","date_gmt":"2013-05-24T01:59:23","guid":{"rendered":"http:\/\/puchunguis.com\/blog\/?p=1935"},"modified":"2013-05-23T21:05:33","modified_gmt":"2013-05-24T02:05:33","slug":"como-instalar-mod_spamhaus-en-apache","status":"publish","type":"post","link":"https:\/\/www.jorgealdana.pro\/blog\/seguridad\/como-instalar-mod_spamhaus-en-apache\/","title":{"rendered":"Como instalar mod_spamhaus en Apache"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/484c2a6d15c399b70beb-b1e2a15a3df201703b71bb9b31acda05.ssl.cf5.rackcdn.com\/2013\/05\/Funny-T-shirt-Designs-6-150x150.jpg\" alt=\"Funny-T-shirt-Designs-6\" width=\"150\" height=\"150\" class=\"alignleft size-thumbnail wp-image-1936\" \/>A modo personal les hago de su conocimiento que tengo varios sitios web y por lo tanto cuento con un servidor dedicado en el cual est\u00e1n alojados. Aquellos que tienen o administran un servidor dedicado saben lo complicado que es poder distinguir entre tr\u00e1fico de rastreadores o personas.<\/p>\n<p>Desde hace meses empece a tener un incremento de \u00abBots\u00bb no deseados en mis sitios que se dedican a copiar mi contenido y publicarlo en alg\u00fan lugar rec\u00f3ndito y perdido como Tristan da Cunha, por ello decid\u00ed hacer algo al respecto.<\/p>\n<ul>\n<li>Lo primero que intent\u00e9 fue <strong>crear un archivo robots.txt<\/strong> bloqueando el acceso a todos esos Bots y d\u00e1ndole permiso solo a los buscadores m\u00e1s confiables, pero esto fue en vano esos Bots dijeron algo como \u00abEs mi primer d\u00eda\u00bb y siguieron entrando a mis sitios, por lo cual lo descart\u00e9.<\/li>\n<li>Lo segund\u00f3 que intent\u00e9 fue <strong>configurar mi <a title=\"ConfigServer Security &amp; Firewall\" href=\"http:\/\/www.configserver.com\/cp\/csf.html\" target=\"_blank\" rel=\"noopener\">CSF (ConfigServer Security &amp; Firewall)<\/a><\/strong> asignando valores m\u00e1s estrictos al CONNLIMIT y CT_INTERVAL, pens\u00e9 en instalar mod_evasive, pero con el CSF es suficiente para m\u00ed por lo que no lo hice y esta acci\u00f3n funcion\u00f3, pero el firewall tambi\u00e9n empez\u00f3 a bloquear a rastreadores permitidos como los de Google por ejemplo, ya que su frecuencia de rastreo es demasiado alta (cerca de 400mil p\u00e1ginas al d\u00eda) por lo que tuve que agregar a mi \u00abWhiteList\u00bb las redes de los buscadores permitidos, pero al final de todo tuve que regresar a mi CSF el valor original ya que NO todos los bloques de IPs son consecutivos para los buscadores.<\/li>\n<li>Lo tercero que intent\u00e9 me funcion\u00f3 durante muchos meses y fue por un fragmento de <strong>c\u00f3digo en PHP que desarroll\u00e9 el cual consiste en la utilizaci\u00f3n de Servicios DNS based Block List (DNSBL)<\/strong>. Estos servicios como su nombre lo indica, son listas que contienen una base de datos de direcciones IP que se encuentran a disposici\u00f3n de las personas que lo requieran y son listas de Spammers o Botnets al cual se obtienen o se consultan por medio de una verificaci\u00f3n DNS. Estas listas son actualizadas de manera constante y con informaci\u00f3n en tiempo real.<\/li>\n<\/ul>\n<p>Hay muchas organizaciones que ofrecen el servicio de DNSBL de manera gratuita por lo que puse manos a la obra y naci\u00f3 lo siguiente:<\/p>\n<p><code><br \/>\nfunction checktheip_bl ( $direc_ip_black, $whitelist, $blacklist )<br \/>\n{<br \/>\nif (in_array($direc_ip_black, $whitelist)){ return true; }<br \/>\nif (in_array($direc_ip_black, $blacklist)){ return false; }<br \/>\n$blacklists = array('b.barracudacentral.org','dnsbl-1.uceprotect.net','dul.dnsbl.sorbs.net','dnsbl.sorbs.net','psbl.surriel.com','cbl.abuseat.org','xbl.spamhaus.org','spam.dnsbl.sorbs.net','http.dnsbl.sorbs.net','new.dnsbl.sorbs.net','web.dnsbl.sorbs.net','dnsbl-2.uceprotect.net','dnsbl-3.uceprotect.net');<br \/>\n$parts = explode('.', $direc_ip_black);<br \/>\n$ip = implode('.', array_reverse($parts)) . '.';<br \/>\nforeach($blacklists as $bl) {<br \/>\n $check = $ip . $bl;<br \/>\n if ($check != gethostbyname($check)) {<br \/>\n $txtx = @fopen(\"blacklist.txt\",\"a+\");<br \/>\n @fwrite($txtx, \"$direc_ip_black \\n\");<br \/>\n @fclose($txtx);<br \/>\n return false;<br \/>\n }<br \/>\n}<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>$direc_ip_black = $_SERVER['REMOTE_ADDR'];<br \/>\nif (checktheip_bl($direc_ip_black, $whitelist, $blacklist)==false){<br \/>\n die('Se ha denegado su acceso');<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Como podr\u00e1n observar utilic\u00e9 muchos servicios como: Sorbs, Barracuda, Spamhaus entre otros, y esto me funcion\u00f3 por mucho tiempo sin embargo hab\u00eda un problema: LENTITUD, el utilizar el DNSBL provoca que las p\u00e1ginas donde se implemente tarden de 2 a 5 segundos m\u00e1s en cargar, por lo que al final tambi\u00e9n tuve que desecharlo.<\/p>\n<p>Sab\u00eda que los DNSBL eran la soluci\u00f3n, pero el problema es que hay que pasar por las librer\u00edas de red hasta la funci\u00f3n gethostbyname de PHP.<\/p>\n<h3>\u00bfComo pod\u00eda solucionarlo?<\/h3>\n<p>La respuesta es sencilla pero no f\u00e1cil, usando los servicios DNSBL a nivel de red y no de procesamiento. \u00bfQu\u00e9 quiero decir? que deb\u00eda encontrar la forma de poder integrar el servicio DNSBL con Apache ya que este es el que proporciona en primera instancia la conectividad. Y fue entonces que encontr\u00e9 \u00abmod_spamhaus\u00bb.<\/p>\n<p><strong>Mod_SpamHaus<\/strong> es un m\u00f3dulo gratuito para el servidor Apache, desarrollado por Luca Ercoli en 2008 y sirve en primera instancia, para proteger a tu servidor contra Spammers o Botnets utilizando el servicio DNSBL de spamhaus.org, por fin una soluci\u00f3n que promete ser la definitiva y sorpresa, poca documentaci\u00f3n.<\/p>\n<p>En fin, decid\u00ed probar y aventurarme hasta poder instalarlo y ahora les paso el tip; he aqu\u00ed los pasos para instalar el \u00abmod_spamhaus\u00bb en un servidor Linux.<\/p>\n<p>Paso 1:<br \/>\nDescarga el \u00ab<strong>mod_spamhaus<\/strong>\u00bb desde tu servidor, si tienes interfaz gr\u00e1fica b\u00e1jalo desde \t<a href=\"http:\/\/sourceforge.net\/projects\/mod-spamhaus\/\" target=\"_blank\" rel=\"noopener\">http:\/\/sourceforge.net\/projects\/mod-spamhaus\/<\/a><br \/>\n si no por l\u00ednea de comandos:<\/p>\n<p><strong>wget http:\/\/www.puchunguis.com\/blog\/mod-spamhaus-0.7.tar.gz<\/strong><\/p>\n<p>Paso 2:<br \/>\nEn tu consola, dir\u00edgete a la carpeta donde almacenaste el archivo y descomprime el contenido del paquete:<\/p>\n<p><strong>tar zxvf mod_evasive_1.10.1.tar.gz<\/strong><\/p>\n<p>Paso 3:<br \/>\nIngresa a la carpeta descomprimida:<\/p>\n<p><strong>cd \/mod-spamhaus\/src\/<\/strong><\/p>\n<p>Paso 4:<br \/>\nEdita el archivo mod_spamhaus.c mediante nano o vim, lo que tu desees:<\/p>\n<p><strong>nano mod_spamhaus.c<\/strong><\/p>\n<p>Paso 5:<br \/>\nEn la l\u00ednea 97 encontrar\u00e1s lo siguiente:<br \/>\ndnshost=\u00bbsbl-xbl.spamhaus.org\u00bb;<\/p>\n<p>Deber\u00e1s reemplazarlo por:<br \/>\n<strong>dnshost=\u00bbzen.spamhaus.org\u00bb;<\/strong><\/p>\n<p>Esto debido a que ZEN a venido a reemplazar a SBL-XBL y el archivo por ser del a\u00f1o 2008 no trae por default esta configuraci\u00f3n.<\/p>\n<p>En fin guarda los cambios (si usaste nano con CTRL+X).<\/p>\n<p>Paso 6:<br \/>\nInstalaremos el m\u00f3dulo como extensi\u00f3n de apache usando apxs (APache eXtenSion) con el siguiente comando:<\/p>\n<p><strong>\/usr\/sbin\/apxs -i -a -c mod_spamhaus.c<\/strong><\/p>\n<p>Paso 7:<br \/>\nGeneramos un archivo de configuraci\u00f3n para nuestro nuevo m\u00f3dulo mediante nano, vim o el editor que gustes, cabe mencionar que deber\u00e1s crear este archivo en el folder correspondiente a los archivos de configuraci\u00f3n de tus m\u00f3dulos, en mi caso es el siguiente:<\/p>\n<p><strong>nano \/etc\/httpd\/conf\/extra\/httpd-spamhaus.conf<\/strong><\/p>\n<p>Paso 8:<br \/>\nEscribimos los par\u00e1metros de configuraci\u00f3n de nuestro nuevo m\u00f3dulo y guardamos:<\/p>\n<p><strong><br \/>\n&lt;IfModule mod_spamhaus.c&gt;<br \/>\nMS_METHODS POST,PUT,OPTIONS,CONNECT<br \/>\nMS_WhiteList \/etc\/httpd\/mod_spamhaus.wl<br \/>\nMS_CacheSize 256<br \/>\n&lt;\/IfModule&gt;<br \/>\n<\/strong><\/p>\n<p>Paso 9:<br \/>\nEdita el archivo de configuraci\u00f3n de Apache para agregar el nuevo m\u00f3dulo y este arranque con el servicio en mi caso mi archivo de configuraci\u00f3n est\u00e1 aqu\u00ed:<\/p>\n<p><strong>nano \/etc\/httpd\/conf\/httpd.conf<\/strong><\/p>\n<p>Dir\u00edgete al final del archivo e ingresa lo siguiente:<\/p>\n<p><strong>Include conf\/extra\/httpd-evasive.conf<\/strong><\/p>\n<p>No omito mencionarte que en tu caso pudieras tener la carpeta de configuraci\u00f3n de tus m\u00f3dulos en otra ubicaci\u00f3n, por lo que si este es tu caso deber\u00e1s usar la direcci\u00f3n donde creaste el archivo (Paso 7).<\/p>\n<p>Paso 10:<br \/>\nPara finalizar solo deber\u00e1s reiniciar tu servicio de Apache:<br \/>\n<strong>service httpd restart<\/strong><\/p>\n<h3>Conclusiones<\/h3>\n<p>He empezado a usar este m\u00f3dulo desde hace una semana y la velocidad es mucho menor que mi m\u00e9todo mediante PHP y hace su trabajo al revisar los logs de Apache not\u00e9 registros como los siguientes:<\/p>\n<p>[Thu May 23 02:35:43 2013] [crit] [client 121.205.241.61] mod_spamhaus: address 61.241.205.121.zen.spamhaus.org is blacklisted. Deny connection to www.****.com\/******\/index.php<\/p>\n<p>Por lo que si te molestan los BOTS y SPAMMERs del Internet, esto pudiera ayudarte.<\/p>\n<p>Si te interesa la seguridad, tambi\u00e9n puedes instalar mod_security y mod_evade, y puedes <a href=\"https:\/\/www.jorgealdana.pro\/blog\/2011\/11\/%C2%BFcomo-proteger-a-tu-servidor-de-ataques-ddos-si-no-tienes-recursos\/\" target=\"_blank\">protegerte de los ataques DDOS con Cloudflare<\/a><\/p>\n<p>Saludos a todos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A modo personal les hago de su conocimiento que tengo varios sitios web y por lo tanto cuento con un servidor dedicado en el cual est\u00e1n alojados. Aquellos que tienen o administran un servidor dedicado saben lo complicado que es poder distinguir entre tr\u00e1fico de rastreadores o personas. Desde hace meses empece a tener un incremento de \u00abBots\u00bb no deseados en mis sitios que se dedican a copiar mi contenido y publicarlo en alg\u00fan lugar rec\u00f3ndito y perdido como Tristan da Cunha, por ello decid\u00ed hacer algo al respecto. Lo primero que intent\u00e9 fue crear un archivo robots.txt bloqueando el <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,2937],"tags":[2938,2940,2948,12,2939],"class_list":["post-1935","post","type-post","status-publish","format-standard","hentry","category-seguridad","category-servidores","tag-botnet","tag-dnsbl","tag-seguridad","tag-spam","tag-spamhaus"],"_links":{"self":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/1935","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/comments?post=1935"}],"version-history":[{"count":5,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions"}],"predecessor-version":[{"id":1938,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/posts\/1935\/revisions\/1938"}],"wp:attachment":[{"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/media?parent=1935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/categories?post=1935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jorgealdana.pro\/blog\/wp-json\/wp\/v2\/tags?post=1935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}