<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>to live is to die &#187; Firewall</title>
	<atom:link href="http://www.artegrafico.net/blog/category/linux-unix/firewall/feed" rel="self" type="application/rss+xml" />
	<link>http://www.artegrafico.net/blog</link>
	<description>artegrafico.net</description>
	<lastBuildDate>Sat, 08 May 2010 23:52:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creando un Script en PHP para chequear IPs en Listas negras (Blacklist)</title>
		<link>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html</link>
		<comments>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:20:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[dnsbl]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamhaus]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=573</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Una <strong>lista negra</strong> (<strong>black list</strong>) es una lista donde se registran direcciones IPs que generan SPAM ya sea de forma voluntaria o involuntaria. Estas listas aunque las hay de pago suelen ser libres y cualquiera puede añadir una IP inocente  de manera malintencionada por lo que también  podemos solicitar ser removidos de ellas si hemos sido incluidos.</p>
<p>Tanto chequear diferentes tipos de webs  con listas negras he decidido crear este pequeño <strong>Script en PHP</strong> que nos será de utilidad ya que comprueba una lista personalizada de <strong>Black List </strong>y nos devuelve el resultado en pantalla o a un email si se lo indicamos. Es totalmente personalizable y muy sencillo de modificar.</p>
<pre class="brush:c">if ($_POST['ip']) { $ip = $_POST['ip']; } 

function blacklist($ip) {
   $dnsbl=array("b.barracudacentral.org"=&gt;"",
   "bl.deadbeef.com"=&gt;"",
   "bl.emailbasura.org"=&gt;"",
   "bl.spamcannibal.org"=&gt;"",
   "bl.spamcop.net"=&gt;"Blacklist de Spamcop",
   "blackholes.five-ten-sg.com"=&gt;"",
   "blacklist.woody.ch"=&gt;"",
   "bogons.cymru.com"=&gt;"",
   "cbl.abuseat.org"=&gt;"Composite Blocking List)",
   "cdl.anti-spam.org.cn"=&gt;"",
   "combined.abuse.ch"=&gt;"",
   "combined.rbl.msrbl.net"=&gt;"",
   "db.wpbl.info"=&gt;"",
   "dnsbl-1.uceprotect.net"=&gt;"",
   "dnsbl-2.uceprotect.net"=&gt;"",
   "dnsbl-3.uceprotect.net"=&gt;"lista de pago",
   "dnsbl.ahbl.org"=&gt;"",
   "dnsbl.cyberlogic.net"=&gt;"",
   "dnsbl.inps.de"=&gt;"",
   "dnsbl.njabl.org"=&gt;"",
   "dnsbl.sorbs.net"=&gt;"rangos dinámicos",
   "drone.abuse.ch"=&gt;"",
   "drone.abuse.ch"=&gt;"",
   "duinv.aupads.org"=&gt;"",
   "dul.dnsbl.sorbs.net"=&gt;"rangos dinámicos",
   "dul.ru"=&gt;"",
   "dyna.spamrats.com"=&gt;"rangos dinámicos",
   "dynip.rothen.com"=&gt;"",
   "fl.chickenboner.biz"=&gt;"",
   "http.dnsbl.sorbs.net"=&gt;"",
   "images.rbl.msrbl.net"=&gt;"",
   "ips.backscatterer.org"=&gt;"",
   "ix.dnsbl.manitu.net"=&gt;"",
   "korea.services.net"=&gt;"Block Asian spam (Korea)",
   "misc.dnsbl.sorbs.net"=&gt;"",
   "noptr.spamrats.com"=&gt;"",
   "ohps.dnsbl.net.au"=&gt;"",
   "omrs.dnsbl.net.au"=&gt;"",
   "orvedb.aupads.org"=&gt;"",
   "osps.dnsbl.net.au"=&gt;"",
   "osrs.dnsbl.net.au"=&gt;"",
   "owfs.dnsbl.net.au"=&gt;"",
   "owps.dnsbl.net.au"=&gt;"",
   "phishing.rbl.msrbl.net"=&gt;"",
   "probes.dnsbl.net.au"=&gt;"",
   "proxy.bl.gweep.ca"=&gt;"",
   "proxy.block.transip.nl"=&gt;"",
   "psbl.surriel.com"=&gt;"Passive Spam Block List",
   "rbl.interserver.net"=&gt;"",
   "rdts.dnsbl.net.au"=&gt;"",
   "relays.bl.gweep.ca"=&gt;"",
   "relays.bl.kundenserver.de"=&gt;"",
   "relays.nether.net"=&gt;"",
   "residential.block.transip.nl"=&gt;"rangos dinámicos",
   "ricn.dnsbl.net.au"=&gt;"",
   "rmst.dnsbl.net.au"=&gt;"",
   "short.rbl.jp"=&gt;"",
   "smtp.dnsbl.sorbs.net"=&gt;"",
   "socks.dnsbl.sorbs.net"=&gt;"",
   "spam.abuse.ch"=&gt;"",
   "spam.dnsbl.sorbs.net"=&gt;"",
   "spam.rbl.msrbl.net"=&gt;"",
   "spam.spamrats.com"=&gt;"",
   "spamlist.or.kr"=&gt;"",
   "spamrbl.imp.ch"=&gt;"",
   "t3direct.dnsbl.net.au"=&gt;"",
   "tor.ahbl.org"=&gt;"",
   "tor.dnsbl.sectoor.de"=&gt;"",
   "torserver.tor.dnsbl.sectoor.de"=&gt;"",
   "ubl.lashback.com"=&gt;"Tracking Unsubscribe Abuse",
   "ubl.unsubscore.com"=&gt;"",
   "virbl.bit.nl","virus.rbl.jp"=&gt;"",
   "virus.rbl.msrbl.net"=&gt;"",
   "web.dnsbl.sorbs.net"=&gt;"",
   "wormrbl.imp.ch"=&gt;"",
   "sbl.spamhaus.org"=&gt;"Spamhaus Block List",
   "xbl.spamhaus.org"=&gt;"Spamhaus Exploits Block List",
   "pbl.spamhaus.org"=&gt;"Spamhaus Policy Block List",
   "zen.spamhaus.org"=&gt;"Spamhaus (Combinación Spamhaus)",
   "zombie.dnsbl.sorbs.net"=&gt;"",
   "1.apews.org"=&gt;"Anon. Postmasters Early Warning System",
   "2.apews.org"=&gt;"Anon. Postmasters Early Warning System",
   "bulk.rhs.mailpolice.com"=&gt;"domains",
   "porn.rhs.mailpolice.com"=&gt;"pornograf sites",
   "fraud.rhs.mailpolice.com"=&gt;"phising",
   "block.rhs.mailpolice.com"=&gt;"bulk y fraud",
   "dynamic.rhs.mailpolice.com"=&gt;"dinamicas",
   "adv.rhs.mailpolice.com"=&gt;"email marketing",
   "webmail.rhs.mailpolice.com"=&gt;"webmails services",
   "adult.rhs.mailpolice.com"=&gt;"adult sites, blogs etc",
   "redir.rhs.mailpolice.com"=&gt;"sites redirigidos");

if ($_POST['ip']) {
   $parte=explode(".",$ip);
   $rip=$parte[3].".".$parte[2].".".$parte[1].".".$parte[0];

   foreach ($dnsbl as $key=&gt;$value){
      if (checkdnsrr($rip.".".$key . '.',"A")) { $lista[]=$key." - ".$value; }
   }

   echo "&lt;ul&gt;";
   foreach ($lista as $server){
      echo "&lt;li&gt;".$server."&lt;/li&gt;";
      $bl .= $server."\n";
   }
   echo "&lt;/ul&gt;";  

   # ---------------------------------------------
   # - enviamos un reporte a un email.
   if ($_POST['report'] == "on") {
      $email = "su@email";
      $headers = "MIME-Version: 1.0\n";
      $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
      $headers .= "From: $email \r\n";
      $asunto = "Report Blacklist: $ip";
      $txt = "La ip $ip esta listada en:\n\n".$bl;
      mail($email, $asunto, $txt, $headers);
   } # fin reporte
   # ---------------------------------------------

} # fin if
} // fin funcion listas negras

if ($_POST['ip']) {
   echo "Su IP: &lt;strong&gt;".getenv('REMOTE_ADDR')." &lt;/strong&gt;esta en las siguientes listas negras:&lt;p /&gt;";
   echo blacklist($ip);
}</pre>
<p>El formulario en HTML quedaría de la siguiente forma:</p>
<pre class="brush:c">&lt;form method="post"&gt;
 &lt;input name="ip" type="text" /&gt;
 &lt;input name="report" type="checkbox" /&gt; Enviar reporte por email.
 &lt;input type="submit" value="Comprobar" /&gt;
&lt;/form&gt;</pre>
<p>Para una demo del script:<br />
<a href="http://www.artegrafico.net/laboratorio/php/blacklist.php">http://www.artegrafico.net/laboratorio/php/blacklist.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Shell Script para incluir/actualizar &#8220;drop.lasso&#8221; de Spamhaus usando iptables en Gentoo Linux</title>
		<link>http://www.artegrafico.net/blog/shell-script-para-incluir-actualizar-drop-lasso-spamhaus-en-iptables-en-gentoo-linux.html</link>
		<comments>http://www.artegrafico.net/blog/shell-script-para-incluir-actualizar-drop-lasso-spamhaus-en-iptables-en-gentoo-linux.html#comments</comments>
		<pubDate>Thu, 14 May 2009 21:37:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[drop.lasso]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamhaus]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=423</guid>
		<description><![CDATA[Este es un pequeño Shell Script para añadir y actualizar rangos de IPs de la lista drop.lasso de Spamhaus.org y que ha determinado como principales emisores de SPAM en Internet.
# declaramos las variables que vamos a usar.
IPTABLES="/sbin/iptables"
SPAM_URL_spamhaus="http://www.spamhaus.org/drop/drop.lasso"
SPAM_FILE_TMP="/home/backup/scripts/spamhaus.ips"
SPAM_TABLE_spamhaus="Spamhaus"
SPAM_IPS=$(cat $SPAM_FILE_TMP &#124; grep -iE "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" &#124; awk -F\; '{ print $1 }')

# borramos el fichero de ips anterior [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un pequeño <strong>Shell Script </strong>para añadir y actualizar rangos de <strong>IPs </strong>de la lista <a href="http://www.spamhaus.org/drop/drop.lasso">drop.lasso</a> de <a href="http://www.spamhaus.org/">Spamhaus.org</a> y que ha determinado como principales emisores de SPAM en Internet.</p>
<pre class="brush:bash"># declaramos las variables que vamos a usar.
IPTABLES="/sbin/iptables"
SPAM_URL_spamhaus="http://www.spamhaus.org/drop/drop.lasso"
SPAM_FILE_TMP="/home/backup/scripts/spamhaus.ips"
SPAM_TABLE_spamhaus="Spamhaus"
SPAM_IPS=$(cat $SPAM_FILE_TMP | grep -iE "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | awk -F\; '{ print $1 }')

# borramos el fichero de ips anterior si existe.
rm -f $SPAM_FILE_TMP
# descargamos la ultima actualización realizada por spamhaus.org.
# -q no muestra ningún log de registro | -c para continuar la descarga si se cortara.
wget -qc $SPAM_URL_spamhaus -O $SPAM_FILE_TMP

# creamos las lista de ips.
$IPTABLES -n -L INPUT | grep -q "$SPAM_TABLE_spamhaus"

if [ $? -eq 0 ] ; then
   # borramos todas las reglas que contiene la cadena spamhaus.
   $IPTABLES -F $SPAM_TABLE_spamhaus
else
   # crea una nueva cadena llamada spamhaus si no existe.
   $IPTABLES -N $SPAM_TABLE_spamhaus
   # añade la regla spamhaus para todo el tráfico entrante.
   $IPTABLES -A INPUT -j $SPAM_TABLE_spamhaus
fi
   # con RETURN salta el objetivo si existe.
   $IPTABLES -A $SPAM_TABLE_spamhaus -j RETURN

# recorremos la lista de IPs para ir incluyéndolas una por una a iptables.
for IP in $SPAM_IPS
do
    # inserta una nueva regla a la cadena con la opciones especificadas.
    # -p all (bloquea el trafico recibido a través de los protocolos icmp, tcp, udp)
    # -s ip (ip origen del paquete)
    # -j DROP (elimina el paquete recibido)
    $IPTABLES -I $SPAM_TABLE_spamhaus -p all -s $IP -j DROP
done</pre>
<p><span style="color: #808080;">&#8220;El Shell Script ha sido probado correctamente en Gentoo y Fedora Core 5&#8243;</span></p>
<p>Como veis es bastante sencillo y probablemente mejorable … luego solo tendríamos que añadirlo a nuestro crontab para que se ejecute periódicamente.<br />
<a href="http://www.artegrafico.net/laboratorio/shell-scripts/iptables-spamhaus.sh">Descargar el ejemplo.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/shell-script-para-incluir-actualizar-drop-lasso-spamhaus-en-iptables-en-gentoo-linux.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto fail2ban en Gentoo Linux</title>
		<link>http://www.artegrafico.net/blog/howto-fail2ban-en-gentoo-linux.html</link>
		<comments>http://www.artegrafico.net/blog/howto-fail2ban-en-gentoo-linux.html#comments</comments>
		<pubDate>Wed, 15 Apr 2009 16:10:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[proftpd]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=411</guid>
		<description><![CDATA[Fail2Ban es un framework escrito en Python, el cual es capaz de correr en sistemas Linux y con firewalls ya funcionando como iptables, TCP Wrapper, etc &#8230; Es libre y se distribuye bajo licencia GNU. Su objetivo es leer logs del sistema y banear aquellas IPs que intentan loguear en el sistema un número determinado [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Fail2Ban </strong>es un framework escrito en <a href="http://www.python.org/">Python</a>, el cual es capaz de correr en sistemas Linux y con firewalls ya funcionando como iptables, TCP Wrapper, etc &#8230; Es libre y se distribuye bajo licencia GNU. Su objetivo es leer logs del sistema y banear aquellas IPs que intentan loguear en el sistema un número determinado de veces. Para instalarlo necesitamos tener <a href="http://www.python.org/">Python </a><strong>2.3 o superior</strong>.</p>
<p><strong>Instalación y ficheros de configuración.</strong></p>
<pre class="brush:c"># Como ya sabemos las instalaciones en Gentoo Linux son sencillas.
emerge fail2ban.
# el fichero de configuración esta localizado en
/etc/fail2ban/fail2ban.conf
# el fichero donde configuraremos los parámetros a configurar está en
/etc/fail2ban/jail.conf
# y los directorios de acciones y filtros a realizar en
/etc/fail2ban/action.d/
/etc/fail2ban/filter.d/</pre>
<pre class="brush:c"># del fichero de configuración<strong> fail2ban.conf </strong>lo más importante es indicarle la ruta donde se guardará el log.
logtarget = /var/log/fail2ban.log
# el tiempo en segundos de baneo a una IP.
bantime = 600
# el número de fallos antes de ejecutar un Ban a IP.
maxretry = 3</pre>
<p>A continuación muestro 2 ejemplos del fichero <strong>jail.conf</strong> para comprobar los accesos en los protocolos <strong>SSH </strong>y <strong>FTP </strong>usando <strong>IPtables</strong>.</p>
<pre class="brush:c">[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois[name=SSH, dest=su@email.net]
logpath  = /var/log/auth.log
maxretry = 3

[proftpd-iptables]

enabled  = true
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
mail-whois[name=ProFTPD, dest=su@email.net]
logpath  = /var/log/auth.log
maxretry = 3</pre>
<p><strong>true </strong>indica que deseamos activarlo, que el puerto y protocolo a usar será <strong>ssh </strong>o <strong>ftp</strong>, y que nos enviará un email en el caso de que se ejecute un Ban. Es muy importante indicarle el <strong>LOG</strong> donde chequeará tanto los fallos como el numero de intentos antes de proceder a banear una IP.</p>
<p><strong>Puesta en marcha y comprobaciones varias.</strong></p>
<pre class="brush:c"># Para iniciar fail2ban ejecutamos
fail2ban-client start
# y para cargar nuevas configuraciones
fail2ban-client reload
# tambien debemos incluirlo para que se inicie como demonio al arrancar el sistema
rc-update add fail2ban default
# y chequearemos que está trabajando correctamente.
ps -ef</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/howto-fail2ban-en-gentoo-linux.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
