====== pfSense amb Vagrant ====== Propòsit de la pràctica: conèixer el software **pfSense** i la configuració bàsica per a gestió d'una xarxa petita amb clients i servidors, amb gestió dels serveis amb **HAProxy** (que ve embarcat com a //plugin// a pfSense). {{ pfsense.jpeg?400 }} Per a la pràctica necessitem [[Vagrant]] instal·lat amb el //provider// ''libvirt/KVM'' com s'explica a [[Vagrant Ubuntu libvirt]]. A les plantilles d'IsardVDI ho tindreu disponible. {{ diagrama_pfsense_vagrant_basic.png }} \\ ===== Introducció ===== pfSense és un software de gestió de routing i firewall, basat en FreeBSD (el kernel de GNU, alternatiu a Linux). Té una gestió molt còmoda via web (webConfigurator). Acostuma a trobar-se embarcat en appliances i hardware de firewall, en particular les de Netgate. {{ netgate-4200.webp?300 }} A més de les funcions bàsiques de routing i firewall també pot gestionar VPN, QoS, NAT, load balancing, reverse proxy i, via, plugins, moltes altres funcions afegides. Hi ha 2 versions de pfSense: la CE (Community Edition, actualment en la v2.9.x) i la pfSense+ (actualment la 26.x) que és la que es sol proporcionar embarcada en el hardware. La principal funció serà aïllar les xarxes internes de la WAN (Wide Area Network) fent-nos de tallafocs. Els noms interns de les xarxes son: WAN, LAN, OPT1, OPT2, etc. (on «OPT» son LANs opcionals). Cadascuna es pot assignar a una interfície diferent del dispositiu i reanomenar-se, facilitant la seva gestió. La WAN és la que ens dona accés a internet, o sigui, la que connectariem a la fibra òptica del nostre proveïdor d’internet, i on hem de ser mes restrictius amb les regles del firewall. La WAN hauria de tenir tots els ports tancats per defecte, i només obrir el 80 i 443 d’accés web quan tinguem els serveis ben configurats. En aquest cas, però, la WAN (vtnet0) coincideix amb la xarxa default de Vagrant, i necessita tenir el port 22 d’accés SSH obert, raó per la qual hem posat una regla predefinida al firewall i el servei SSH engegat perquè no doni errors poc amigables de gestionar. HAProxy respon a les sigles «High Availability Proxy» i és un software molt emprat com a proxy invers. A la pràctica el farem servir en 2 llocs: (1) a l’escriptori Isard l’instal·larem per fer un port forwarding dels ports 80 i 443 i redirigir-los al pfSense; i (2) dins de pfSense l’importarem com un mòdul afegit a mode de plugin per gestionar l’accés als serveis HTTP i HTTPS que posarem al Server 1 i Server 2. \\ ===== Vagrantfile ===== Partiu del següent Vagrantfile per a crear la VM pfSense. Afegiu un servidor amb Apache2 a cada xarxa aïllada, amb IP: 192.168.xx.20 (on xx és 31, 32, 33, 34). Apache haurà de mostrar un missatge tipus "
$ ssh-keygen
* Copiem la clau pública al pfSense (copiar contingut de l’arxiu ''~/.ssh/id_rsa.pub'' System → User Manager → Users→ admin → Edit → Keys → Authorized SSH Keys
\\
===== Configuració HAProxy dins pfSense =====
HAProxy ens permetrà redirigir les crides HTTP i HTTPS que ens arribin del bastió cap als servidors de les LANs. Abans de configurar el bastió i els certificats, ens caldrà configurar el HAProxy del pfSense. Després ja farem arribar les crides externes amb un altre HAProxy dins l’escriptori Isard.
- Assegureu que heu fet bé les parts anteriors, en especial que estan ben assignades les IPs de cada interfície i que podeu veure les VMs internes. També que el webConfigurator està al port 11111 per no col·lisionar amb la configuració del serveis web que farem a continuació.Status → Interfaces
- Instal·lar HAProxy amb el webConfigurator:System → Package Manager → Available Packages → Cercar «haproxy» → +Install
- Activar HAProxyServices → HAProxy → Settings → Enable HAProxy
Maximum Connections: 1000
- Crear Backend web1:Services → HAProxy → Backends
Name: web1
Server List:
server1 192.168.31.20 port 80
server2 192.168.32.20 port 80
Loadbalancing options: Round Robin
- Crear Frontend:Name: frontend-http
Listen Address: WAN address (IPv4)
Port 80
Default backend: web1
- Obrir firewall a la WAN perquè HAProxy pugui escoltar les peticions HTTP
Firewall → Rules → WAN → Add
Address Family: IPv4
Protocol: TCP
Source: Any
Destination: This firewall (self)
Destination Port Range: From 80 to 80
- Comproveu a Status → Services que HAProxy està funcionant correctament.
- Desactiveu el bloqueig de IPs locals a la WAN (IMPORTANT!)Interfaces → WAN → Block private networks and loopback addresses → DESACTIVATNOTA: en algunes versions de pfsense està activat per defecte, i sol ser una mesura de seguretat convenient, però en aquest cas necessitem desactivar-ho ja que la IP interna que emprem a la WAN és de tipus local (192.168./16)
- Mireu la IP de pfSense a la WAN (hauria de ser una 192.168.121.x o similar), i connecteu-vos amb el navegador web des de l’escriptori Isard, hauríeu de veure el Server 1 i Server 2 alternativament en cada recàrrega.
Arribats aquí hauriem de tenir funcionant les webs dels servers 1 i 2 accessibles des de la interfície WAN del pfSense.
\\
===== Troubleshooting =====
* Comprova les assignacions de interfaces, IPs i xarxes.
Comprova curosament les màscares de xarxa que no siguin /32 sinó /24
* Comprova que el servei HAProxy està en marxa a Status → Services
* Comprova que tens un Frontend i un Backend correctament configurats com descrit.
* Comprova que les regles del firewall a la WAN permeten visualitzar el port 80 i que NO hi ha la regla «Block private networks» activa.
* Si has apagat les VM i has tornat a engegar, pot haver canviat la IP de la WAN (va per DHCP). Comprova-ho.