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).
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.
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.
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.
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 «<h1>Servidor Y</h1>» on Y serà el número de xarxa (1, 2, 3 o 4).
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # appliance pfsense config.vm.define :pfsense , primary:true do |pfsense| pfsense.vm.box = "emieza/pfsense" pfsense.vm.provider "libvirt" do |vm| vm.memory = "2048" end # credencials pfsense.ssh.insert_key = false pfsense.ssh.username = "admin" pfsense.ssh.password = "vagrant" pfsense.ssh.shell = "/bin/sh" # deshabilitem carpeta compartida per defecte, no ens cal i no funciona pfsense.vm.synced_folder ".", "/vagrant", disabled: true # creem interfícies però sense auto_config (no funciona) pfsense.vm.network "private_network", ip: "192.168.31.10", name: "net1", auto_config: false pfsense.vm.network "private_network", ip: "192.168.32.10", name: "net2", auto_config: false pfsense.vm.network "private_network", ip: "192.168.33.10", name: "net3", auto_config: false pfsense.vm.network "private_network", ip: "192.168.34.10", name: "net4", auto_config: false end # servers # crea aquí els servers Apache end
Comencem els ajustos bàsics de interfícies del pfSense:
$ ssh-keygen
~/.ssh/id_rsa.pub System → User Manager → Users→ admin → Edit → Keys → Authorized SSH Keys
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.
Status → Interfaces
System → Package Manager → Available Packages → Cercar «haproxy» → +Install
Services → HAProxy → Settings → Enable HAProxy Maximum Connections: 1000
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
Name: frontend-http Listen Address: WAN address (IPv4) Port 80 Default backend: web1
Firewall → Rules → WAN → Add Address Family: IPv4 Protocol: TCP Source: Any Destination: This firewall (self) Destination Port Range: From 80 to 80
Interfaces → WAN → Block private networks and loopback addresses → DESACTIVAT
NOTA: 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)
Arribats aquí hauriem de tenir funcionant les webs dels servers 1 i 2 accessibles des de la interfície WAN del pfSense.
Comprova curosament les màscares de xarxa que no siguin /32 sinó /24