Mostrando las entradas con la etiqueta Firewall. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Firewall. Mostrar todas las entradas

domingo, 11 de julio de 2010

Instalar y Configurar SQUID en FreeBSD con PF

Para Instalar SQUID:
  1. Ingresar a /usr/ports/www/squid (puede ser squid, squid30, squid31)
  2. make config (elegir las opciones de instalación)
  3. make (realiza la compilación)
  4. make instal (realiza la instalación en el sistema)
una vez instalado se prosigue con la instalación.

Para Realizar la Configuración Inicial:
  1. Es necesario crear los directorios de intercambio /var/squid/cache
    /usr/local/sbin/squid -z
  2. Para realizar un test de la instalación se puede usar:
    /usr/local/sbin/squid -NCd1
    aqui Squid nos mostará una salida que indica el número del proceso, inicializa la cache, entre otros. este test se puede cortar con CTRL+Pausa. durante el test podemos conectar un Cliente al proxy por medio del puerto 3128 para comprobar que existe conectividad.
  3. Si durante el test con el cliente de prueba no se logra conexión, es probable que deba definir en las reglas de squid la subred local:
    editar /usr/local/etc/squid/squid.confagregar:
    acl localnet src ipredlocal/bitsmascara ejemplo:
    acl localnet src 190.100.0.0/16
    (aqui colocar la ip de la red de los clientes)
  4. para permitir el inicio automático agregar la siguiente línea a /etc/rc.conf
    squid_enable="YES"
  5. para configurar PF y habilitar la característica de Proxy Transparente de SQUID hay que editar /etc/pf.conf y agregar las siguientes líneas:
    rdr on $int_if  inet proto tcp from any to any port 80 -> 127.0.0.1 port 3128
    con estas líneas se redirigirán las conexiónes http al puerto 3128 de Squid.
    pass on $int_if inet proto tcp from any to 127.0.0.1 port 3128
    para permitir el acceso al puerto.
  6. Squid no trabaja conexiones https de manera transparente, por lo que debemos dejarlas pasar directamente. (por medio de proxy si trabaja https)
  7. para habilitar el proxy transparente en Squid hay que modificar o agregar las siguientes líneas en /usr/local/etc/squid/squid.conf :
    http_port 127.0.0.1:3128 transparent
    http_port ip_local_del_server:3128

    la primera línea habilta el proxy transparente en la ip localhost, la segunda línea habilita la ip local del servidor para atender como proxy tradicional.
  8. hay que darle permiso al grupo squid al archivo /dev/pf:
    chown root:squid /def/pf
  9. luego de los cambios de los dos pasos previos hay que reiniciar los servicios PF y SQUID
    /etc/rc.d/pf restart
    /usr/local/etc/rc.d/squid restart
No olvidar realizar las pruebas del caso.

viernes, 2 de julio de 2010

Configurar un Firewall en FreeBSD PF + ALTQ

FreeBSD se perfila con uno de los sistemas opertativos basados en BSD (Unix) con mejores prestaciones, en este caso se muestra la manera de configurarlo como un Firewall para nuestra red (incluyendo la posibilidad de NAT), utilizando un modulo denominado PF (packe Filter) nativo de Open BSD que puede ser utilizado desde FreeBSD, para hacerlo es necesario realizar algunos cambios en el Kernel, por lo que se muestran los pasos de como realizar este trabajo.
He considerado ir agregando los enlaces a las páginas a la cuales he recurrido para encontrar la información dado que existen algunos puntos que ustedes pueden detallar directamente.

Habilitando PF (Packet Filter)
  1. Editar /etc/rc.conf para actualizar o agregar las siguientes líneas:
    gateway="YES"
    pf_enable="YES"
    pflog_enable="YES"
Habilitar ALTQ (habilita QoS)
  1. ingresar a: /usr/src/sys/amd64/conf  ( si es a 32bits /usr/src/sys/i386/conf)
  2. crear una copia de GENERIC por ejemplo K_ALTQ
    cp GENERIC K_ALTQ
  3. Editar K_ALTQ y agregar las siguientes líneas:
    Los siguientes pasos hablitarán algunas opciones en el KERNEL por lo que debe recompilarse:
    device pf
    device pflog
    device pfsync
    options ALTQ
    options ALTQ_CBQ
    options ALTQ_RED
    options ALTQ_RIO
    options ALTQ_HFSC
    options ALTQ_PRIQ
    options ALTQ_NOPCC
    Grabar y salir.

  4. config K_ALTQ
        responderá: Kernel build directory is ../compile/K_ALTQ, Don´t forget to ''make cleandepend && make depend''
       

  5. ingresar a ../compile/K_ALTQ
    make cleandepend && make depend
    make
    make install

  6. luego reiniciar el equipo para que se active el nuevo kernel con la configuración de PF+ALT
Configurar PF
  1. editar /etc/pf.conf
  2. definir los valores de: ext_if y  int_if, para el caso que estoy trabajando la tarjeta Externa es em0 y la Interna es em1, con ifconfig se puede determinar estos valores, la tarjeta de red que da cara al exterior de la red (puede ser internet) tiene puerta de enlace definida, mientras que la tarjeta interna que da cara a la red LAN, carece de puerta de enlace
    para este caso:
      ext_if="em0"
      int_if="em1"
  3. Para habilitar el NAT desde PF se declara la siguiente regla:nat on $ext_if from ($int_if:network) -> ($ext_if:0)
    Para permitir el funcionamiento de NAT previamente hay que activar esta funcion a nivel del FreeBSD editando el archivo /etc/sysctl.conf (requiere reinicio)
    hay que agregar la siguiente línea:
    net.inet.ip.forwarding=1
  4. una regla básica puede ser: por defecto bloquear toda la entrada y toda la salida
    block in all    
    block out  all 
  5. Luego hay que permitir la comunicción hacia loopback
    pass quick on lo0 all
  6. Permitir la comunicación con la red lan
    pass in on $int_if from ($int_if:network) to any
    pass out on $int_if from any to ($int_if:network
    )
  7. Luego se puede habilitar las reglas de acceso según la necesidad que se tenga:
    pass out on $ext_if proto tcp all modulate state flags S/SA#por ejemplo permitir todo el tcp de salida
Más referencia sobre filtrado de paquetes y sintaxis de las reglas las puede encontrar en:
http://www.openbsd.org/faq/pf/es/index.html