July 2010

  1. [pfsense] Proxy Server

    Un servidor Proxy nos va a ayudar a ganar velocidad y seguridad en nuestra navegacion.

    En este caso Pfsense utliza el famoso Squid como proxy-cache, almacenando las paginas en caché interna para su

    posterior carga  con mayor soltura, además este proxy es transparente, o por lo menos tenemos la opción de activarla

    lo cual es muy comodo ya que no habrá que estar configurando todos los ordenadores de la red, uno a uno y para cada

    aplicación , con el fin de que pasen por el porxy, de ahí el significado de transparente.

    Empezaremos por la pestaña de General donde elegimos la interface que va a utlizar el proxy, en este caso la LAN
    La opcioón Allow user on interface, ha de estar marcada, para que los usuarios que se conecten en este caso a la lan interna automaticamente
    utlicen el proxy
    Transparent proxy, está claro que ha de estar marcada ya que no queremos complicarnos la vida (si no habría que configurar puerto para cada
    aplicación).
    En el caso de querer almacenar logs (recomendable) marcaremos la casilla Enabled logging
    Log rotate: aqui decimos cuantos dias permance el log en memoria fisica.
    Proxy port: el puerto por defecto es el mostrado en la imagen aunque podemos cambiarlo
    Administrator email: importante ponerlo porque cualquier ventana de seguridad que salte al usuario, saldra reflejado el mail el administrador

    Segimos en la pestaña General pero mas abajo y en la opción What to do with requests that have whitespace characters in the	URI (que hacer si la url
    tiene espacios en blanco), hay cuatro políticas de actuación, por defecto y la mas recomendable es Strip.
    En Custom options podemos cambiar la ruta del mensaje de advertencia de nuestro proxy asi como determinadas opcionesd e configuración.

    Entramos ahora en la sección Cache management
    Hard disk cache size: elegimos cuanta memoria de nuestro disco duro destinaremos a almacenar el caché de nuesta navegación, esta expresada
    en MegaBytes, yo de mis 80 Gb de disco he reservado 15 Gb para la caché.
    El tipo de systema de almacenamiento de la caché (hard disk cache system), lo podemos determinar con tres opciones:
    • UFS: el que siempre se ha permanecido en Squid a lo largo de su existencia.
    • AUFS: utliza POSIX-threads (muntiples tareas simultáneas) para No bloquear el proceso proncipal  Squid de la E/S del disco LA MAS RECOMENDABLE,
    además si tenemos más de un procesador (vease instalación), aumentara notablemente el rendimiento.
    • DISKD: utliliza un proceso aparte para no bloquear la acción de Squid en la E/S del disco.
    Memory caché size (el Mbytes), es la ram que destinamos a cachear la navegaciónj web, esta claro que cuanto mas pongamos mejor ya que la ram es
    mucho más rápida que el disco duro pero no debemos poner más de la mitad del total de la ram instalada.
    Maximum object size: determina el tamaño maximo para que el proxy no rechace su cacheado en memoria, este caso he puesto 128 kb. si queremos
    cachear objemos mayores como una descarga habitual en una red los service pack o demás debemos aumentar a Mbytes el valor.
    El nivel de Subdirectorios a 16.
    Memory Replacement policy : quizás de las partes más importantes del servidor, determina la forma de remplazar la memoria por
    nuevos datos determinando que es más importante, que es lo más usado etc..., Tenemos cuatro opciones:
    • LRU: se remplaza el objeto que no ha sido visitado en más tiempo.
    • Heap GDSF: Optimiza los objetos con mayor ratehaciendo uso del mantenimineto de los objetos mas pequeños (frecuencia de tamaño dual), Es la
    más utlizada y la opción por defecto.
    • Heap LFUDA: mantiene los objetos más populares independientemente de su tamaño y por tanto opyimíza el indice de aciertos por un byte a expensas de
    la tasa de éxito de un objeto grande.
    • Heap LRU: Ultimos usados recinetemente (Funciona como lru pero con una pila).

    Cache replacement policy: es lo mismo que la anterior pero para la cache , en lugar que para la memoria, ahora actuamos sobre el disco duro
    y no sobre la ram, por ello interesa una politica con el menor numero de accesos ya que son mas lentos, en este cason la opción por defecto es
    LFUDA
    Low water mark : imaginemos que nuestra memoria de intercambio se llena como una piscina, en este caso el remplazo de la caché se hará cuando
    este al 90% de su capacidad
    high water mark : cuando "en nuestra piscina" llegemos al 95 dejaremos de utilizar memoria de  intercambio.
    Do not cache: Los lugares que no queremos que entren en caché, yo al utlizar megaupload y rapidshare los he incluido porque dan mucho la lata.
    Enable offline mode: accede a las paginas sin conexión a internet, es decir unicamente a lo que tiene cacheado en la memoria.

  2. [pfsense] UPnP

    UPnP o Universal Plug and Play nos permite que dada una aplicación que necesita de la apertuda de un puerto determinado, esta apertura se

    haga de forma automática.

    Para ello lo habilitamos dando a enable , en este caso para la interfaz lan interna

    En pfsense podemos crear cuatro reglas upnp, yo de momento solo he creado la 1º y ahora explico como funciona:

    Lo primero es indicar si habilitamos  o denegamos la opción upnp, después escogemos el puerto o rango de puertos de salida, seguidamente la ip

    o rango de ips (192.168.100.0/24) que queramos que intervenga, y por último el rango de puertos de entrada.

     

  3. [pfsense] Load Balancer

    Load Balancer o balanceo de carga, esta opción solo se puede utilizar si tenemos más de una conexión a internet, en mi caso wan1 es la mia y wan2 es la de

    un amigo a la cual me conecto por wifi.

    Existen dos tipos de configuración:

    Failover: (si wan1 se cae se activa wan2 o viceversa), muy util si tenemos un servidor público en casa.

    Balance: si utilizamos todo el ancho de banda en una descarga, en otra descarga simultánea se añadirá la velocidad de la otra conexión (no se suma en

    ancho de banda para la  misma descarga)

    Veamos la configuración:

    Lo 1º de todo es ir a SYSTEM ---> ADVANCED y marcar la casilla correspondiente

    Luego vamos a SERVICES --->LOAD BALANCER --->POOL

    Dando al "+" crearemos la primera regla de tipo failover, tipo será siempre en este caso gateway.
    En monitor IP será la ip a la que hará ping cada cierto tiempo para saber en todo momento sii esa interfaz tiene conexión a internet
    en este caso a wan1 le hemos asignado de monitor ip la dns1 del sistema y a wan2 la dns2 (podríamos haber puesto a las dos por ej. la ip de google).
    En interface name donde pone add to pool elegimos las interfaces que intervienen y las añadimos, en este caso wan como wan2
    y opt3 (la wifi), como wan2 con sus monitores ip correspondeintes.
    Esta misma configuración la podemos aprovechar para hacer otra regla igual pero wan2--->wan1 añadiendo los monitores ip en orden inverso

    La 3º regla o gateway  utlizará el balance de carga en lugar de failover, la forma de configurarla es la misma, pero ahora activamos load balancing
    es la opt3 o wan2 la que aportará en determinados momentos el ancho de banda necesario

    Así quedaría el resultado de nuestros 3 gateways, en caso de querer usarlos en las reglas del firewall (por ejejmplo para server apache)
    en lugar de poner default gateway eligiremos un gateway como por ejemplo "Siwan1Falla", en lugar del que escogíamos normalmente (192.168.2.1)

    Para ver el estado vamos a STATUS --->LOAD BALANCE

  4. [pfsense] Dhcp Server

    Dhcp o (dynamic host configuration protocol) nos permite asignar una ip automáticamente a un ordenador dentro de un rango elegido, para ello

    vamos a activar el server dhcp en nuestro pfsense

    Además podemos hacer uso de nuestro servidor dns (explicado justo antes), para asignar ips a un determinado nombre en lugar de a una ip

    En este caso lo activaremos para la Lan Interna, La 2º opción "Denny unknown clients" la desactivamos, o activamos si solo queremos que

    este servicio lo utilice solo los ordenadores registrados que se agregan más abajo.

    Como vemos el rango de la red lan es 192.168.100.0 - 255

    Las demás opciones las dejaremos en blanco, como se ve en la imagen.

    Aqui vemos como incluimos los host que queremes que estén almacenados

    Es importante incluir estos nombres tanto en el servidor dns como aquí ya que a la hora de utlizar un servidor proxy los resultados de sus

    estadísticas severán reflejados cuadno estos esten dispuestos en estos dos servicios.

  5. [pfsense] DnsForwarder

    El primero de los servicios que vamos a configurar en pfsense es dnsforwarder, (servidor de nombres), se encarga de "traducir" un nombre en una ip

    determinada.

    Activamos la 1º opción para utilizar el servicio:

    La 2º opción también la activamos para poder meter a mano los nombres e ips correspondientes más abajo.

    la 3º opción la dejamos desmarcada.

    Más abajo incluimos los host de la red con su domínio e ip correspondiente.

    Por ultimo si queremos que otra máquina que no sea el firewall sea el server Dns para todo un dominio podemos incluirla en la parte de más abajo.

  6. [pfsense] Services

     

    DnsForwarder

    DhcpServer

    LoadBalancer

    UPnP

    Proxy Server

    Proxy Filter

    Proxy Report

  7. [pfsense] Traffic Shaper

    Esta parte la podemos denominar QoS (quality of service), es decir damos prioridad de ancho de banda a las aplicaciones que más lo necesiten.

    Para ello pfsense incluye un wizard muy intuitivo, para ello pulsamos en la pestaña EZ Shaper Wizard

    En la 1º ventana elegimos para que interfaz se va a utilizar, la velocidad máxima de bajada, la interfaz de salida y la velocidad máxima de subida

    Si quisieramos dar prioridad a Voz sobre IP daremos a Enable, y la configuraremos, pero no es este el caso

    Penalty Box es donde podremos configurar para una ip especifica la velocidad que tendrá de subida o de bajada

    Priorizamos los programas P2P dándoles menor prioridad en la conexión

  8. [pfsense] Rules (reglas)

    Llegamos a la parte más importante del manual. Es donde vamos a decidir las reglas de que sale y que entra, que es lo que bloqueamos o dejamos

    pasar, o que red puede ver a otra red etc...

    Para ello al entrar en el menu "rules" la primera opción que no sale a configurar es WAN:

    En el diagrama de abajo vemos claramente que el "X" es para bloquear y el ">" para dejar pasar, si este además lo pulsamos  de nuevo, podremos
    deshabilitar temporalmente una regla como es el caso de la primera (openvpn).
    En la 2º regla lo que hacemos es bloquear la salida de samba al exterior ya que solo la vamos a utlizar internamente y además hacemos que los logs
    que se crearían ya no lo hagan, ahorrando en espacio. El orden de las reglas influye en su prioridad si una contradice a otra, está mandará sobre ella si está por encima. 
    Para mover una regla, la seleccionamos y elegimos el sitio donde trasladarla dando al "<"
    las demás reglas se crearon automáticamente, antes cuando abrimos los puertos en port forward.
    Veamos ahora las reglas de la Lan interna:

    En el caso de la lan interna la salida a internet se haŕa desde la wan1 osea 192.168.2.1, por ello ponemos esa de gateway
    En la  regla estamos abriendo paso al exterior a través de los puertos típicos únicamente (80,22,8080,443...).
    En la  y  dejamos que la playstation3 y el movil tengan acceso al exterior por los puertos que necesitan. Así lo haremos
    para el messenger también.
    En las 2 últimas reglas hacemos que la lan interna pueda ver a la dmz y a enlace.
    Veamos las reglas de la DMZ:

    Como en la DMZ vamos a utilizar las dos WAN, wan1 y wan2, para el server apache que hay alojado dentro debemos crear la regla de salida a
    internet para los puertos tipicos para los dos gateway 192.168.2.1(wan1) y 192.168.1.1(wan2). Además crearemos dos reglas de bloqueo para que
    desde la dmz no se vea la lan interna ni tampoco enlace. En el caso de gateway de la 1º regla es "SiWan1Falla", creada más adelante en la sección 
    services--->load balance (si nuestra 1º wan se queda sin internet, el servidor web se suministra de la wan2)
  9. [pfsense] NAT (Network Address Translation)

    La forma en la que se componen las ips (IPv4) y el crecimiento masivo de conexiones a internet ha hecho que sus combinaciones se queden limitadas

    y que no pondamos tener las ips públicas que quisieramos  y que tengamos que recurrir a ips privadas dentro de areas de red locales que no son publicas

    o enrutables de cara a internet, por ello existe NAT para que "traduzca" esas ips privadas hacia la publica.

    Lo primero es ir a la pestaña Outbound (reglas de salida), y marcamos manual Outbound NAT rule generation, despues como siempre dando a
    el "+" añadiremos reglas, estas consisten en dejar pasar todo el tráfico de lan a wan de dmz a wan y de enlace a wan y lo mismo con la wan2
    un ejemplo de como hacer dmz a wan seria este: 

    Se ve que en destination ponemos any (*), y en address es el rango de ips de la dmz.
    Ahora nos iremos a la pestaña port Fordward o lo que coloquialmente se denomina "abrir puertos" [El orden de las reglas altera su prioridad]

    En primer lugar he abierto el puerto 22 y el 80 hacia el servidor apache que esta dentro de la dmz con ip 192.168.10.244, y al utlizar dos wan
    hay que redireccionar los puertos en los dos casos.
    No es así en el caso de los demás puertos que solo funcionaran a través de la wan1, como es el caso de el puerto 8000 abierto para utorrent
    dentro de la lan interna con ip  192.168.100.70, luego esta el 8443 para administrar nuestro pfsense desde fuera via https, y asi otros cuantos más
    Hemos de tener en cuenta que CUANDO ABRIMOS UN PUERTO, AUTOMÁTICAMENTE  SE CREA UNA REGLA (RULES) EN NUESTRO CORTAFUEGOS  que
    veremos más adelante en la sección rules.
    Para las reglas de apertura de puertos se añaden con el símbolo "+", un ejemplo para el puerto 8000 (torrent):

  10. [pfsense] Aliases

    LLegados a esta parte de la configuración deciros que lo que vamos a configurar no es del todo obligatorio, pero si altamente recomendable.

    Para que sirve esto de los alias, pues bien esto nos va a  ayudar a nombrar y a englobar de una manera fácil y sencilla, un grupo de puertos

    un grupo de ips o hosts , o incluso un rango de ips (subredes) con un nombre familiar, y que además a la hora de crear las reglas del cortafuegos (más adelante)

    nos va a ayudar mucho en esa tarea.

    Primeramente os mostrare cuales he creado yo y después como crear un alias.

    Como se puede ver las 5 primeras son networks, o subredes, en el sexto he puesto la ip del apache (pertenece al rango de la dmz), justo debajo
    los puertos para el correo, después he creado otras dos subredes.
    Los alias llamados messenger y playstation3 son un conjunto de puertos para que se puedam utlizar sin problemas
    RemoteDesktop es el tipico para vnc el 5900.
    Los 4 siguientes son las ips de cada router
    después los puertos para samba y finalmente he creado unos llamados típicos, que suelen ser puertos que tienen que estar abiertos casi siempre

     

    Como crear un alias:

     

    Como siempre para crear un alias le daremos al "+" de la ventana principal de aliases. En nombre y descripción pondremos algo familiar que
    nos recuerde bien su función.
    En cuanto al tipo tenemos tres: ports, host, network. En cualquiera de las tres opciones podemos englobar a un grupo de uno o más dando
    simplemente al botón "+" de la parte inferior.
  11. [pfsense] Firewall