Procedura: usare Packet Filter di FreeBSD per creare un firewall sicuro in AzureHow to use FreeBSD's Packet Filter to create a secure firewall in Azure

In questo articolo viene illustrato come distribuire un firewall NAT usando Packet Filter di FreeBSD tramite un modello di Azure Resource Manager per uno scenario server Web comune.This article introduces how to deploy a NAT firewall using FreeBSD’s Packer Filter through Azure Resource Manager template for common web server scenario.

Informazioni su PFWhat is PF?

PF (Packet Filter, chiamato anche pf) è un filtro di pacchetti con stato con licenza BSD, un componente software fondamentale per un firewall.PF (Packet Filter, also written pf) is a BSD licensed stateful packet filter, a central piece of software for firewalling. Dalla sua creazione, PF si è rapidamente evoluto e ora dispone di numerosi vantaggi rispetto ad altri firewall disponibili.PF has since evolved quickly and now has several advantages over other available firewalls. La funzionalità Network Address Translation (NAT) è sempre stata presente in PF. In seguito sono state aggiunte le funzionalità di pianificazione dei pacchetti e di gestione della coda attiva, integrando ALTQ e rendendolo configurabile tramite PF.Network Address Translation (NAT) is in PF since day one, then packet scheduler and active queue management have been integrated into PF, by integrating the ALTQ and making it configurable through PF's configuration. Anche le funzionalità come pfsync e CARP per il failover e la ridondanza, authpf per l'autenticazione delle sessione e ftp-proxy per facilitare le operazioni del firewall sul complesso protocollo FTP dispongono di PF esteso.Features such as pfsync and CARP for failover and redundancy, authpf for session authentication, and ftp-proxy to ease firewalling the difficult FTP protocol, have also extended PF. In breve, PF è un firewall potente e ricco di funzionalità.In short, PF is a powerful and feature-rich firewall.

IntroduzioneGet started

Se si desidera configurare un firewall sicuro nel cloud per i server Web, proseguire nella lettura dell'articolo.If you are interested in setting up a secure firewall in the cloud for your web servers, then let’s get started. È inoltre possibile applicare gli script usati in questo modello di Azure Resource Manager per configurare la topologia di rete.You can also apply the scripts used in this Azure Resource Manager template to set up your networking topology. Il modello Azure Resource Manager configura una macchina virtuale FreeBSD che esegue operazioni NAT/reindirizzamento tramite PF e due macchine virtuali FreeBSD con installato e configurato il server Web Nginx.The Azure Resource Manager template set up a FreeBSD virtual machine that performs NAT /redirection using PF and two FreeBSD virtual machines with the Nginx web server installed and configured. Oltre a eseguire NAT per i il traffico in uscita dei due server Web, la macchina virtuale di NAT/reindirizzamento intercetta le richieste HTTP e le reindirizza ai due server Web in modo round robin.In addition to performing NAT for the two web servers egress traffic, the NAT/redirection virtual machine intercepts HTTP requests and redirect them to the two web servers in round-robin fashion. La rete virtuale usa lo spazio di indirizzi IP non instradabile 10.0.0.2/24 ed è possibile modificare i parametri del modello.The VNet uses the private non-routable IP address space 10.0.0.2/24 and you can modify the parameters of the template. Il modello di Azure Resource Manager definisce inoltre una tabella route per l'intera rete virtuale, ovvero una raccolta di route individuali usate per sostituire quelle predefinite di Azure in base all'indirizzo IP di destinazione.The Azure Resource Manager template also defines a route table for the whole VNet, which is a collection of individual routes used to override Azure default routes based on the destination IP address.

pf_topology

Distribuire tramite l'interfaccia della riga di comando di AzureDeploy through Azure CLI

È necessario aver installato l'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure tramite il comando az login.You need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login. Come prima cosa creare un gruppo di risorse con az group create.Create a resource group with az group create. Nell'esempio seguente viene creato un gruppo di risorse denominato myResourceGroup nella posizione West US.The following example creates a resource group name myResourceGroup in the West US location.

az group create --name myResourceGroup --location westus

Quindi distribuire il modello pf-freebsd-setup con az group deployment create.Next, deploy the template pf-freebsd-setup with az group deployment create. Scaricare azuredeploy.parameters.json nello stesso percorso e definire i valori di risorse specifici, ad esempio adminPassword, networkPrefix e domainNamePrefix.Download azuredeploy.parameters.json under the same path and define your own resource values, such as adminPassword, networkPrefix, and domainNamePrefix.

az group deployment create --resource-group myResourceGroup --name myDeploymentName \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/pf-freebsd-setup/azuredeploy.json \
    --parameters '@azuredeploy.parameters.json' --verbose

Dopo circa cinque minuti, si otterranno le informazioni su "provisioningState": "Succeeded".After about five minutes, you will get the information of "provisioningState": "Succeeded". Sarà quindi possibile usare ssh verso la macchina virtuale front-end (NAT) o accedere al server Web Nginx in un browser usando l'indirizzo IP pubblico o FQDN della macchina virtuale front-end (NAT).Then you can ssh to the frontend VM (NAT) or access Nginx web server in a browser using the public IP address or FQDN of the frontend VM (NAT). Nell'esempio seguente vengono elencati gli indirizzi FQDN e IP pubblici assegnati alla macchina virtuale front-end (NAT) nel gruppo di risorse myResourceGroup.The following example lists FQDN and public IP address that assigned to the frontend VM (NAT) in the myResourceGroup resource group.

az network public-ip list --resource-group myResourceGroup

Passaggi successiviNext steps

Si desidera configurare un proprio NAT in Azure?Do you want to set up your own NAT in Azure? Open Source, gratuito ma potente?Open Source, free but powerful? PF è quindi una scelta ottimale.Then PF is a good choice. Usando il modello pf-freebsd-setup sono necessari solo cinque minuti per configurare un firewall NAT con bilanciamento del carico round robin tramite PF di FreeBSD in Azure per uno scenario di server Web comune.By using the template pf-freebsd-setup, you only need five minutes to set up a NAT firewall with round-robin load balancing using FreeBSD's PF in Azure for common web server scenario.

Se si desiderano altre informazioni sull'offerta di FreeBSD in Azure, fare riferimento all'introduzione a FreeBSD in Azure.If you want to learn the offering of FreeBSD in Azure, refer to introduction to FreeBSD on Azure.

Se si desidera approfondire la conoscenza di PF, fare riferimento al manuale di FreeBSD o al Manuale dell'utente di PF.If you want to know more about PF, refer to FreeBSD handbook or PF-User's Guide.