Beruflich Dokumente
Kultur Dokumente
En este tutorial te mostrar cmo configurar pfSense 2.0.1 como un portal de internet con Squid
Proxy / SquidGuard filtrado.Tambin voy a mostrar que usted tiene que configurar algunas
caractersticas adicionales de pfSense como shapping trfico con calamares. Este tipo de
configuracin podra ser til para las personas que quieren establecer puntos de conexin
inalmbrica o etc cafs Internet
Requisitos
Este tutorial asume que usted ya tiene un pfSense (versin 2.0.1 como mnimo) la instalacin se
ejecuta con las interfaces de red configurados y las reglas bsicas de cortafuegos configurados.
Para confirmar que los paquetes se han instalado, actualice la interfaz web y Goto men
"Servicios" y busque Proxy Server y Proxy Filter, si ambos aparecen en el men que se han
instalado correctamente, reinicie el apartado de pfSense.
NOTA: Ha habido un par de casos en los que he tenido que volver a instalar el paquete squid
derecho despus de haber instalado el paquete squidguard, la razn detrs de esto es despus
de instalar el paquete squidguard no puedo acceder a la configuracin del servidor proxy, si este
ocurre volver al men paquetes, haga clic en la pestaa de paquetes instalados, a continuacin,
seleccione a instalar en la entrada del servidor squid (esto slo ha ocurrido en versiones
anteriores a la 2.0.1).
Recomiendo encarecidamente el registro est disponible en el servidor proxy, ya que ser muy
til en caso de que tenga que preocupar el lanzamiento de un tema o simplemente ver lo que
estn haciendo en Internet, etc Marque la casilla "Logging Enabled", establecer el registro tienda
para la ubicacin predeterminada "/ var / squid / logs" girar sus registros cada 7 das, configurar
el puerto proxy para el nmero de puerto 3128 (recuerde este nmero de puerto ya que lo
necesitaremos cuando establecimos las reglas del firewall hacia arriba), aadir un visible nombre
de host y una direccin de correo electrnico del administrador, y establecer el idioma requerido,
a continuacin, haga clic en el botn Guardar.
Luego haga clic en la pestaa "Cach Gestin", por defecto el tamao de disco cach est
establecido en 100 MB, lo que lo recomendara encarecidamente que aumenta este, ahora
depender de cun grande es su disco duro es que va a determinar lo grande que usted lo hace,
sino tambin tener en cuenta las ms gente usando este proxy ms espacio que necesita para
asignar, despus de que se haya creado dejar el resto de la pgina con la configuracin
predeterminada y haga clic en Guardar.
Haga clic en la ficha de control de acceso al lado, en el tipo de campo subredes permitido en sus
subredes requeridas, (por ejemplo: 192.168.255.0/24); tenga en cuenta que si usted tiene ms
de una subred acceso este proxy es necesario especificar cada subred en su propia lnea.
Desplcese hacia abajo hasta que vea "ACL y ACL Safeports SSLPorts" en estos campos tendr
que escribir en los puertos que desea abrir lanz su servidor proxy, tendr que hacer una
investigacin sobre esto, descubrir qu aplicaciones se estn utilizando en este de red, y su
effectlive especificado el Porst necesario. Para este documento slo voy a utilizar el puerto 80 y
443 ya que estos son los nicos tambin los puertos que necesito para ver si tiene pginas web
y para algunas aplicaciones bsicas de Internet para trabajar, si quieres otras aplicaciones para
tener acceso a la Internet , leer un poco sobre lo que se requieren los puertos y luego actualizar
el cuadro de pfSense, una vez establecido, haga clic en Guardar.
Ahora, para la gente que desea estrangular la velocidad de la que los usuarios obtienen acceso a
Internet, haga clic en la ficha Gestin de Trafic, y SET (en kilobytes) lo rpido que desea
restringir a los usuarios demasiado, haga clic en Guardar una vez hecho.
Luego haga clic en la pestaa ACL comn, y el clic en Lista de reglas de Target y seleccione cada
regla que desea bloquear o permitir, a continuacin, aadir un mensaje al Proxy Error denegado
Campo, actualmente estoy simplemente usando la opcin por defecto que sugieren (ven en
sceenshot por ejemplo), dejar el modo de redirigir a la pgina de error Int por lo que utilizar el
mensaje se escribe en, marque la Casilla de verificacin Log luego haga clic en Guardar.
Una vez que se haya creado a prueba su poder y asegurarse de que todo est
funcionando. Espero que esto haya sido de gran ayuda para usted, y mantener un ojo hacia
fuera para el siguiente tutorial que ser implenting Portal Cautivo para esta configuracin.
Nos movemos a:
System / Package/Available Packages/instalamos squid3
Cuando usamos pfSense como cache de paginas web (web proxy - Squid), me he dado cuenta que
Squid no esta usando el ancho de banda eficientemente, se siente mas lento inclusive que sin el
proxy activo. He usado pfSense 1.2.3 y la versin 2 RC y es el problema que he experimentado.
Despues de buscar por internet encontre que a muchos usuario les pasa lo mismo y es por unos
parametros propios de Freebsd que esto sucede.
En los forums de pfSense dicen que la configuracin por default de el sistema es como un
ruteador no como servidor, por lo que no preparan al sistema base para soportar
las necesidades de squid tales como una gran cantidad de archivos abiertos, etc.
Se propone editar el archivo /boot/loader.conf y borrar y agregarciertos parametros como se
indica a continuacin
1. Usando Web Admin, escoger Edit File del menu Diagnostics.
2. Teclear "/boot/loader.conf" and el botcon de load.
3. Borrar la linea "kern.ipc.nmbclusters="0"
4. Agregar el texto siguiente
kern.ipc.nmbclusters=32768
kern.maxfiles=65536
kern.maxfilesperproc=32768
net.inet.ip.portrange.last=65535
O se puede borrar lo que esta y escribir lo siguiente:
autoboot_delay="1"
#kern.ipc.nmbclusters="0"
hint.apic.0.disabled=1
kern.hz=100
#for squid
kern.ipc.nmbclusters="32768"
kern.maxfiles="65536"
kern.maxfilesperproc="32768"
net.inet.ip.portrange.last="65535"
Despus de agregar estos datos reiniciar pfsense y squid debe funcionar como debe de ser, en mi
caso vi mejoras al respect
Modo No Transparente
Pfsense tiene squid que es un excelente o el mejor web-proxy que tenemos de lado de Unix/Linux,
pero la configuracion que nos proporciona pfsense no es la mejor, por ello si deseamos sacarle
provecho debemos nosotros mismos hacerlo.
Pero la desventaja es que cada que arranca pfsense arranca squid con la configuracion normal, asi
que nosotros con la experiencia en Unix sabemos que podemos ejecutar scripts cuando unix
arranca(pfsense).
En modo transparente, que es lo mas comun y comodo pfsense se encarga de habilitar las reglas
en el firewall, pero si leen el foro tiene sus limitantes ya que el puerto 443 no cruza por squid, por
ello yo prefiero hacer esto para controlar squid.
NOTA: Por nada del mundo, ni aunque les paguen 5 millones de dolares, graven algo en
/var/squid/, cuando arranca pfsense borra todo lo que ahi se encuentre, yo hago un folder el
/usr/local/etc/squid llamado acl y ahi meto todas mis acl.
Una vez configurado atraves del GUI squid en modo no transparente, creamos las siguientes
reglas en el firewall para nuestra LAN, recordar que nadie va a salir sin no es atraves del proxy.
Como podran observar, yo necesito minimo las primeras 3 reglas, el resto uso protocolos que no
son afectados por squid.
Mi LAN solo puede hacer querys a mi dns(pfsense)
Mi LAN solo puede accesar a mi proxy(squid) que corre en mi propio pfsense.
Mi LAN puede accesar a cualquier servidor FTP.
Todo lo demas esta bloqueado, si algun chistoso quiere brincarse el proxy y eliminar la
configuracion de su navegador se va a topar con pared, ya que no existe regla que permita a mis
clientes pegarle a el puerto 80/443.
Squid en modo transparente de pfsense tiene este defecto, por ello hago yo todo este rollo.
Ya que hicimos lo anterior y nuestros clientes pueden navegar sin problemas, es hora de
ensuciarnos las manos para cerrar todas las puertas y asegurar nuestra red.
1) Squid esta en /usr/local/etc/squid/
cd /usr/local/etc/squid/
2) Creamos el folder de nombre acl
mkdir acl
3) Copeamos el archivo de configguracion y le ponemos squid-custom, estamos tomando el
archivo original que nos da pfsense como plantilla.
cp squid.conf squid-custom
4) Editamos squid-custom y lo dejamos asi:
######################################################################
# Do not edit manually !
http_port 192.168.50.1:3128
icp_port 0
pid_filename /var/run/squid.pid
cache_effective_user proxy
cache_effective_group proxy
error_directory /usr/local/etc/squid/errors/English
icon_directory /usr/local/etc/squid/icons
visible_hostname localhost
cache_mgr postmaster@localhost
access_log /var/squid/logs/access.log
cache_log /var/squid/logs/cache.log
cache_store_log none
logfile_rotate 0
shutdown_lifetime 3 seconds
# Allow local network(s) on interface(s)
acl localnet src 192.168.50.0/255.255.255.0
httpd_suppress_version_string on
uri_whitespace strip
#########custom options
check_hostnames off
log_fqdn off
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir null /tmp
minimum_object_size 0 KB
maximum_object_size 10 KB
offline_mode off
# No redirector configured
# Setup some default acls
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901 249 3128 1025-65535
acl sslports port 443 563 249
acl manager proto cache_object
acl purge method PURGE
acl connect method CONNECT
acl dynamic urlpath_regex cgi-bin \?
acl unrestricted_hosts src "/usr/local/etc/squid/acl/unrestricted_hosts.acl"
acl blacklist dstdom_regex -i "/usr/local/etc/squid/acl/blacklist.acl"
cache deny dynamic
http_access allow manager localhost
######################################################################
###
Opciones Personalzadas
###
######################################################################
###Servidores Ubuntu de la Red.
acl UBUNTU_LAN src "/usr/local/etc/squid/acl/UBUNTU_LAN.acl"
###Servidores de actualizacion para Ubuntu
acl UBUNTU_UP_SERVERS dstdomain "/usr/local/etc/squid/acl/UBUNTU_UP_SERVERS.acl"
###
Fin de acl's personalizadas
###
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslports
# Always allow localhost connections
http_access allow localhost
request_body_max_size 0 KB
reply_body_max_size 0 deny all
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_initial_bucket_level 100
delay_access 1 allow all
######################################################################
###
Opciones Personalzadas
###
######################################################################
###
Nuestras ACL's en operacion.
###
### ACL sin restricciones
http_access allow unrestricted_hosts
http_access deny unrestricted_hosts
### ACL para que mis ubuntu's puedan actualizarse.
http_access allow UBUNTU_LAN UBUNTU_UP_SERVERS
http_access deny UBUNTU_LAN
###
Fin de mis ACL's
###
######################################################################
# Setup allowed acls
# Allow local network(s) on interface(s)
logfile_rotate 0 ==> Cada cuanto squid rota sus logs, por que 0? Yo me encargo
de ello para mayor control, no uso el lightsquid, uso sarg, en otro post de mi blog
viene.
cache_dir null /tmp ==> Recordar que este servidor corre la version nano, asi
que yo quiero bloquear no cachear, asi que pfsense sabe y por ello el mismo lo
configura, recordar que podemos cachear o solo bloquear.
acl
unrestricted_hosts
src
"/usr/local/etc/squid/acl/unrestricted_hosts.acl" ==> Aqui colocamos las IP's o
usuarios que no tiene restricciones, como nuestros equipos y los de los jefes.
acl blacklist dstdom_regex -i "/usr/local/etc/squid/acl/blacklist.acl" ==> Por
default aqui van todos los sitios que nadie puede usar, como faceboook, youtube,
etc, etc, si vamos a controlar todo, aqui ponemos '.' y bloquea todo, ya con las
ACL abrimos las paginas de cada grupo, es poderoso squid.
acl UBUNTU_LAN src "/usr/local/etc/squid/acl/UBUNTU_LAN.acl" ==> Aqui
estoy declarando que este acl tiene los IP's de mis servidores ubuntu que desean
actualizarse.
acl
UBUNTU_UP_SERVERS
dstdomain
"/usr/local/etc/squid/acl/UBUNTU_UP_SERVERS.acl" ==> Este acl le indico a
squid que deseo manejar aqui los sitios externos para que mis servidores ubuntu
puedan instalar, actualizarse, etc.
squid -k reconfigure
Si revisamos nuestra cache.log vamos ver esto:
2012/03/11 22:41:35| Reconfiguring Squid Cache (version 2.7.STABLE9)...
2012/03/11 22:41:35| FD 15 Closing HTTP connection
2012/03/11 22:41:35| FD 16 Closing HTCP socket
2012/03/11 22:41:35| FD 18 Closing SNMP socket
2012/03/11 22:41:35| logfileClose: closing log /var/squid/logs/access.log
2012/03/11 22:41:35| Including Configuration File: /usr/local/etc/squid/squid.conf (depth 0)
2012/03/11 22:41:35| Initialising SSL.
2012/03/11 22:41:35| logfileOpen: opening log /var/squid/logs/access.log
2012/03/11 22:41:35| Store logging disabled
2012/03/11 22:41:35| Referer logging is disabled.
2012/03/11 22:41:35| DNS Socket created at 0.0.0.0, port 15972, FD 13
2012/03/11 22:41:35| Adding domain misitio dyndns org from /etc/resolv.conf
2012/03/11 22:41:35| Adding nameserver 127.0.0.1 from /etc/resolv.conf
2012/03/11 22:41:35| Adding nameserver dns1 from /etc/resolv.conf
2012/03/11 22:41:35| Adding nameserver dns2 from /etc/resolv.conf
2012/03/11 22:41:35| Accepting proxy HTTP connections at 192.168.50.1, port 3128, FD 15.
2012/03/11 22:41:35| Accepting HTCP messages on port 4827, FD 16.
2012/03/11 22:41:35| Accepting SNMP messages on port 3401, FD 18.
2012/03/11 22:41:35| WCCP Disabled.
2012/03/11 22:41:35| Loaded Icons.
2012/03/11 22:41:35| Ready to serve requests.
Por que z? Recordar que Unix arranca los batches por orden alfabetico, ahi mismo
se localiza el batch que arranca squid, y la "S" es antes que la "Z", por ello nos
conviene que primero arranque squid con la configuracion normal y despues
nuestra configuracion.
11) Por ultimo ya solo para comprobar que todo va a funcionar, debemos
reiniciar a pfsense, no debe de haber problemas.
shutdown -r now.
En la consola cuando reinicie aparece algo asi:
Starting /usr/local/etc/rc.d/zsquid.sh...done.
En mi caso es el ultimo servicio en arrancar lo que indica que mis cambios estan
operando.
12) Cron para rotar los logs todos los dias.
59 23 * * * /usr/local/sbin/squid -k rotate
Con esto ya no necesitamos que squid rote sus logs, nosotros lo vamos hacer.
13) Listo, ya tenemos una configuracion de squid personalizada y poderosa,
ya solo es cuestion que cada quien la configure a sus necesidades.
14) Para la version nano cuando arranca posiblementes les muestre este
error en la consola:
Si observan la figura anterior squid nos manda un error que nos falta un archivo de
nombre:unrestricted_host.acl, y apunta a el directorio: /var/squid/acl.
Por que? Bien recordar que pfsense version nano se carga en memoria, entoces
muchas particiones como /var su contenido se crea al momento del arranque, por
Aparte nos dice que la linea 844 o 848 pero por ahi anda, lo abrimos con el editor
y nos vamos a esa linea, vamos a ver algo asi:
$options = array(
);
Como estamos editando nuestra propia configuracion y nuestros acl se localizan
en/usr/local/etc/squid/acl, pues vamos hackeando pfsense y ver como nos
va, comentamos esa linea y la volvemos a crear sin el parametro que nos esta
afectando, quedaria asi:
$options = array(
#'unrestricted_hosts' => 'src',
'banned_hosts' => 'src',
'whitelist' => 'dstdom_regex -i',
'blacklist' => 'dstdom_regex -i',
);
Fuente: http://www.squid-cache.org/
Los servidores proxy actan como un intermediario para los clientes en una red que solicita
recursos de otro servidor. El tipo ms comn de proxy es un proxy web.
Los servidores proxy pueden ser muy tiles para mejorar la velocidad de una conexin a
Internet mediante el almacenamiento en cach, registrar el uso de Internet, o filtrar el
trfico. El servidor proxy almacena copias locales de pginas HTML, imgenes y otros
archivos en su cach.
Servidores proxy de almacenamiento en cach puede mejorar considerablemente el
rendimiento de Internet de las redes corporativas o pginas similares donde muchos usuarios
pueden estar solicitando internet del caf.
Cuando un cliente solicita una pgina web el proxy comprueba si tiene cualquiera de los
archivos almacenados en la memoria cach, si lo hace, les sirve para el cliente sin tener que
descargarlos desde el servidor web.
Esto reduce la latencia y ahorra ancho de banda de Internet. Transparente ruta proxys el
trfico clientes a travs del servidor proxy automticamente, a diferencia de proxys
tradicionales que requieren cambios de configuracin en los sistemas cliente.
Si no est familiarizado con pfSense echa un vistazo a una Introduccin a pfSense .
La instalacin de paquetes
Empezando
Lo primero que tendrs que hacer es instalar el paquete squid en pfSense.Esto se puede
hacer desde el gestor de paquetes se encuentra bajo el men del sistema.
Busque el paquete de Squid y haga clic en el smbolo + al lado de l para comenzar la
instalacin. El proceso de instalacin tarda normalmente unos minutos en completarse.
Configuracin
Una vez completada la instalacin tendr una nueva opcin de men "Services" llamado
"Servidor Proxy".Haga clic en la nueva opcin de men para abrir la pgina de configuracin.
Aqu usted tendr que configurar la interfaz de proxy que es tpicamente LAN. A continuacin,
compruebe que la caja 'Permitir a los usuarios en la interfaz'. Luego marque la casilla 'Habilitar
proxy transparente'. Ahora desplcese hacia abajo hasta la parte inferior y pulse guardar. Esto
iniciar el servicio de calamar con los ajustes definidos por usted.
En este punto usted tiene un servidor proxy transparente funcionamiento completamente
funcional en pfSense.Usted no tiene que realizar ningn cambio en los equipos de la red para
que utilicen el proxy. Cualquier cliente que solicitan pginas web sobre el puerto 80, ser
redirigido a travs del proxy. Los usuarios de la red ni siquiera saben su trfico est pasando
por un proxy!
Ajustes de rendimiento
Hay varias opciones en la ficha cach de la pgina de configuracin de calamar que se puede
modificar para mejorar el rendimiento en su entorno. A continuacin se presentan algunas de
las configuraciones que recomiendo modificacin. Si el equipo que ejecuta el proxy tiene una
cantidad limitada de disco y memoria RAM que usted debe tener cuidado de no utilizar
temperaturas excesivamente agresivos. Por otro lado, si usted tiene un montn de recursos
para gastarlos puede aumentar la configuracin para mejorar el desempeo.
Tamao de la cach de disco duro - Ajusta la cantidad total de espacio en disco duro
calamar utilizar a los objetos de cach. Si usted tiene un disco duro grande puede
aumentar este valor para almacenar en cach ms objetos. Slo recuerde que los
objetos almacenados en cach en la memoria se recuperan ms rpido que los objetos
en el disco duro.
Si recibe un mensaje que Squid ya se est ejecutando seguir adelante y apagar el servicio y
otra vez y vuelva a ejecutar el comando. PfSense parece reiniciar Squid por s mismo cuando
se da cuenta de que no se est ejecutando.
calamar -z
Por ltimo, puede reiniciar Squid para comenzar a usar el proxy de nuevo.
/ Usr / local / sbin / squid-D
Para asegurarse de que empez usted puede comprobar el estado en el men de servicios
que se encuentra bajo el men de estado de la interfaz web.
Lightsquid Informe
Informes Proxy
Si usted est interesado en el seguimiento de la utilizacin de su proxy puede instalar un
paquete adicional llamado Lightsquid.
Lightsquid generar informes interactivos que hacen un seguimiento de todos los sitios web
visitados por los usuarios, as como una lista de los mejores sitios.
Usted puede incluso determinar qu IP visit un sitio determinado, y qu hora fue visitado.
Lightsquid se puede instalar a travs del gestor de paquetes pfSense de la misma manera que
ha instalado el calamar.
Despus de la instalacin de un nuevo elemento de men se crear bajo Estado llamado
Informe Proxy.
En la pgina de configuracin puede establecer la programacin de actualizacin de informe a
un intervalo de entre 10 minutos y 24 horas. Esto determina la frecuencia con Lightsquid
genera un nuevo informe. Puede actualizar manualmente el informe mediante el botn de
actualizacin ahora. Para ver el informe, haga clic en la pestaa Lightsquid Informe.
Mini ITX pfSense Router / Firewall con 5x Gbe LAN, SATA SSD de 32 GB precargado con 64 bits pfSense 2.1
Comprar ahora
Conclusin
Espero que este centro ha demostrado lo fcil que es configurar un proxy transparente usando
el poder de pfSense. Proxys transparentes pueden aadir valor a las redes domsticas
pequeas o grandes redes corporativas con cientos de usuarios.
Sintase libre de comentar si usted tiene cualquier pregunta y por favor hgamelo saber lo
ms que le gustara aprender sobre pfSense.
11; Listo.
Recordar que esto lo tienen que hacer lo mas rpido posible de lo contrario squid puede iniciar sin
la intervencin de uno ya que recordar que existe un monitor de squid que lo arranca si no esta
en ejecucin el servicio, si esto pasa deben iniciar desde el paso 1, as que practiquen y hagan su
batch.
Por que a veces tenemos hacer esto?
Ah veces que nuestro cache necesita una purga general, esta es una buena opcin para iniciar
con un cache limpio sin nada de datos e iniciar de nuevo.
Gracias, ya logre hacer que esto funcione, lo que hice fue lo que mencionas:
1ro una regla en el NAT "Port Forward"
Interface: LAN
External Address: Any
Protocol: TCP
External Port Range: HTTP
NAT IP: IP_Proxy
Port: 3128
Listo.
De ahi ya agregue otra para el HTTPS.
Y me fui por las reglas (Rules).
En las reglas para la LAN bloquie todo lo que pasa por la lan hacie el puerto 80 y otra para
bloquear el 443.
Listo.
Ahora si algun chistoso quita el proxy de su navegador ya se jodio por que no va a salir a
ningun lado.
Ahora si el proxy se encargara de controlar que sale y entra.
Que bonito es lo bonito cuando es bonito, saludos y gracias maaraujo
Lo que necesitamos hacer es decirle a pfsense que toda comunicacion a los protocolos http->80
y https-->443 en la red local las mande a el puerto 3128 que es donde corre squid.
Yo en lo personal, voy abriendo puertos segun los vaya necesitando, en mi caso los 2 primeros
que doy de alta en las reglas de la LAN es el puert 80 y 443. Pero ahora como acabo de instalar
squid, necesito hacer un cambio.
Las reglas RDR o "Port-Forward" se ejecutan primero que las reglas de la LAN, entonces checa
la figura como quedaria la regla para el puerto 80 "Todo paquete que atraviese por
gateway(LAN) puerto 80, mandalo a el gateway pero puerto 3128 de squid y con esto squid
recibe toda esa comunicacion.
Cuando hagas el "Port-Forward" desmarca la opcion que agrega la regla automaticamente a la
LAN.
Los mismo pasa con el puerto 443.
Ya con esto, las 2 reglas de mi LAN donde permito el paso del protocolo 80 y 443 las bloqueo.
Checa la imagen para que veas como queda.
Cuando apliques todo esto, tu pfsense va a dejar de funcionar, que es lo buscamos de un
principio, para recuperarlo tienes que agregar tu proxy a tu navegador y listo.
Cuando algun chistosito en tu red quiera brincarse el cerco y elimine los datos de tu proxy de
su navegador le va a salir la pantalla de acceso denegado.
Listo problema resuelto.