<?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>Freelance Soft</title>
	<atom:link href="http://www.freelance-soft.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freelance-soft.com</link>
	<description>Desarrollo de Software y Electrónica</description>
	<lastBuildDate>Sat, 05 May 2012 00:20:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Configuración de Servidor Proxy con control de Acceso a sitios</title>
		<link>http://www.freelance-soft.com/blog/administracion-de-servidores/configuracion-de-servidor-proxy-con-control-de-acceso-a-sitios/</link>
		<comments>http://www.freelance-soft.com/blog/administracion-de-servidores/configuracion-de-servidor-proxy-con-control-de-acceso-a-sitios/#comments</comments>
		<pubDate>Wed, 02 May 2012 13:17:10 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[Administración de Servidores]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[p2p]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[squidGuard]]></category>

		<guid isPermaLink="false">http://www.freelance-soft.com/?p=61</guid>
		<description><![CDATA[Este artículo pretende ser una guía general para la configuración de este tipo de servidores por lo que daré un esquema global. En mi caso tengo más de 50 máquinas accediendo a Internet en un enlace que no supera los 512kb (es decir, el plan básico de cualquier servicio hogareño). Esto claramente no podría funcionar [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.freelance-soft.com/wp-content/uploads/2012/05/Squid-cache_logo.jpg"><img class="alignleft size-full wp-image-107" title="Squid-cache_logo" src="http://www.freelance-soft.com/wp-content/uploads/2012/05/Squid-cache_logo.jpg" alt="" width="236" height="172" /></a>Este artículo pretende ser una guía general para la configuración de este tipo de servidores por lo que daré un esquema global. En mi caso tengo más de 50 máquinas accediendo a Internet en un enlace que no supera los 512kb (es decir, el plan básico de cualquier servicio hogareño). Esto claramente no podría funcionar sin un Proxy, control de Ancho de Banda, bloqueo de P2P, etc. y por cuestiones lógicas (es una red escolar) necesito bloquear el acceso a determinados sitios web.</p>
<p>Ahora si, vamos por parte:</p>
<p><strong>Proxy SQUID “Transparente ” y filtrado de sitios web</strong></p>
<p>El primer paso es instalar Squid y hacerlo trabajar de forma transparente* (luego veremos que esto tiene algunos problemas).</p>
<p>*Transparente: Significa que no es necesario configurar las máquinas cliente para que utilicen el proxy, sino que se redireccionan las peticiones a páginas web para que las resuelva squid.</p>
<p>Reglas en Iptables:</p>
<p>Se supone que ya tienen configurado el enmascaramiento para dar Internet a su red local, de todas formas esta es la regla (eth0 es mi interfaz de red conectada al ISP)</p>
<pre class="brush: bash; title: ; notranslate">
-A POSTROUTING -o eth0 -j MASQUERADE
</pre>
<p>Ahora si redireccionamos las peticiones al puerto 80 (remoto) en nuestra interfaz de LAN (en este caso eth1), al puerto donde escucha Squid (en este caso 3128), también agrego a la regla que la IP remota no se corresponda con el mismo servidor (! -d 172.16.0.1), esto es para que las peticiones al servidor web local no sean tratadas de la misma manera.</p>
<pre class="brush: bash; title: ; notranslate">-A PREROUTING -p tcp -m tcp ! -d 172.16.0.1 -i eth1 --dport 80 -j REDIRECT --to-ports 3128
</pre>
<p>Bueno ya tenemos (en parte) configurado nuestro entorno.</p>
<p><strong>Bloqueo de sitios con SquidGuard</strong></p>
<p>Para el bloqueo de sitios he utilizado una aplicación externa llamada SquidGuard, ya que es fácil de configurar y bastante eficiente al parecer. Su sitio web es <a href="http://www.squidguard.org/">http://www.squidguard.org/</a></p>
<p>Básicamente hay que agregar una regla en squid.conf para redireccionar las peticiones:</p>
<pre class="brush: bash; title: ; notranslate">
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 4 (esto es el número de procesos máximos activos, seguramente para limitar el uso de CPU o memoria)
</pre>
<p>Y editar el archivo squidGuard.conf con las reglas de filtrado, en mi caso bloqueo muchos sitios de blacklists conseguidas en internet (por ejemplo en la misma web de squidGuard) y otros sitios que voy agregando manualmente, además es posible habilitar accesos para determinados horarios/días de la semana y rangos de IP.</p>
<p>Solo queda por decir que los sitios se organizan en carpetas en el home configurado (ej: dbhome /var/lib/squidguard/db) y que en realidad esta herramienta utiliza una bd asi que para crearla/actualizarla hay que correr el siguiente comando:</p>
<pre class="brush: bash; title: ; notranslate">squidGuard -C all </pre>
<p>(compilamos la BD entera)</p>
<p>Ahora bien, no todo es tan simple lamentablemente, con solo utilizar conexiones seguras (https) saltan nuestro filtro de sitios. Las soluciones para esto son básicamente 2.</p>
<p><strong>Sol 1</strong>: Redireccionamos el puerto 443 también (Squid 3 soporta conexiones SSL), claro que se rompe el esquema de seguridad y estamos haciendo un &#8220;Man-In-The-Middle&#8221;:</p>
<p>Cliente &lt;&#8211;conex seg&#8211;&gt; (clave pub mi server) Squid &lt;&#8211; conex seg&#8212;&gt; (clave pub real) Remoto</p>
<p>Esto hace que al cliente de nuestra red local le llegue nuestro certificado y no el real, asi que los navegadores lo verán como un posible ataque, además es una solución riesgosa porque si alguien logra tomar el control de nuestro servidor podrá sniffear las conexiones, realmente no recomiendo bajo ningún motivo utilizar este esquema.</p>
<p><strong>Sol 2</strong>: Hacemos que el uso del proxy sea Explícito y no transparente como lo teníamos para el puerto 80. Es necesario configurar las máquinas para que (al menos) las conexiones SSL se resuelvan utilizando nuestro proxy. Esto puede hacerse manualmente, con scripts de registro en caso de maquinas windows, etc o bien utilizar un protocolo de resolución de Proxy. Algo así como funciona nuestro DHCP para asignar direcciones de IP, también existen protocolos para esto. Si han visto en los browsers alguna vez “detectar la configuración del proxy automáticamente” se trata de esto, se puede hacer justamente como parte del DHCP, DNS o con protocolos WDAP. No voy a profundizar en esto porque realmente las soluciones son muchas de acuerdo al ambiente y tal vez lo más simple sea configurar las máquinas manualmente. Lo importante es que si el proxy es explícito las peticiones https son enviadas desde el browser a nuestro Proxy y este simplemente reenvía el certificado y los datos sin hacer cache ni nada de eso (pero si filtrando los sitios con squidGuard!)</p>
<p><strong>Soluciones alternativas</strong>: El bloqueo de sitios lo realizamos por otro método, se pueden bloquear rangos de IPs con iptables o bloquear dominios desde el DNS (en este caso tendríamos que filtrar también el puerto 53 (dns) y que nuestro servidor de DNS local resuelva los dominios bloqueados localmente a una página web de &#8220;sitio bloqueado&#8221; por ejemplo).</p>
<p>Ahora si ya nuestro proxy filtra todos los sitios includos los https, solo resta bloquear el tráfico que intenta salir a Internet sin pasar por nuestro proxy para esto creamos una regla en Iptables, por ejemplo una muy restrictiva sería:</p>
<pre class="brush: bash; title: ; notranslate">
-A FORWARD -p tcp -m tcp -s 172.16.0.0/16 ! -d 172.16.0.1 -i eth1 -o eth0 ! --dport 80 -j REJECT --reject-with icmp-host-prohibited
</pre>
<p>Esto quiere decir que para toda nuestra LAN (172.16.0.0/16) si el puerto no es 80 (! &#8211;dport 80) y la ip remota no es la de nuestro server (! -d 172.16.0.1), simplemente ese tráfico se rechaza.</p>
<p>Cabe aclarar que acá estoy bloqueando más que solo el puerto SSL: 443, <strong>estoy bloqueando absolutamente TODO lo que no sea al puerto 80. </strong>Esto lo hago por una simple razón, existen Web Proxys que atienden peticiones en otros puertos distintos del 80 y si no hacemos esto saltarán nuestros filtros de sitios utilizando uno de ellos. Si configuran nuestro proxy explícitamente también podrán acceder a esos web proxys pero pasando por nuestros filtros de SquidGuard y hay listas de miles de Proxys para que sean filtrados.</p>
<p>Como solución total sería también filtrar los puertos remotos distintos de 80, 443, etc en el mismo squid, ya que los free proxys generalmente utilizan puertos en el rango de (1025-65535) pero esto trae más problemas porque tendremos todo esos accesos bloqueados y son utilizados por los software antivirus, windows, etc para sus updates y demás (aunque con un poco de trabajo y para determinados ambientes puede ser muy útil para evitar esto de jugar al gato y al ratón de las blacklists de proxys)</p>
<p>Bueno hasta este punto tenemos configurado el Proxy con bloqueo de sitios, Squid también admite limitar el número de ips y conexiones concurrentes para cada cliente y muchas otras cosas útiles.</p>
<p><strong>Ahora veamos como Limitar el Tráfico:</strong></p>
<p>En mi caso contamos con una pequeña conexión para toda una escuela asi que sin este punto es imposible que algo funcione! Como todas las conexiones pasan a través de Squid que mejor que limitarlo ahí mismo, para esto existen las Delay Pools (nuestro squid debe estar compilado con soporte para esto). Un artículo completo al respecto lo pueden encontrar en http://bulma.net/body.phtml?nIdNoticia=2284</p>
<p>Un ejemplo de uso sería el siguiente, simplemente editando squid.conf agregamos estas líneas:</p>
<pre class="brush: bash; title: ; notranslate">delay_pools 1 delay_class 1 2
delay_parameters 1 32768/32768 8192/6144</pre>
<p>Con esto creamos el límite de forma global, limitando el máximo para toda la red (32kb con ráfagas de 32kb) y cada cliente particular (8kb con ráfagas de 6kb). Cabe destacar que con los Delay Pools solo se limita el trafico de bajada (downstream)</p>
<p>Una alternativa para hacerlo directamente con iptables de una forma simple es con el script htb-gen: <a href="http://www.praga.org.ar/wacko/DevPraga/htbgen">http://www.praga.org.ar/wacko/DevPraga/htbgen</a></p>
<p><strong>Bloqueando el software P2P:</strong></p>
<p>Esto no es sencillo y creo que la mejor alternativa es limitar el ancho de banda por cliente y el número de conexiones concurrentes (los 2 grandes problemas que traen estos programas) y simplemente quedarnos con eso. Sino la forma es analizando el tráfico y para esto hay una herramienta ipp2p (plugin de iptables), el sitio original es: <a href="http://www.ipp2p.org/">http://www.ipp2p.org/</a> pero al parecer ya no dan soporte para nuevos kernels y versiones de iptables asi que ahora el proyecto parece continuar en xtables: <a href="http://sourceforge.net/projects/xtables-addons/">http://sourceforge.net/projects/xtables-addons/</a></p>
<p><strong>Por último y no menos importante necesitamos monitorear el uso de la red:</strong></p>
<p>El que más me ha gustado particularmente es ntop: <a href="http://www.ntop.org/">http://www.ntop.org</a></p>
<p>El servicio alimenta una interfaz web muy intuitiva que es muy útil para monitorear el uso y <strong>abuso </strong>de la red por parte de los clientes, nos sirve para detectar servidores proxys, malware, etc evaluando las conexiones y el ancho de banda utilizado.</p>
<p>También recomiendo utilizar algún sniffer para tales propósitos como ettercap o whireshark.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freelance-soft.com/blog/administracion-de-servidores/configuracion-de-servidor-proxy-con-control-de-acceso-a-sitios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productos descontinuados (deprecated)</title>
		<link>http://www.freelance-soft.com/productos/productos-descontinuados/</link>
		<comments>http://www.freelance-soft.com/productos/productos-descontinuados/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 14:05:20 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
				<category><![CDATA[Productos]]></category>

		<guid isPermaLink="false">http://www.freelance-soft.com/?p=66</guid>
		<description><![CDATA[Desde nuestros inicios (como grupo de desarrollo de software) hemos trabajado en algunos proyectos que con el paso del tiempo han ido perdiendo interés ya sea por el cambio de contexto de la tecnología subyacente o por que nuestro esfuerzo se enfocó en otras tareas. Más allá de esto, son ejemplos de nuestro trabajo y [...]]]></description>
			<content:encoded><![CDATA[<p>Desde nuestros inicios (como grupo de desarrollo de software) hemos trabajado en algunos proyectos que con el paso del tiempo han ido perdiendo interés ya sea por el cambio de contexto de la tecnología subyacente o por que nuestro esfuerzo se enfocó en otras tareas. Más allá de esto, son ejemplos de nuestro trabajo y hemos publicado una lista de todos ellos:<strong></strong></p>
<h2><strong>PHPAjaxGrid</strong></h2>
<blockquote><p><a href="http://www.freelance-soft.com/wp-content/uploads/2010/10/phpajaxgrid.png"><img class="alignleft  wp-image-44" title="phpajaxgrid" src="http://www.freelance-soft.com/wp-content/uploads/2010/10/phpajaxgrid.png" alt="" width="150" height="142" /></a>PHP Ajax Grid es una librería php para crear facilmente grillas Ajax para Bases de Datos Mysql. Resuelve el paginado, ordenamiento, filtrado, etc. actualizando el contenido mediante AJAX.<br />
Año: 2007<br />
Descarga: <a href="https://sourceforge.net/projects/phpajaxgrid/files/latest">https://sourceforge.net/projects/phpajaxgrid/files/latest</a><br />
Ejemplos: <a title="PHP Ajax Grid" href="http://www.freelance-soft.com/projects/phpajaxgrid">http://www.freelance-soft.com/projects/phpajaxgrid</a></p>
<div style="clear: both;"></div>
</blockquote>
<h2 style="clear: both;"><strong>Web File Manager</strong></h2>
<blockquote><p><a href="http://www.freelance-soft.com/wp-content/uploads/2010/10/filemanager.png"><img class="alignleft size-full wp-image-52" title="filemanager" src="http://www.freelance-soft.com/wp-content/uploads/2010/10/filemanager.png" alt="" width="150" height="74" /></a>Web File Manager, es como su nombre lo indica, un gestor de archivos web, pensado para ser integrado a cualquier desarrollo web que necesite trabajar con archivos. Esta realizado en PHP, utilizando AJAX (con la libreria XAJAX) y es muy facil de configurar y utilizar.<br />
Año: 2007<br />
Descarga: <a href="http://sourceforge.net/projects/webfilemanager/files/latest/download">http://sourceforge.net/projects/webfilemanager/files/latest/download</a><br />
Ejemplo: <a title="Web File Manager, Ejemplos" href="http://www.freelance-soft.com/projects/webfilemanager">http://www.freelance-soft.com/projects/webfilemanager</a></p></blockquote>
<h2>FDesktop</h2>
<blockquote><p><a href="http://www.freelance-soft.com/wp-content/uploads/2012/04/user-desktop.png"><img class="alignleft size-full wp-image-74" title="user-desktop" src="http://www.freelance-soft.com/wp-content/uploads/2012/04/user-desktop.png" alt="" width="128" height="128" /></a>FDesktop es un sistema de escritorio basado en javascript, es parte de un desarrollo de componentes de ventanas css/javascript (fwindows). En su momento estaba pensado para crear interfaces web que tengan apariencia de aplicaciones de escritorio. Algunas funcionalidades pueden haberse alterado por los cambios en los browsers.<br />
Año: 2007<br />
Ejemplo de Escritorio: <a title="Ejemplo de Escritorio FDesktop" href="http://www.freelance-soft.com/projects/fdesktop/example/">http://www.freelance-soft.com/projects/fdesktop/example/</a><br />
Ejemplo para dialogos de alterta/confirmación en aplicación web: <a title="Ejemplo de fwindows" href="http://www.freelance-soft.com/fdesktop/fwindows_example/">http://www.freelance-soft.com/fdesktop/fwindows_example/</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.freelance-soft.com/productos/productos-descontinuados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

