Regole per uscire su Internet
-
Salve a tutti, è un anno che uso pfSense per dare accesso alla mia rete via VPN ai terminali mobili e per collegare una seconda sede sempre via VPN. Reputo pfSense un buon prodotto anche se a volte è un po' ostico.
Adesso ho la necessità di sostituire completamente il vecchio firewall con pfSense e mi ritrovo in difficoltà per una cosa senz'altro stupida ma che non riesco a risolvere rapidamente quindi mi son deciso a chiedere il vostro aiuto.
Sul mio pfSense ho una porta WAN (dove ovviamente c'è Internet), un LAN (client), una DMZ1 ed una DMZ2, oltre ovviamente le connessioni PPTP dai client in mobile e la VPN ipSec per collegare la sede secondaria.
Premesso che sono abituato a lavorare sui firewall usando la filosofia "è tutto vietato tranne quello che è esplicitamente permesso", lo scopo sarebbe di connettere tutti gli utenti della LAN ad Internet (WAN). Ovviamente non tutti gli utenti della LAN devono raggiungere le due DMZ e la VPN, alcuni devono raggiungere solo una delle DMZ o solo la VPN. Nessuno deve poter raggiungere i client connessi in PPTP.
Dare le varie regole per permettere ai vari gruppi di client di raggiungere solo quello che dovevano raggiungere è stato veramente un attimo e questo funziona benissimo.
La difficoltà che non riesco a superare è quella di dare accesso (per il momento illimitato) ad Internet a tutti i client presenti sulla LAN. Mi sarei aspettato di avere la possibilità di mettere una regola ad hoc senza andare a toccare il resto del traffico, invece il massimo che sono riuscito a fare è una regola che da source LAN verso destinazione ANY consente tutto il traffico. Si, Internet così funziona ma gli utenti della LAN sono liberi di andare dove vogliono e questo è male.
Potrei mettere una serie di regole dopo l'apertura totale che vanno a limitare quello che gli utenti possono fare. Questo non mi piace affatto perché è in totale contrasto con la filosofia del "è tutto vietato tranne quello che è esplicitamente permesso", io voglio autorizzare esplicitamente solo il traffico verso internet non dover bloccare il resto.
Ho provato anche ad indicare il gateway ma il risultato non cambia.
Spero che qualcuno mi possa illuminare. Grazie.
-
Buongiorno
Ragioniamo con una sola DMZ.
Solo alcuni ip della LAN (client) possono andare in DMZ.
Tutti gli ip della LAN possono andare su Internet.Sull'intefaccia LAN devi porre le policy in questo ordine:
SOURCE DESTINATION PROTOCOLLO ACTION
1.ip abilitati alla dmz dmz protocollo del caso permit
2. any dmz any deny
3. any any http, https, ftp, etc permit
4. any any any denyIn tal modo gli ip che devono andare in DMZ rientrano nella prima policy.
Gli ip che non possono andarci e che ci provano, rientrano nella seconda policy (e vengono bloccati).
Chi vuole andare ovunque, tranne che in DMZ, (quindi su internet) rientra nella terza policy.
La quarta policy è la classica policy di default blocca tuttoCon più DMZ ci si muove in modo simile.
Bye
-
Sull'intefaccia LAN devi porre le policy in questo ordine:
SOURCE DESTINATION PROTOCOLLO ACTION
1.ip abilitati alla dmz dmz protocollo del caso permit
2. any dmz any deny
3. any any http, https, ftp, etc permit
4. any any any deny
In tal modo gli ip che devono andare in DMZ rientrano nella prima policy.
Gli ip che non possono andarci e che ci provano, rientrano nella seconda policy (e vengono bloccati).
Chi vuole andare ovunque, tranne che in DMZ, (quindi su internet) rientra nella terza policy.
La quarta policy è la classica policy di default blocca tuttoLa tua risposta è praticamente la soluzione a cui sono arrivato pure io ma ti spiego perché non sono soddisfatto. Io sono pignolo :) paranoico :) ed uno smemorato cronico :) quindi come dicevo adotto la filosofia del "è tutto vietato tranne quello che è esplicitamente permesso". PfSense senza regole segue perfettamente questa filosofia, infatti è tutto bloccato.
Semplifichiamo ulteriormente il tuo esempio, ed assumiamo per assurdo che non vado a fare un controllo a livello di protocollo che quindi assumiamo sempre ad any. Ora analizziamo passo passo le operazioni.
Creiamo due alias, il primo con gli IP delle macchine che voglio far raggiungere sulla DMZ e lo chiameremo per l'appunto "dmz". Il secondo alias con gli IP della rete LAN che possono accedere alla DMZ e lo chiamiamo "lan2dmz" e quindi cominciamo a mettere le regole:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permitA questo punto ho abilitato solo ed unicamente il traffico da "lan2dmz" verso "dmz". Perfetto. Adesso devo abilitare tutto il traffico da LAN verso Internet (Outside). Diciamo che mi aspetterei di poter mettere una regola unica per avere qualcosa simile a questo:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. any outside any permitPurtroppo non siamo in un mondo perfetto quindi le regole diventano queste:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. any any any permitAdesso tutte le macchine vanno su Internet ma ho completamente aperto il traffico verso DMZ. No buono. La soluzione è quella di mettere un'ulteriore regola che blocca il traffico verso la DMZ non autorizzato dalla regola 1.
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. any dmz any deny
3. any any any permitOk, abbiamo quello che volevamo. Il traffico originato da lan2dmz verso dmz passa. Il traffico non originato da lan2dmz verso dmz viene bloccato. Tutto il traffico destinato da chiunque sulla rete LAN ma non diretto verso DMZ passa tranquillamente.
Tutto a posto? Forse.
Aggiungiamo al sistema un ulteriore elemento, una DMZ_2. Avrò un'altra serie di indirizzi IP che potranno collegarsi a questa nuova rete quindi creerò un alias "lan2dmz_2". Ed aggiungiamo la regola al firewall:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. any dmz any deny
3. lan2dmz_2 dmz_2 any permit
4. any any any permitIl traffico passa regolarmente da lan2dmz_2 verso dmz_2 ma… attenzione il nostro sysadmin smemorato oppure il collega che lo sostituisce si è scordato di aggiungere una ulteriore regola per chiudere il traffico non autorizzato verso dmz_2! E con configurazioni complesse può capitare facilmente. Ok, aggiungiamo l'ulteriore regola:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. any dmz any deny
3. lan2dmz_2 dmz_2 any permit
4. any dmz_2 any deny
5. any any any permitQuindi in questo esempio semplificato (immagina di dover aggiungere svariate regole per i protocolli ed i gruppi di client diversi) per ogni rete in più devo aggiungere due regole. Se mi dimentico la seconda regola ho un buco di sicurezza.
Se fossimo nel mondo perfetto che dicevo prima avremmo solo tre regole:
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. lan2dmz_2 dmz_2 any permit
3. any outside any permite le possibilità di sbagliare diminuiscono. (Troverò sicuramente il modo di fare altri errori ben più gravi ;D )
Ho provato tutte le configurazioni ma non sono riuscito a trovare il mondo perfetto. Mi dovrò accontentare…
Mi è venuto in mente solo ora che potrei creare un alias "private_networks", includerci le reti 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. A quel punto metto una regola che blocca i private networks prima dell'apertura totale. Non mi piace ma forse funziona.
SOURCE DESTINATION PORT ACTION
1. lan2dmz dmz any permit
2. lan2dmz_2 dmz_2 any permit
3. any private_networks any deny
4. any any any permit -
Grazie dell'idea, anche io cercavo un modo per risolvere la cosa.. :D
Un consiglio: come source ti conviene mettere "Lan subnet" invece di any, così è più sicuro