1. PfSense: 3-leg firewall

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca

Enunciat

El nostre firewall serà un PfSense amb 3 interfícies:

  • WAN: connectada via xarxa pont (172.16.19.0/24, que serà automàtica DHCP)
  • LAN: interna (192.168.1.0/24)
  • DMZ: interna per la DMZ (192.168.0.0/24)

L'esquema de xarxa, de manera gràfica, serà semblant a aquest:

M11UF2PT11.jpg


Situació inicial

Partirem de la base que els 4 hosts seran 3 màquines virtuals i el host Fedora:

  • Fedora: serà el host que estarà a la zona WAN.
  • PfSense VM: serà la màquina virtual que tindrà 3 interfícies virtuals:
  • adaptador-pont: corresponent a la zona WAN
  • xarxa interna m11-lan: corresponent a la zona LAN
  • xarxa interna m11-dmz: corresponent a la zona DMZ
  • CentOS VM: tindrà una interfície de xarxa interna m11-dmz. Hi instal·larem serveis web i SSH per a comprovar la correcta aplicació de les regles.
  • Ubuntu VM: tindrà una interfície de xarxa interna m11-lan. Serà la màquina des d'on configurarem el PfSense via web.

Procediment

Configuració interfícies PfSense

Engegarem les 3 màquines virtuals: pfSense, Ubuntu Desktop i CentOS. Per defecte, pfSense accepta configuració via web des de la interfície LAN; per tant, la configuració des de la web es faran des de l'Ubuntu desktop. El Firewall també configura per defecte les interfícies LAN i WAN de manera automàtica, mentre que la 3a interfície l'hem de configurar nosaltres manualment després d'haver fet la instal·lació utilitzant la consola:

M11UF2PT12.png


Triarem l'opció 1 per a configurar les interfícies:

M11UF2PT13.png


Escollirem les interfícies corresponents a cada zona, verificarem els canvis i acceptarem

M11UF2PT14.png


Ara tenim la interfície OPT1 engegada però sense configurar.

M11UF2PT15.png


Escollirem la opció 2 per a configurar-ne la IP d'acord amb l'enunciat

M11UF2PT16.png


Una vegada fet, se'ns mostrarà un missatge informatiu amb la nova adreça assignada

M11UF2PT17.png


En aquest punt tenim les targetes de xarxa del pfSense configurades.

M11UF2PT18.png


Configuració de les regles del tallafoc

La gestió del Firewall es farà des de la WebGUI, accessible des de la zona LAN; on nosaltres hi tenim l'Ubuntu Desktop virtual

M11UF2PT19.png


Podem començar canviant el nom de la interfície OPT1 per un nom més adequat per a identificar-lo. Farem clic al seu nom, del panell de la dreta:

M11UF2PT110.png


I dins la configuració, editarem la Description per dir-li que la volem anomenar DMZ

M11UF2PT111.png


Una vegada fet aquest canvi podem passar a crear les regles per a la zona LAN. Ho farem des de FirewallRules al panell superior

M11UF2PT112.png


Zona LAN

Escollirem la interfície que volem modificar les regles; en aquest cas la LAN. Veurem com ja hi ha unes regles predefinides.

M11UF2PT113.png


Si ens fixem amb les regles, veiem com les predefinides ja permeten qualsevol comunicació que s'origini a la LAN cap a qualsevol xarxa destí. Aquest comportament el podem comprovar si fem un ping al servidor de la DMZ (192.168.0.2) i fem un ping a qualsevol altra adreça d'Internet (e.g. 185.107.107.253):

M11UF2PT114.png


Zona WAN

En aquesta zona haurem de prohibir les connexions WANLAN però deixar passar les comunicacions entre WANDMZ; de manera que la DMZ sigui accessible des d'Internet mentre que la xarxa interna quedi protegida.

Afegirem doncs, dues regles:

La primera per a permetre el trànsit amb origen qualsevol adreça amb destí xarxa DMZ com a conjunt


La segona prohibirà el trànsit entre qualsevol adreça i la LAN


La llista de regles quedarà així:

M11UF2PT117.png


Prova ping WAN →DMZ

Haurem d'afegir primer una ruta estàtica al host Fedora per tal que envïi cap a la interfície WAN del PfSense els paquets destinats a la xarxa 192.168.1.0/24 i 192.168.0.0/24 (LAN i DMZ del PfSense, respectivament)

ip route add 192.168.1.0/24 via 192.168.7.53
ip route add 192.168.0.0/24 via 192.168.7.53

Aleshores els pings entre Fedora i CentOS de la DMZ seran possibles:

[guillem@guillemasix29 ~]$ ping 192.168.0.2 -c 3
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.208 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.432 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.476 ms

--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 86ms
Prova ping WAN →LAN

Ping directe entre Fedora i Ubuntu Desktop de la LAN es bloquejaran:

[guillem@guillemasix29 ~]$ ping 192.168.1.2 -c 3
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.

--- 192.168.1.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 31ms

Zona DMZ

En aquesta zona hem de permetre la comunicació cap a l'exterior però bloquejar l'accés a la LAN. Per a implementar-ho, podem fer-ho de dues maneres diferents:

  • Creant dues regles: una per a bloquejar l'accés DMZ →LAN i una per a permetre l'accés DMZ →any (en aquest ordre)
M11UF2PT118.png


  • Aprofitant el paràmetre Gateway que PfSense ens ofereix: de manera que permetrem el trànsit de la DMZ cap a la Gateway de la WAN; de manera que el trànsit DMZ →LAN no es contempli en cap regla i, per tant, es bloquegi.
M11UF2PT119.png


En ambdós casos aconseguim el mateix efecte; encara que sigui més senzilla la segona opció (regla única), potser queda més explícita la prohibició DMZ →LAN si implementem la primera opció i no cal accedir a opcions avançades per a definir la passarel·la cap on permetrem l'accés.

Prova ping
  • Solució 1
Permès des de CentOS cap a 185.107.107.253 mentre que es bloqueja quan es va cap a Ubuntu Desktop (LAN)


  • Solució 2

Si ens hi fixem, veiem una diferència amb l'altra opció: el paquet ICMP destinat a la LAN no queda bloquejat pel firewall sinó que acaba morint per TTL ja que s'envia a través de la gateway de la WAN i, per tant, el host on s'envia aquest paquet no es trobarà mai perquè es tracta d'una adreça privada.

Podem veure com canvia el comportament del paquet ICMP


Prova de funcionament

Per a fer un test de funcionament més extens instal·larem un servidor web al CentOS de la DMZ i a l'Ubuntu Desktop.

Accés al web de la DMZ des de WAN

M11UF2PT122.png


Accés al web de la DMZ des de LAN

M11UF2PT122.png


Accés al web de la LAN des de WAN

Al fallar per TTL del paquet, queda molt temps intentant connectar fins que el navegador fa saltar un timeout perquè no rep resposta


Accés al web de la LAN des de DMZ

Utilitzo curl per provar. Com és d'esperar la xarxa 192.168.1.0/24 no es troba a través de la WAN Gateway i la comanda falla