De Wiki inetshell
Saltar a: navegación, buscar

pfSense es un sistema operativo basado en FreeBSD especializado para su uso como firewall y router. Cuenta con una interfaz web muy intuitiva y permite realizar configuraciones avanzadas de forma sencilla. Su motor de filtrado de paquetes es el Packet Filter (PF).

Principales características[editar]

  • Firewall
  • NAT
  • Alta disponibilidad
    • CARP
    • pfSync
  • Soporte Multi-WAN
  • Balanceador de carga
    • HAProxy
    • relayd
  • Servidor VPN
    • IPsec
    • OpenVPN
  • Servicios de red
    • DNS
    • DHCP
    • TFTP
  • Portal Cautivo
  • Sistema de detección y prevención de intrusos (IDP / IPS)
    • Snort / Suricata
    • Registro
  • Proxy Web
    • Filtrado HTTP/HTTPS con Squid web proxy
    • Filtrado de malware con HAVP
    • Reporte de consumo con Lightsquid
  • Acceso seguro
    • Consola local segura
    • Acceso por SSH
    • Acceso por HTTPS
  • Soporte de autenticación externa
    • Active Directory
    • LDAP
    • RADIUS
  • Rápida instalación y respaldo de configuración
  • Estadísticas de rendimiento
    • Procesamiento
    • Tráfico
    • Conexiones
    • Usuarios VPN
  • Soporte de tecnologias
    • VLAN
    • LACP
    • Cliente DNS Dinamico (DDNS)
  • Priorización de tráfico
  • Gestor de certificados

Instalación de pfSense[editar]

Mediante CD/DVD[editar]

Mediante USB[editar]

Maquina virtual sobre Proxmox[editar]

Para instalar pfSense como una maquina virtual sobre Proxmox se requiere realizar las siguientes configuraciones:

  • Crear VM en Proxmox con los siguientes parámetros:
    • OS
      • ISO Image: Seleccionar ISO de pfSense
      • Type: Other
    • Hard Disk
      • Bus: VirtIO Block
      • Disk size (GB): 8GB (Mínimo)
    • CPU
      • Sockets: 1 (Mínimo)
      • Cores: 1 (Mínimo)
      • Type: qemu64
    • Memory
      • Use fixed size memory: 512MB (Mínimo)
      • Ballooning: Yes
    • Network
      • Bridge: vmbrX (Interfaz WAN)
      • Model: VirtIO
  • Agregar todas las tarjetas de red a utilizar
  • Editar opciones de VM
    • Use tablet for pointers: No
    • Start at boot: Yes
    • Boot Order: 1
  • Editar configuración en pfSense
    • System > Advanced > Networking > Marcar opción Disable hardware checksum offload

Comandos de consola[editar]

Estado del firewall[editar]

  • Activa firewall PF
      # pfctl -e 
  • Desactiva firewall PF
      # pfctl -d 

Configuración de pf[editar]

  • Comprueba sintaxis de reglas y carga la configuración de PF
      # pfctl -f /etc/pf.conf 
  • Elimina la configuración actual
      # pfctl -F 
  • Muestra configuración y conexiones actuales
      # pfctl -s all 
  • Muestra reglas de NAT
      # pfctl -s nat 
  • Muestra reglas de firewall
      # pfctl -s rules 
  • Muestra parámetros de tiempo de espera
      # pfctl -s timeout 
  • Muestra parámetros memoria
      # pfctl -s memory 

Eliminar sesiones[editar]

  • Elimina las conexiones de una IP específica
      # pfctl -k 192.168.0.1 
  • Elimina las conexiones de múltiples direcciones IP y redes
      # pfctl -k 192.168.0.1 -k 192.168.0.2 -k 192.168.1.0/24 

Información y estadisticas[editar]

  • Muestra todas las conexiones
      # pfctl -s states 
  • Muestra conexiones de una IP específica
      # pfctl -s states | grep 192.168.0.1 
  • Muestra información y estadísticas de filtrado
      # pfctl -s info 
  • Muestra información y estadísticas de filtrado por regla
      # pfctl -s labels 
  • Muestra interfaces disponibles
      # pfctl -s Interfaces 
  • Muestra estadísticas de una interfaz específica
      # pfctl -s Interfaces -i vtnet0 -vv 
  • Muestra lista de conexiones en tiempo real
      # pftop 

Manejo de tablas[editar]

  • Muestra las tablas existentes
      # pfctl -s Tables 
  • Muestra el contenido de la tabla especificada
      # pfctl -t ACL_ADMIN -T show 
  • Agrega una IP a la tabla especificada
      # pfctl -t ACL_ADMIN -T add 192.168.1.1 
  • Elimina una IP de la tabla especificada
      # pfctl -t ACL_ADMIN -T delete 192.168.1.1 
  • Comprueba que una IP exista en la tabla especificada
      # pfctl -t ACL_ADMIN -T test 192.168.1.1 
  • Elimina contenido de la tabla especificada
      # pfctl -t ACL_ADMIN -T flush 

Configuración de pfSense[editar]

Multi-WAN[editar]

pfSense: Multi-WAN

SQUID con Autenticacion[editar]

https://pf2ad.mundounix.com.br/en/index.html

Respaldo[editar]

Script[editar]

"Proper" pfSense backup script

Well, maybe the title is a bit ambitions, but at least the script below is is an improvement comparing to these two approaches: 1 and 2:
* It validates server-side certificate instead of ignoring them
* Logs out to invalidate the session cookie and wipes the temporary file used to store it
* Does not fetch whole bulk of RRD data


#!/bin/sh -e

user=***
password=***
host=***

cacert=$host-cacert.pem
cfgfile=$host-`date +%Y%m%d%H%M%S`.xml

cookiejar=`mktemp`

## authenticate and save session cookie
wget -q -O /dev/null --keep-session-cookies --save-cookies $cookiejar \
--post-data "login=Login&usernamefld=$user&passwordfld=$password" \
--ca-certificate $cacert https://$host/

## download the config
wget -q --load-cookies $cookiejar \
--post-data 'Submit=download&donotbackuprrd=on' -O $cfgfile \
--ca-certificate $cacert https://$host/diag_backup.php

## logout to invalidate session cookie
wget -q -O /dev/null --load-cookies $cookiejar \
--ca-certificate $cacert https://$host/index.php?logout

## erase session cookie
rm $cookiejar

To use it:
1. Make your firewall use non-default certificate. It is easy to generate a certificate in pfSense with its built-in CA. Make sure CN of the new certificate matches IP/hostname you will use to access the firewall.
2. Make CA certificate in PEM format available to this script ($host-cacert.pem file).
2. Optional: create lower-privileged user for backup retrieval, it only needs access to "Diag/Backup-Restore" page.
3. Set user/password/host parameters.

The script might be improved by adding config encryption. Should be useful because the configs apparenly carry unsalted MD5 password hashes.

Suricata IDP/IPS[editar]

Filtrado de alertas desde shell[editar]

cat alerts.log | awk -F "\[**\]" '{print $3}' | sort | uniq
cat alerts.log | awk 'BEGIN{FS="\\[\\*\\*\\] ";}{print $2}' | sort | uniq | grep "ET POLICY"
cat alerts.log | awk 'BEGIN{FS="\\[\\*\\*\\] ";}{print $2}' | sed 's/\[/|/g;  s/\] /|/g;  s/:/|/g' | sort | uniq | egrep -v "Tor Relay|Spamhaus|Compromised|Active Threat|BitTorrent|Miner|Darkwave|DealPly|Edonkey|Spyware|P2P" | awk 'BEGIN{ FS="|"} {print "#" $5; print "suppress gen_id " $2 ", sig_id " $3; print ""}'
cat /usr/local/etc/suricata/suricata_19866_vtnet3/threshold.config | grep "#" | sed 's/#//g' > /root/delete
cat ids_miner | awk 'BEGIN{FS="\\[\\*\\*\\] ";}{print $2 $3}' | sed 's/\[/|/g;  s/\] /|/g;  s/:/|/g; s/}/|/g; s/{/|/g; s/->/|/g' | awk 'BEGIN{ FS="|"}{print $5 "|" $13 "|" $15}'

Categorías recomendadas[editar]

  • BLOQUEO
    • emerging-activex.rules
    • emerging-attack_response.rules
    • emerging-botcc.portgrouped.rules
    • emerging-botcc.rules
    • emerging-ciarmy.rules
    • emerging-compromised.rules
    • emerging-current_events.rules
    • emerging-deleted.rules
    • emerging-dos.rules
    • emerging-drop.rules
    • emerging-dshield.rules
    • emerging-exploit.rules
    • emerging-ftp.rules
    • emerging-malware.rules
    • emerging-misc.rules
    • emerging-mobile_malware.rules
    • emerging-netbios.rules
    • emerging-rbn-malvertisers.rules
    • emerging-rbn.rules
    • emerging-rpc.rules
    • emerging-scan.rules
    • emerging-shellcode.rules
    • emerging-snmp.rules
    • emerging-tor.rules
    • emerging-trojan.rules
    • emerging-user_agents.rules
    • emerging-web_client.rules
    • emerging-web_server.rules
    • emerging-web_specific_apps.rules
    • emerging-worm.rules
  • INFORMACION
    • emerging-info.rules
    • emerging-p2p.rules
    • emerging-policy.rules
  • SOLO SI HAY SERVER
    • emerging-dns.rules
    • emerging-imap.rules
    • emerging-pop3.rules
    • emerging-scada.rules
    • emerging-smtp.rules
    • emerging-sql.rules
    • emerging-telnet.rules
    • emerging-tftp.rules
    • emerging-voip.rules
  • BLOQUEO A USUARIOS
    • emerging-chat.rules
    • emerging-games.rules
    • emerging-icmp.rules
    • emerging-icmp_info.rules
    • emerging-inappropriate.rules

Usar pfSense en modo bridge[editar]

https://community.adamnet.works/hc/en-us/articles/115002725594-Running-on-a-Transparent-pfSense-Bridge

https://forum.netgate.com/topic/46137/pfsense-2-0-transparent-firewall-firewall-bridge/12

Fitrado con Squid[editar]

https://forum.netgate.com/topic/100342/guide-to-filtering-web-content-http-and-https-with-pfsense-2-3/2

VPN con Google Cloud Platform[editar]

https://blog.paranoidsoftware.com/pfsense-ipsec-vpn-connection-to-azure-aws-and-google-cloud-2/

Agregar regla usando anchors[editar]

http://www.openbsd.org/faq/pf/anchors.html

echo "pass in proto tcp from 10.0.0.1 to any port 23" | pfctl -a ssh_test -f -


Bloqueo de nodos de salida TOR[editar]

https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=63.141.248.173&port=443