5109 Cover
Active Directory, Firewall, Network, OPNsense, pfSense, Windows

Trabalho Final 5109

Índice

  • Vyos
  • Instalação do pfSense
  • Acesso Através da Interface Web
  • Primeira Regra de Firewall
  • Desativar DHCP na LAN/Green
  • Restringir Pedidos DNS
  • Bloquear Tráfego ICMP
  • Proxy
  • Bloquear AnyDesk
  • Port Forwarding
  • Instalar OPNsense
  • DHCP no OPNsense
  • Bloquear Domínios .de
  • VPN IPsec Entre OPNsense e pfSense
  • VPN OpenVPN Entre OPNsense e pfSense
  • Remote Users
  • Remote Users no OPNsense
  • Captive Portal no pfSense
  • Captive Portal no OPNsense
  • High Availability no pfSense
  • High Availability no OPNsense
  • Conclusão

Introdução

 

Diagrama da Rede
Diagrama da Rede

A topologia da rede irá seguir a estrutura da imagem acima.

Serão configurados firewalls pfSense e OPNsense em failover, e terão VPNs IPsec e OpenVPN site-to-site, e OpenVPN para remote clients.

Será feita a integração com Active Directory para autenticação de users para alguns serviços, Captive Portal tanto no pfSense quanto no OPNsense também será configurado.

Várias regras de firewall para bloquear acessos tanto externos quanto internos, port forwarding para acessar através da internet websites hospedados internamente.

Entre outras configurações, incluindo algumas configurações em roteadores Vyos, que farão a ligação entre as diferentes zonas.

Vyos

Vamos começar por alterar o hostname dos roteadores, para isso é preciso primeiro entrar no modo de configuração com o comando configure, depois disso para alterar o hostname é só utilizar os seguintes comandos:

set system host-name <nome>
commit
save

Repita nos três roteadores, dando os nomes adequados.

Depois disso é preciso atribuir IPs às interfaces. Os IPs serão atribuídos de acordo com a lista abaixo:

R1:
00:50:56:25:FB:70 eth0 – NAT – 10.255.59.1/16
00:50:56:25:FB:71 eth1 – R1R3 – 10.155.170.29/30
00:50:56:25:FB:72 eth2 – R1R2 – 10.155.170.21/30
00:50:56:25:FB:73 eth3 – WAN – 10.155.170.17/30
R2:
00:50:56:34:2D:50 eth0 – R1R2 – 10.155.170.22/30
00:50:56:34:2D:51 eth1 – R2R3 – 10.155.170.25/30
00:50:56:34:2D:52 eth2 – R2OPN – 10.155.170.1/30
00:50:56:34:2D:53 eth3 – Host – 10.10.10.10/24
R3
00:50:56:35:D2:60 eth0 – R1R3 – 10.155.170.30/30
00:50:56:35:D2:61 eth1 – R2R3 – 10.155.170.26/30
00:50:56:35:D2:62 eth2 – R3PF – 10.155.170.9/30
00:50:56:35:D2:63 eth3 – Host – 10.10.10.11/24

Para atribuir um IP à uma interface é só utilizar os seguintes comandos:

set interfaces ethernet ethx address x.x.x.x/x
set interfaces ethernet ethx description <text>

Após configurar os IPs das interfaces é só fazer o commit e depois o save.

As redes nas interfaces Host são apenas o acesso por SSH aos roteadores através do Host onde as VMs estão rodando, e para habilitar esse acesso utilize o seguinte comando:

set service ssh port 22

Com os roteadores já com os IPs corretos nas interfaces corretas (e com suas interfaces ligadas às redes corretas no hypervisor) já é possível haver comunicação entre eles, entretanto eles ainda não conseguem acessar a internet, para isso é preciso primeiro configurar o NAT no roteador que está ligado à internet, que nesse caso é o R1.

Vamos começar por configurar a rota de dreno, e para isso iremos configurar uma rota estática, apontando para o IP do gateway que o R1 utiliza para acessar a internet:

set protocols static route 0.0.0.0/0 next-hop 10.255.0.1

Aqui, o IP 10.255.0.1 é o IP do gateway que o R1 está utilizando para acessar a internet.

Depois de configurada a rota estática é preciso configurar o NAT, primeiro é preciso criar uma regra dizendo qual é a interface que está ligada ao gateway, que nesse caso é a interface eth0, para criar essa regra utilizamos o seguinte comando:

set nat source rule 100 outbound-interface eth0

Agora é preciso configurar o endereço que será utilizado para fazer essa tradução, isso pode ser feito de duas maneiras, indicando diretamente qual é o endereço de IP, caso tenha um IP estático na interface que foi configurada como outbound, ou configurar como masquerade, que é especialmente útil caso o roteador esteja recebendo o IP da interface externa por DHCP, nesse caso irei configurar especificando o endereço de IP diretamente, já que essa interface tem um IP estático, isso é feito com o seguinte comando:

set nat source rule 100 translation address 10.255.59.1

Depois disso podemos configurar o IP do servidor DNS que o roteador irá utilizar para fazer a resolução de domínios, caso isso seja desejado, isso pode ser feito com o seguinte comando:

set system name-server x.x.x.x

Depois disso é só fazer o commit e save.

E com isso o R1 já tem acesso à internet, e os dispositivos que estão ligados a ele também o tem, caso estejam configurados apropriadamente, e para que os outros dois roteadores também tenham acesso à internet é preciso configurar as rotas, isso pode ser feito manualmente, através de rotas estáticas, ou através de um protocolo de roteamento, nesse caso será utilizado o protocolo OSPF (Open Shortest Path First), que irá se encarregar de propagar as redes disponíveis entre os roteadores.

Vamos começar por configurar o R1, os comandos são os seguintes:

set interfaces loopback lo address 10.1.1.1/32
set protocols ospf area 0 network 10.155.170.16/30
set protocols ospf area 0 network 10.155.170.20/30
set protocols ospf area 0 network 10.155.170.28/30
set protocols ospf passive-interface eth0
set protocols ospf passive-interface eth3
set protocols ospf default-information originate always
set protocols ospf default-information originate metric 10
set protocols ospf default-information originate metric-type 2
set protocols ospf parameters router-id 10.1.1.1
set protocols ospf redistribute connected metric-type 2
set protocols ospf redistribute connected route-map CONNECT
set policy route-map CONNECT rule 10 action permit
set policy route-map CONNECT rule 10 match interface lo

O primeiro comando define o endereço da interface loopback, que também servirá como o ID do roteador.

Os próximos três comandos servem para configurar as redes que serão anunciadas, para que possam ser acessadas através de outros roteadores.

Os próximos dois comandos configuram as interfaces eth0 e eth3 como passivas, ou seja, interfaces que não tem um roteador utilizando OSPF ligado a elas, evitando assim que tráfego OSPF seja enviado através dessa interface, reduzindo a “poluição” nessa rede e também a carga no roteador, já que não precisará processar comunicação dos protocolos de roteamento nessas interfaces.

Os próximos três comandos servem para anunciar a rota de dreno, para que os outros roteadores possam ter acesso à internet.

O próximo comando configura o ID do roteador, que é igual ao IP da interface loopback.

Os próximos dois comandos configuram a distribuição das rotas pelo protocolo e como é feito o cálculo dos pesos das rotas.

Os dois últimos configuram as regras da distribuição.

Depois de feita a configuração é só fazer o commit e save.

Com isso já temos o OSPF configurando no R1, agora é só configurar o R2 e R3, a configuração é similar, omitindo apenas a parte da rota de dreno, já que apenas o R1 está ligado à internet.

A configuração do R2 é a seguinte:

set interfaces loopback lo address 10.2.2.2/32
set protocols ospf area 0 network 10.155.170.0/30
set protocols ospf area 0 network 10.155.170.20/30
set protocols ospf area 0 network 10.155.170.24/30
set protocols ospf passive-interface eth2
set protocols ospf passive-interface eth3
set protocols ospf parameters router-id 10.2.2.2
set protocols ospf redistribute connected metric-type 2
set protocols ospf redistribute connected route-map CONNECT
set policy route-map CONNECT rule 10 action permit
set policy route-map CONNECT rule 10 match interface lo

E para o R3:

set interfaces loopback lo address 10.3.3.3/32
set protocols ospf area 0 network 10.155.170.8/30
set protocols ospf area 0 network 10.155.170.24/30
set protocols ospf area 0 network 10.155.170.28/30
set protocols ospf passive-interface eth2
set protocols ospf passive-interface eth3
set protocols ospf parameters router-id 10.3.3.3
set protocols ospf redistribute connected metric-type 2
set protocols ospf redistribute connected route-map CONNECT
set policy route-map CONNECT rule 10 action permit
set policy route-map CONNECT rule 10 match interface lo

Com isso já temos o OSPF configurado, e assim já temos acesso, de qualquer ponto da rede, à internet e às redes que foram anunciadas.

As redes ficarão, por enquanto, distribuídas dessa maneira:
R1R3 – 10.155.170.28/30
R3R2 – 10.155.170.24/30
R1R2 – 10.155.170.20/30
WAN – 10.155.170.16/30
R3pf – 10.155.170.8/30
R2OP – 10.155.170.0/30

OSPF R1
OSPF R1

As rotas configuradas no R1 através do OSPF.

OSPF R2
OSPF R2

Também no R2.

OSPF R3
OSPF R3

E no R3.

Também podemos fazer alguns testes de conectividade para confirmar que os três roteadores tem acesso à internet.

dig R1
dig R1

O comando dig no R1 mostrando que a resolução de endereços está funcionando corretamente utilizando o servidor secundário da Cloudflare.

dig R2
dig R2

Mesma coisa no R2, utilizando o servidor primário da OpenDNS/Cisco.

dig R3
dig R3

E no R3, utilizando o servidor primário da Cloudflare.

ping R1
ping R1

Ping funcionando corretamente tanto especificando diretamente o IP como fazendo a resolução do endereço no R1.

ping R2
ping R2

Mesma coisa para o R2.

ping R3
ping R3

E para o R3.

As configurações dos roteadores devem ficar assim:

R1

interfaces {
    ethernet eth0 {
        address 10.255.59.1/16
        description Interwebs
        hw-id 00:50:56:25:fb:70
    }
    ethernet eth1 {
        address 10.155.170.29/30
        description R1R3
        hw-id 00:50:56:25:fb:71
    }
    ethernet eth2 {
        address 10.155.170.21/30
        description R1R2
        hw-id 00:50:56:25:fb:72
    }
    ethernet eth3 {
        address 10.155.170.17/30
        description WAN
        hw-id 00:50:56:25:fb:73
    }
    loopback lo {
        address 10.1.1.1/32
    }
}
nat {
    source {
        rule 100 {
            outbound-interface eth0
            translation {
                address 10.255.59.1
            }
        }
    }
}
policy {
    route-map CONNECT {
        rule 10 {
            action permit
            match {
                interface lo
            }
        }
    }
}
protocols {
    ospf {
        area 0 {
            network 10.155.170.28/30
            network 10.155.170.20/30
            network 10.155.170.16/30
        }
        default-information {
            originate {
                always
                metric 10
                metric-type 2
            }
        }
        parameters {
            abr-type cisco
            router-id 10.1.1.1
        }
        passive-interface eth0
        passive-interface eth3
        redistribute {
            connected {
                metric-type 2
                route-map CONNECT
            }
        }
        refresh {
        }
    }
    static {
        route 0.0.0.0/0 {
            next-hop 10.255.0.1 {
            }
        }
    }
}
service {
    ssh {
        port 22
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 115200
        }
    }
    host-name R1
    login {
        user vyos {
            authentication {
                encrypted-password $6$FLgoZsMdlnVN2$z7o2ezyVHgqAjtPv/UyPE3l46Kg7/DJGZP9YChYmmVETaf4ozbivfu9EfZKxNf67P4nQepmK3gYohHyRlO8Ob0
                plaintext-password ""
                public-keys crappy-key {
                    key AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5nbn8bcXoMbr6+kdYK6rgifD2UbNTSh2rfXuMZO5dqp8z4GQ9fQoqUl47AiGrX4cmfoTN31VATWwLy8V8mh5rUj0eNGPSzWzx5Z9+2eGVIpkRMk4JlptHoBzIil9UhF8kUJlJr7g70jXdcB41lCboW0DxqrUBUCJd0G8+NatMiQ==
                    type ssh-rsa
                }
            }
        }
    }
    name-server 1.1.1.1
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
}


// Warning: Do not remove the following line.
// vyos-config-version: "broadcast-relay@1:cluster@1:config-management@1:conntrack@2:conntrack-sync@2:dhcp-relay@2:dhcp-server@5:dhcpv6-server@1:dns-forwarding@3:firewall@5:https@2:interfaces@20:ipoe-server@1:ipsec@5:l2tp@3:lldp@1:mdns@1:nat@5:ntp@1:pppoe-server@5:pptp@2:qos@1:quagga@8:rpki@1:salt@1:snmp@2:ssh@2:sstp@3:system@20:vrrp@2:vyos-accel-ppp@2:wanloadbalance@3:webproxy@2:zone-policy@1"
// Release version: 1.3.0-rc6

R2

interfaces {
    ethernet eth0 {
        address 10.155.170.22/30
        description R1R2
        hw-id 00:50:56:34:2d:50
    }
    ethernet eth1 {
        address 10.155.170.25/30
        description R2R3
        hw-id 00:50:56:34:2d:51
    }
    ethernet eth2 {
        address 10.155.170.1/30
        description R2OPN
        hw-id 00:50:56:34:2d:52
    }
    ethernet eth3 {
        address 10.10.10.10/24
        description Host
        hw-id 00:50:56:34:2d:53
    }
    loopback lo {
        address 10.2.2.2/32
    }
}
policy {
    route-map CONNECT {
        rule 10 {
            action permit
            match {
                interface lo
            }
        }
    }
}
protocols {
    ospf {
        area 0 {
            network 10.155.170.0/30
            network 10.155.170.20/30
            network 10.155.170.24/30
        }
        parameters {
            abr-type cisco
            router-id 10.2.2.2
        }
        redistribute {
            connected {
                metric-type 2
                route-map CONNECT
            }
        }
    }
    static {
    }
}
service {
    ssh {
        port 22
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 115200
        }
    }
    host-name R2
    login {
        user vyos {
            authentication {
                encrypted-password $6$FLgoZsMdlnVN2$z7o2ezyVHgqAjtPv/UyPE3l46Kg7/DJGZP9YChYmmVETaf4ozbivfu9EfZKxNf67P4nQepmK3gYohHyRlO8Ob0
                plaintext-password ""
                public-keys crappy-key {
                    key AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5nbn8bcXoMbr6+kdYK6rgifD2UbNTSh2rfXuMZO5dqp8z4GQ9fQoqUl47AiGrX4cmfoTN31VATWwLy8V8mh5rUj0eNGPSzWzx5Z9+2eGVIpkRMk4JlptHoBzIil9UhF8kUJlJr7g70jXdcB41lCboW0DxqrUBUCJd0G8+NatMiQ==
                    type ssh-rsa
                }
            }
        }
    }
    name-server 1.1.1.1
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
}


// Warning: Do not remove the following line.
// vyos-config-version: "broadcast-relay@1:cluster@1:config-management@1:conntrack@2:conntrack-sync@2:dhcp-relay@2:dhcp-server@5:dhcpv6-server@1:dns-forwarding@3:firewall@5:https@2:interfaces@20:ipoe-server@1:ipsec@5:l2tp@3:lldp@1:mdns@1:nat@5:ntp@1:pppoe-server@5:pptp@2:qos@1:quagga@8:rpki@1:salt@1:snmp@2:ssh@2:sstp@3:system@20:vrrp@2:vyos-accel-ppp@2:wanloadbalance@3:webproxy@2:zone-policy@1"
// Release version: 1.3.0-rc6

R3

interfaces {
    ethernet eth0 {
        address 10.155.170.30/30
        description R1R3
        hw-id 00:50:56:35:d2:60
    }
    ethernet eth1 {
        address 10.155.170.26/30
        description R2R3
        hw-id 00:50:56:35:d2:61
    }
    ethernet eth2 {
        address 10.155.170.9/30
        description R3PF
        hw-id 00:50:56:35:d2:62
    }
    ethernet eth3 {
        address 10.10.10.11/24
        description Host
        hw-id 00:50:56:35:d2:63
    }
    loopback lo {
        address 10.3.3.3/32
    }
}
policy {
    route-map CONNECT {
        rule 10 {
            action permit
            match {
                interface lo
            }
        }
    }
}
protocols {
    ospf {
        area 0 {
            network 10.155.170.28/30
            network 10.155.170.24/30
            network 10.155.170.8/30
        }
        parameters {
            abr-type cisco
            router-id 10.3.3.3
        }
        redistribute {
            connected {
                metric-type 2
                route-map CONNECT
            }
        }
    }
    static {
    }
}
service {
    ssh {
        port 22
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 115200
        }
    }
    host-name R3
    login {
        user vyos {
            authentication {
                encrypted-password $6$FLgoZsMdlnVN2$z7o2ezyVHgqAjtPv/UyPE3l46Kg7/DJGZP9YChYmmVETaf4ozbivfu9EfZKxNf67P4nQepmK3gYohHyRlO8Ob0
                plaintext-password ""
                public-keys crappy-key {
                    key AAAAB3NzaC1yc2EAAAADAQABAAAAgQC5nbn8bcXoMbr6+kdYK6rgifD2UbNTSh2rfXuMZO5dqp8z4GQ9fQoqUl47AiGrX4cmfoTN31VATWwLy8V8mh5rUj0eNGPSzWzx5Z9+2eGVIpkRMk4JlptHoBzIil9UhF8kUJlJr7g70jXdcB41lCboW0DxqrUBUCJd0G8+NatMiQ==
                    type ssh-rsa
                }
            }
        }
    }
    name-server 1.1.1.1
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
}


// Warning: Do not remove the following line.
// vyos-config-version: "broadcast-relay@1:cluster@1:config-management@1:conntrack@2:conntrack-sync@2:dhcp-relay@2:dhcp-server@5:dhcpv6-server@1:dns-forwarding@3:firewall@5:https@2:interfaces@20:ipoe-server@1:ipsec@5:l2tp@3:lldp@1:mdns@1:nat@5:ntp@1:pppoe-server@5:pptp@2:qos@1:quagga@8:rpki@1:salt@1:snmp@2:ssh@2:sstp@3:system@20:vrrp@2:vyos-accel-ppp@2:wanloadbalance@3:webproxy@2:zone-policy@1"
// Release version: 1.3.0-rc6

Instalação do pfSense

O pfSense ficará ligado ao R3, e terá internamente 3 redes, Green, Blue e Orange (DMZ), e mais adiante, uma quarta rede para a sincronização com uma segunda instância para alta disponibilidade, contando com a interface WAN, para um total de 5 interfaces necessárias, e como para os roteadores, uma interface extra para acesso direto do Host para facilitar o acesso à interface web diretamente pelo Host, sem precisar de uma VM para isso, para um total de 6 interfaces de rede.

As interfaces ficarão dessa maneira:

00:50:56:33:94:B0 – R3-pf/WAN 10.155.170.10/30
00:50:56:33:94:B1 – pfGreen 172.29.170.1/23
00:50:56:33:94:B2 – pfOrange 10.18.170.1/29
00:50:56:33:94:B3 – pfBlue 10.0.170.1/24
00:50:56:33:94:B4 – pfSync 172.168.255.1/30
00:50:56:33:94:B5 – Host 10.10.10.20/24

Após a instalação, para evitar problemas, recomendo não só remover o ISO da VM, mas remover completamente a “unidade óptica”, para não correr o risco da VM iniciar através de alguma imagem que esteja lá.

Após reiniciar a VM chegamos a essa tela:

pfSense primeiro boot
pfSense primeiro boot

Aqui iremos iniciar a configuração, primeiro vamos configurar as interfaces, para isso escolha a opção 1) Assign Interfaces.

Assign Interfaces
Assign Interfaces

Não iremos configurar VLANs, por isso selecione n.

A primeira interface a ser definida é a WAN, nesse caso, que aqui será a interface em0.

Definir interfaces - WAN
Definir interfaces – WAN

Depois disso será pedido para escolhermos qual será a interface para a LAN, aqui será a em1.

Definir interfaces - LAN
Definir interfaces – LAN

Depois disso será pedido para definir as interfaces Optional 1-4, é só continuar por ordem, escolhendo as interfaces em2 até em5.

Definir interfaces - OPT1
Definir interfaces – OPT1

Quando terminado teremos as 6 interfaces definidas.

Interfaces definidas
Interfaces definidas

Após alguns momentos estamos de volta à tela inicial, dessa vez com as 6 interfaces à mostra.

Tela inicial mostrando 6 interfaces
Tela inicial mostrando 6 interfaces

Agora será preciso definirmos alguns IPs, para isso escolha a opção 2) Set interface(s) IP address.

Escolha a interface a definir o IP
Escolha a interface a definir o IP

Aqui podemos escolher qual interface desejamos dar um IP, vamos começar pela interface 1 – WAN.

Configurar por DHCP s/n
Configurar por DHCP s/n

Será perguntado se desejamos usar DHCP para atribuir um IP a essa interface, iremos atribuir IPs manualmente, por isso selecione n.

Definir IP da WAN
Definir IP da WAN

O IP dessa interface ficará como 10.155.170.1/30.

Definir IP do gateway
Definir IP do gateway

Agora precisamos definir o IP do gateway, para que o pfSense tenha acesso à internet, que aqui será 10.155.170.9.

Configurar IPv6
Configurar IPv6

Agora será perguntado se desejamos configurar IPv6 por DHCP, não iremos utilizar IPv6, por isso selecione n.

Endereço IPv6 para WAN
Endereço IPv6 para WAN

Como dissemos que não queremos configurar IPv6 por DHCP, nos é pedido para definir manualmente um endereço, como não iremos utilizar IPv6, apenas aperte Enter.

Protocolo da interface web
Protocolo da interface web

Agora nos é perguntado se desejamos mudar o protocolo da interface web de HTTPS para HTTP, escolha a opção que desejar, tendo sempre em mente que não é recomendado o acesso à interface web através da interface WAN, e caso realmente seja necessário, é recomendado utilizar HTTPS.

Interface WAN configurada
Interface WAN configurada

Com isso já temos a interface WAN configurada.

O processo é o mesmo para configurar o IP das outras interfaces, as únicas diferenças sendo não ser necessário configurar o endereço de um gateway, já que para essas interfaces, o próprio pfSense será o gateway, e nos ser perguntado se desejamos habilitar o servidor DHCP nessas interfaces, para atribuir IPs aos clientes que sejam ligados a ela.

É possível configurar o resto das interfaces diretamente por aqui ou continuar a configuração através de um cliente ligado à rede LAN, como temos a interface OPT4, que será utilizada para esse fim, irei configurar apenas mais essa interface por aqui, antes de continuar a configuração pela interface web.

Habilitar o servidor DHCP
Habilitar o servidor DHCP

Aqui nos é perguntado se desejamos habilitar o servidor DHCP para essa interface, aqui não será necessário, selecione a opção n.

Interfaces configuradas
Interfaces configuradas

Aqui podemos ver as interfaces que temos configuradas nesse momento, as restantes interfaces serão configuradas através da interface web, mas para podermos a acessar através da interface OPT4 precisamos primeiro desativar o firewall, já que nesse momento ela pode ser acessada apenas através da interface LAN.

Para desativar o firewall é preciso acessar o terminal, para isso selecione a opção 8) Shell.

Shell
Shell

Aqui podemos desativar temporariamente o firewall com o comando pfctl -d.

Firewall desativado
Firewall desativado

E aqui podemos ver que o firewall foi desativado, tenha atenção que sempre que alguma configuração for aplicada através da interface web, por isso é possível que seja necessário repetir esse procedimento algumas vezes até que o acesso por essa interface esteja completamente configurado.

E com isso já podemos acessar a interface web através do IP 10.10.10.20.

Acesso Atráves da Interface Web

Interface web - certificado
Interface web – certificado

Como esse é um certificado criado pelo próprio pfSense, é preciso o aceitar manualmente.

Login interface web
Login interface web

E com isso já temos acesso à interface web, as credenciais de acesso são admin e pfsense.

Configuração inicial
Configuração inicial

E com isso podemos iniciar o processo de configuração, clique em Next para prosseguir.

Netgate Support
Netgate Support

Caso queira mais informações sobre as opções de suporte da Netgate clique em Learn more, caso contrário, clique em Next para prosseguir.

Informações Gerais
Informações Gerais

Aqui é possível configurar o hostname, domínio e endereços dos servidores de DNS que deseja utilizar.

Informações Gerais
Informações Gerais

Após configurar da maneira que deseja, clique em Next.

Time Server
Time Server

Aqui pode configurar o servidor NTP e o fuso horário que deseja, clique em Next quando estiver satisfeito.

Configurar a interface WAN
Configurar a interface WAN

Aqui pode fazer configurações à interface WAN.

Configurar Interface WAN - Permitir redes privadas
Configurar Interface WAN – Permitir redes privadas

Como iremos trabalhar apenas com IPs privados, é preciso desativar essas duas opções, caso contrário não iremos conseguir acessar os servidor que estão do lado de dentro do firewall, depois de desselecionar essas duas opções, clique em Next.

Configurar interface LAN
Configurar interface LAN

Aqui podemos configurar o IP da interface LAN, ficará na rede Green

Novo IP para a interface LAN
Novo IP para a interface LAN

Depois de colocar o IP que deseja para essa interface, clique em Next.

Definir a senha da conta admin
Definir a senha da conta admin

Agora é preciso definir uma nova senha para a conta admin, depois de escolher a nova senha clique em Next.

Aplicar as novas configurações
Aplicar as novas configurações

Agora será preciso aplicar as novas configurações, clique em Reload.

Terminar
Terminar

E com isso terminamos as configurações iniciais, clique em Finish para terminar.

Depois de clicar em Finish será preciso desativar novamente o firewall através do terminal.

Notificações Legais
Notificações Legais

Depois que o firewall for desativado temos acesso à interface principal, clique em Accept para fechar esse popup.

Pesquisa
Pesquisa

Caso queira participar da pesquisa clique no link User survey, caso contrário clique em Close.

Dashboard
Dashboard

E com isso temos acesso ao Dashboard.

Firewall - Rules
Firewall – Rules

Vamos começar por permitir o acesso à interface web através da interface OPT4, para isso vá em Firewall -> Rules.

Primeira Regra de Firewall

OPT4
OPT4

Clique na aba OPT4.

Adicionar Regra
Adicionar Regra

Clique em Add.

Nova regra
Nova regra

Essa regra irá permitir qualquer protocolo (pode restringir apenas a TCP para apenas ter acesso à interface web), irá permitir tráfego originado da rede configurada na interface OPT4, caso deseje pode restringir apenas a um único endereço de IP, e o destino é apenas ao IP que foi dado a essa interface, dessa maneira nenhum tráfego vindo dessa rede chegará a nenhuma outra rede do pfSense.

Depois de terminada a configuração da regra clique em Save.

Aplicar alterações
Aplicar alterações

Agora será preciso aplicar essas alterações, para isso clique em Apply Changes.

Alterações aplicadas com sucesso
Alterações aplicadas com sucesso

É possível que demore alguns instantes até essa regra ficar ativa, por isso é normal que perca acesso à interface web temporariamente.

E com isso já não precisamos mais nos preocupar em ficar sem acesso à interface web sempre que for feita alguma alteração ao firewall, e para confirmar que o firewall está ativo, pode ir até o terminal e utilizar o comando pfctl -e para o ativar, deverá receber de volta uma mensagem dizendo que ele já está ativo.

Iremos configurar as outras interfaces de rede, mas para isso, primeiro será necessário desativar alguns serviços DHCPv6 que estão ativos.

Servidor DHCPv6
Servidor DHCPv6

Para isso clique em Services -> DHCPv6 & RA.

Desativar Servidor DHCPv6
Desativar Servidor DHCPv6

Em DHCPv6 Server desselecione a opção Enable DHCPv6 server on interface LAN e depois clique em Save no final da página.

Router Advertisements
Router Advertisements

Depois, na aba Router Advertisements, em Router mode selecione Disabled, depois clique no botão Save no final da página.

Com isso já podemos alterar as configurações da interface LAN.

Configurar interface LAN
Configurar interface LAN

Clique em Interfaces -> LAN.

Alterar o nome da interface
Alterar o nome da interface

Aqui podemos fazer várias alterações nessa interface, incluindo o seu IP, nesse caso apenas o seu nome/descrição será alterado.

Novo nome e salvar
Novo nome e salvar

Após escrever o novo nome, em IPv6 Configuration Type selecione None, depois clique no botão Save, no final da página.

Aplicar Alterações
Aplicar Alterações

Clique em Apply Changes.

Novo nove da interface LAN
Novo nove da interface LAN

Aqui podemos ver que a interface LAN agora se chama GREEN (Em alguns locais o nome aparece com todas as letras maiúsculas, em outros  aparece da maneira como foi escrita, isso é normal).

Após repetir esses passos para a interface OPT4 para a Renomear para Host, vamos configurar as interfaces para as redes Blue e Orange.

Configurar interface OPT1/Orange
Configurar interface OPT1/Orange

Vamos as configurar por ordem, começando pela interface OPT1, que ficará como Orange, clique em Interfaces -> OPT1.

Interface OPT1-Orange
Interface OPT1-Orange

Aqui temos acesso às configurações dessa interface.

Interface Orange (DMZ)
Interface Orange (DMZ)

É preciso primeiro habilitar essa interface, selecione a opção Enable interface, depois, em Description, dê o nome que deseja, nesse caso ficará como Orange (DMZ), em IPv4 Configuration Type, selecione Static IPv4, e mais abaixo, em IPv4 Address, coloque o IP e máscara que deseja para essa interface, nesse caso ficará como 10.18.170.1/29, depois disso clique em Save.

Aplicar Alterações
Aplicar Alterações

Clique em Apply Changes.

Interface Blue
Interface Blue

Repetir os passos para a interface Blue.

Interfaces configuradas
Interfaces configuradas

E com isso já temos as interfaces que iremos precisar nesse momento já configuradas.

Desativar DHCP na LAN/Green

Na rede Green teremos uma máquina com o Windows Server, que tem o seu próprio servidor DHCP, e para evitar conflitos precisamos primeiro desativar o servidor DHCP do pfSense que está ativo na interface Green.

Servidor DHCP
Servidor DHCP

Vá em Services -> DHCP Server.

 Servidor DHCP ativo
Servidor DHCP ativo

Aqui podemos ver que o servidor DHCP está ativo nessa interface.

Servidor DHCP desativado
Servidor DHCP desativado

Desative-o e clique no botão Save no fim da página.

Com isso o servidor DHCP do Windows Server não terá mais problemas e poderá atribuir IPs aos clientes que estejam ligados a essa rede.

Cliente com IP atribuído pelo Windows Server
Cliente com IP atribuído pelo Windows Server

Aqui temos o cliente que recebeu IP através do servidor DHCP do Windows Server.

Lease DHCP Windows Server
Lease DHCP Windows Server

E aqui temos o Lease no Windows Server.

Restringir Pedidos DNS

Agora é preciso restringir o acesso à servidores DNS para os dispositivos que estejam na rede Green, permitindo apenas o Windows Server fazer esses pedidos, para que os outros dispositivos possam usar apenas o Windows Server como servidor DNS.

A zona Green, previamente LAN, no pfSense, por definição vem com algumas regras já configuradas no firewall, uma para permitir sempre os dispositivos ligados a essa rede o acesso à interface web, e outra para permitir qualquer tipo de tráfego que esteja saindo dessa rede.

Serão necessárias algumas regras para bloquear o acesso à servidores DNS externos para os clientes, enquanto esse acesso é permitido ao Windows Server, também será necessário criar uma regra para permitir que os clientes naveguem na internet.

Firewall - Rules
Firewall – Rules

O primeiro passo é ir até a página das regras do firewall, clique em Firewall -> Rules.

Regras do Firewall na rede Green
Regras do Firewall na rede Green

Vá para a aba da rede Green.

Regra que permite todo o tráfego desativada
Regra que permite todo o tráfego desativada

Será preciso desativar ou remover a regra que permite todo o tráfego originado dessa rede, para a desativar clique no ícone 🚫 que está do lado direito da regra, e caso queira a excluir clique no ícone 🗑 que está do lado direito da regra, depois clique em Apply Changes.

Firewall - Aliases
Firewall – Aliases

Como será necessário aplicar a mesma regra para mais do que uma porta, para não ter que criar duas regras iguais para portas diferentes, vamos criar aliases para essas portas, para isso clique em Firewall -> Aliases.

Criar aliases para as portas
Criar aliases para as portas

Para criar esses aliases vá para a aba Ports e clique em Add.

Portas do serviço DNS
Portas do serviço DNS

É preciso dar um nome a esse alias, a descrição é opcional, em Type certifique-se de que Port(s) esteja selecionado, e abaixo, em Port(s), iremos adicionar as portas.

A primeira porta será a 53, que é a porta tradicionalmente utilizada pelo serviço DNS, coloque o número da porta e uma descrição, se desejar, depois clique em Add Port, para adicionarmos uma segunda porta, essa segunda porta será a porta 853, que é utilizada pelo serviço DNS quando o tráfego é encriptado.

Depois de adicionar essas duas portas clique em Save.

Portas Web
Portas Web

O processo será repetido para o tráfego HTTP e HTTPS, nesse caso para as portas 80 e 443.

Aliases criados
Aliases criados

Aqui temos os dois aliases criados.

Regra permitindo DNS para o Windows Server
Regra permitindo DNS para o Windows Server

Agora vamos criar as regras no firewall, para isso volte até a página das regras para a rede Green e clique em Add para criar uma nova regra (a ordem importa, por isso essa regra deve ser a primeira da lista, por isso clique no botão Add com a seta apontando para cima).

Aqui iremos configurar essa regra, em Action selecione Pass, a interface deve ser GREEN, como não estamos utilizando IPv6, em Address Family selecione IPv4, em Protocol selecione TCP/UDP, já que em alguns casos específicos TCP é utilizado pelo DNS.

Em Source selecione Single host or alias e coloque o IP do Windows Server, já que ele será o único com permissão para acessar servidores DNS externos.

Em Destination deixe any, e em Destination Port Range deixe o primeiro e terceiro campos como (other) e no segundo e quarto coloque o alias criado para as portas DNS.

Caso queira colocar uma descrição para essa regra, a coloque no campo Description, em Extra Options.

Depois clique em Save.

Regra para bloquear o tráfego DNS para a rede Green
Regra para bloquear o tráfego DNS para a rede Green

Agora iremos criar uma regra que irá bloquear o tráfego DNS para fora da rede para o resto dos dispositivos.

A primeira parte é igual à regra anterior, com a única diferença sendo que em Action, iremos selecionar Block em vez de Pass.

Em Source selecione GREEN net, já que essa regra se aplica ao tráfego originado da rede inteira.

Destination ficará da mesma maneira que a regra anterior.

Coloque uma descrição apropriada e clique em Save.

Regras de acesso a DNS criadas
Regras de acesso a DNS criadas

Aqui podemos ver as duas regras para o acesso a servidores DNS externos, é importante que elas estejam nessa ordem, a regra que permite o acesso ao Windows Server acima da regra que bloqueia o acesso à rede.

Regra permitindo o acesso web
Regra permitindo o acesso web

Agora para a criação da regra que permite o acesso à web aos dispositivos da rede Green.

Essa regra irá permitir o acesso, por isso em Action é preciso selecionar Pass, a interface é GREEN e nesse caso o protocolo é apenas TCP.

Essa regra irá permitir o tráfego originado de toda a rede Green, por isso em Source selecione Green net.

Em Destination, deixe como any e para as portas, da mesma maneira como foi feito para as regras para o DNS, coloque o nome do alias criado para as portas web.

Dê uma descrição para a regra e clique em Save.

Regras criadas para a zona Green
Regras criadas para a zona Green

Com isso já temos as regras básicas criadas e já podemos fazer alguns testes.

Dig em um cliente
Dig em um cliente

Aqui podemos ver que o cliente não consegue utilizar nenhum outro servidor DNS além do Windows Server.

Dig no Windows Server
Dig no Windows Server

O Windows Server tem acesso à servidores DNS externos.

Acesso à páginas web pelo cliente
Acesso à páginas web pelo cliente

O cliente pode navegar na internet sem problemas.

Acesso à páginas web pelo Windows Server
Acesso à páginas web pelo Windows Server

Assim como o Windows Server.

Bloquear Tráfego ICMP

Iremos bloquear o tráfego ICMP originado das redes internas do firewall para todas as redes no intervalo 10.155.170.0/27, para isso é preciso criar uma regra que irá bloquear esse tipo de tráfego.

Aqui temos duas opções, criar uma regra para cada interface ou criar uma regra flutuante e selecionar de uma só vez todas as interfaces internas, para facilitar a gestão, vamos optar por uma regra flutuante.

Depois de decidir onde essa regra será criada, é preciso decidir como essa regra será criada, e existem algumas maneiras diferentes de o fazer, uma delas é criar duas regras, uma permitindo o tráfego ICMP, originado das redes internas, para todas as redes, com outra regra bloqueando apenas o tráfego destinado à rede que não desejamos (e isso pode ser feito de duas “maneiras”, uma delas é com a regra que permite o tráfego ICPM para todas as redes primeiro, e a regra que bloqueia o tráfego para a rede que desejamos bloquear abaixo da regra anterior, ou então colocar essa regra logo acima e selecionar a opção Quick, que aplica a regra imediatamente caso haja uma correspondência, e dessa maneira não chega a comparar com as regras a seguir), e outra é criar uma regra que permite o tráfego ICMP originado das redes internas e quando selecionamos o destino, colocamos a rede que não queremos que esteja acessível e selecionamos a opção Invert match, dessa maneira o tráfego é permitido para todas as redes, exceto a rede que especificamos.

Iremos criar uma regra flutuante com a opção Invert match, para simplificar e usarmos apenas uma única regra.

Firewall - Rules
Firewall – Rules

Clique em Firewall -> Rules.

Firewall - Floating Rules
Firewall – Floating Rules

Depois na aba Floating e em Add (como não temos nenhuma regra aqui, tanto faz se é para adicionar uma regra acima ou abaixo).

Regra ICMP
Regra ICMP

Em Action selecione Pass, em Interface selecione as interfaces das redes internas, nesse caso serão as interfaces GREEN, ORANGEDMZ e BLUE, em Direction deixe como any, Address Family fica como IPv4, como nas outras regras, e em Protocol selecione ICMP, pode deixar a opção ICMP Subtypes como any.

A opção Source pode ficar como any, já que essa regra será aplicada a várias interfaces, com diferentes redes, e em Destination selecione a opção Invert match e no menu a opção Network, e adicione a rede que deseja bloquear, como iremos bloquear várias redes contíguas, podemos simplesmente colocar o endereço da primeira rede e uma máscara que abranja todas as redes em questão.

Coloque uma descrição e clique em Save.

Aplicar regra
Aplicar regra

A regra já foi criada, mas ainda não está ativa, clique em Apply Changes para que seja aplicada.

Regra aplicada
Regra aplicada

Com isso já temos a nossa regra ativa e podemos fazer alguns testes.

Novo IP no R1
Novo IP no R1

Adicionei um novo IP a uma das interfaces do R1 e adicionei a rede desse IP nas redes propagadas pelo OSPF para que seja propagada aos outros roteadores.

Ping de um cliente em uma rede interna
Ping de um cliente em uma rede interna

E aqui podemos ver que o cliente, do lado de dentro do firewall, não consegue fazer ping a redes que configuramos para serem excluídas na regra, entretanto, consegue fazer ping ao IP adicionado ao R1.

Proxy

Existem alguma maneiras diferentes de se configurar um proxy no pfSense, aqui iremos instalar o Squid.

Package Manager
Package Manager

Para instalar o Squid vá em System -> Package Manager.

Available Packages
Available Packages

Depois clique na aba Available Packages.

Squid
Squid

No campo Search term coloque squid e clique em Search, depois em Install para o pacote squid.

Confirmar instalação
Confirmar instalação

Clique em Confirm para confirmar a instalação do pacote.

Instalação do Squid
Instalação do Squid

Com isso a instalação do Squid será iniciada, aguarde alguns momentos até que seja terminada.

Instalação terminada com sucesso
Instalação terminada com sucesso

Com isso temos o Squid instalado com sucesso.

Squid Proxy Server
Squid Proxy Server

Depois de terminar a instalação, clique em Services -> Squid Proxy Server.

Proxy Server
Proxy Server

Com isso entramos nas configurações do servidor proxy, mas antes que possamos fazer qualquer outra coisa, é preciso configurar o cache local, para isso clique na aba Local Cache.

Local Cache
Local Cache

Aqui é possível fazer várias configurações referentes ao caching de conteúdo, para que os computadores da rede não tenham que ir buscar na internet conteúdo que esteja salvo em cache, possivelmente poupando largura de banda e aumentando a velocidade das transferências para os clientes, mas aqui não iremos usar essa função, caso queira mais informações sobre essa funcionalidade pode sempre ler a documentação.

Em Disable Caching, selecione a opção Disable caching completely e depois clique no botão Save no final da página.

Antes de continuarmos a configuração é preciso primeiro criar um novo certificado CA para a emissão de um novo certificado que será utilizado pelo proxy.

Certificate Manager
Certificate Manager

Clique em System -> Cert. Manager.

Adicionar novo certificado CA
Adicionar novo certificado CA

Aqui iremos criar o novo certificado CA, para isso, na aba CAs, clique em Add.

Criar certificado
Criar certificado

Aqui é preciso preencher os campos para gerar o certificado.

Esse certificado será utilizado para que o proxy, configurado como man-in-the-middle, possa inspecionar todo o tráfego que passe por isso, isso tem óbvias implicações de privacidade, e sempre que esse tipo de proxy for utilizado é preciso comunicar os usuários, também é preciso verificar a legalidade desse tipo de uso onde se encontra, já que como todo o tráfego é decriptado, a cadeia de confiança entre servidor e cliente é quebrada, e todo o tráfego que era confidencial, agora está visível para o proxy, questões éticas e legais à parte, prossiga por conta própria.

Preencher dados do certificado
Preencher dados do certificado

Essa autoridade certificadora óbviamente não é a mesma que emitiu os certificados legítimos dos websites que serão visitados, por isso é de bom tom deixar claro a finalidade desse certificado e não tentar enganar os usuários do sistema.

Depois de preencher os dados clique em Save.

Certificado criado
Certificado criado

Com isso já temos o certificado criado, agora é preciso exportar esse certificado para que ele possa ser importado nas máquinas clientes, para isso, em Actions, do lado direito da janela, clique no ícone redondo similar a uma roda dentada, assim irá exportar o certificado que pode ser instalado nas máquinas clientes, essa instalação pode ser feita de várias maneiras, e vai depender do OS utilizado, no caso de máquinas Windows que façam parte de um domínio com um servidor AD, isso pode ser feito através de GPOs.

Depois de importar o certificato CA nas máquinas clientes, elas irão aceitar os certificados gerados pelo pfSense, e para que a mensagem dizendo que existe um potenção risco ao acessar a interface web, podemos criar um novo certificado para ela.

Criar certificado
Criar certificado

Clique na aba Certificates e depois no botão Add/Sign.

Criar Novo Certificado
Criar Novo Certificado

Aqui é só preencher o certificado como for mais apropriado, e em Certificate Type selecionar a opção Server Certificate.

Dados do Novo Certificado
Dados do Novo Certificado

Depois de preencher os dados corretamente, clique em Save.

Novo Certificado Criado
Novo Certificado Criado

E com isso já temos o novo certificado criado, agora é preciso configurar o sistema para utilizar esse novo certificado na interface web.

System - Advanced
System – Advanced

Clique em System -> Advanced.

SSL/TLS Certificate
SSL/TLS Certificate

Aqui temos a configuração atual da interface web, em SSL/TLS Certificate podemos ver que o certificado que foi gerado durante a instalação está sendo utilizado, precisamos selecionar o certificado que acabamos de gerar.

Selecionar o Nosso Certificado
Selecionar o Nosso Certificado

Selecione o certificado que foi criado e clique em Save no final da página.

Novo Certificado Ativo
Novo Certificado Ativo

E aqui temos o novo certificado ativo.

Vamos agora configurar o proxy, volte para a página de configuração do proxy.

Configurar e Habilitar o Proxy
Configurar e Habilitar o Proxy

Aqui temos o proxy configurado, primeiro é preciso o habilitar, para isso, em Enable Squid Proxy, marque a caixa Check to enable the Squid proxy, e certifeique-se de que a caixa de seleção em Keep Settings/Data também esteja selecionada, caso contrário, todas as configurações serão perdidas caso seja necessário reinstalar o pacote, ou caso seja instalada uma atualização.

Em Proxy Interface(s) selecione as interfaces que deseja que o proxy esteja ativo, nesse caso ele está ativo apenas na interface Green.

Em Proxy Port é possível configurar a porta em que o servidor proxy vai aceitar conexões, caso não esteja utilizando o modo transparente, a porta padrão é a 3128.

Em Transparent HTTP Proxy marque a caixa Enable transparent mode to forward all requests for destination port 80 to the proxy server. para ativar o proxy transparente, dessa maneira, não será preciso configurar nenhuma opção de proxy nos clientes, e o tráfego irá passar pelo servidor automaticamente, tenha atenção que o modo transparente não permite configurações mais avançadas, como filtros baseados em autenticação LDAP e similares.

Em Transparent Proxy Interface(s) é possível escolher em quais interfaces o proxy transparente está ativo.

Bypass Proxy for Private Address Destination serve para que tráfego para redes privadas não passe pelo proxy, isso pode ser beneficial quando não seja necessário monitorar o tráfego a sites internos.

Em Bypass Proxy for These Source IPs é possível configurar quais clientes não terão seu tráfego interceptado, interessante para servidores, por exemplo.

Bypass Proxy for These Destination IPs faz o oposto, libera o tráfego para um destino específico, dessa maneira todos os clientes poderão acessar esses endereços sem ter seu tráfego interceptado, útil para invadir a privacidade dos usuários caso acessem sites com informações pessoais e privadas.

Abaixo, em HTTPS/SSL Interception, marque a caixa Enable SSL filtering, para configurar o proxy como Man In the Middle.

Em SSL/MITM Mode selecione a opção Splice Whitelist, Bump Otherwise, essa opção não vai desencriptar o tráfego do que estiver em uma whitelist nas ACLs, caso contrário vai desencriptar o tráfego e apresentar um certificado auto-assinado para o cliente, interceptando esse tráfego.

SSL Intercept Interface(s) é com nos casos anteriores, selecione as interfaces de rede em que essa opção estará ativa.

SSL Proxy Port serve para configurar a porta para o tráfego SSL, por definição é a porta 3129.

EM SSL Proxy Compatibility Mode selecione Modern, para que utilize os algorítmos mais recentes e seguros.

Em CA selecione o certificado CA que foi criado anteriormente para essa finalidade.

SSL Certificate Daemon Children configura o número de processos utilizados para gerar certificados, esses certificados são mantidos em cache, entretanto, caso o processador não seja muito rápido, pode ser necessário aumentar esse número para aproveitar ao máximo o número de núcleos/threads de processamento caso esteja utilizando o firewall em uma rede movimentada e com muitos clientes, para que não haja muita espera na geração dos certificados.

Remote Cert Checks é utilizado para configurar como o servidor irá lidar com certificados remotos, sendo possível aceitar qualquer tipo de certificado do lado do website, mesmo certificados inválidos, isso vai fazer com que os usuários pensem que o site está seguro quando na verdade não está, geralmente não é boa ideia.

Certificate Adapt altera o certificado, geralmente não é necessário configurar essa opção.

Configure as opções de loggin de acordo com as suas necessidades, e daí para baixo nãoé preciso fazer nenhuma alteração para que o proxy funcione.

Depois de terminar a configuração, clique em Save.

E com isso já temos o proxy em modo transparente ativo.

Proxy Transparente Funcionando
Proxy Transparente Funcionando

Aqui podemos ver que o proxy transparente está funcionando, temos o certificado emitido pelo servidor, no lugar do certificado original do website.

Com o proxy transparente configurado, podemos agora instalar o SquidGuard para bloquear ou permitir o acesso a determinados tipos de websites, a instalação dele é feita da mesma maneira que o Squid, vá em System -> Package Manager e pesquise pelo nome do pacote, depois o instale.

Depois de instalado vá para a sua página de configuração em Services -> SquidGuard Proxy Filter.

SquidGuard
SquidGuard

Para que ele possa ser utilizado é preciso marcar a caixa em Enable, e como iremos utilizar uma blacklist para fazer o filtro de websites, também é preciso marcar a caixa em Blacklist, no final da página, e em Blacklist URL coloque o endereço da blacklist que o SquidGuard irá baixar para utilizar.

Configuração Inicial do SquidGuard
Configuração Inicial do SquidGuard

Aqui podemos ver como fica essa configuração.

Uma das blacklists mais utilizadas, shallalist, do site https://www.shallalist.de/, está indisponível por tempo indeterminado. É possível encontrar a última versão disponível para download em sites como no Wayback Machine, ou utilizar outras listas.

Depois de fazer a configuração clique em Save, isso irá salvar as configurações e iniciar o serviço.

Fazer o Download da Blacklist
Fazer o Download da Blacklist

Com as configurações salvas e o serviço iniciado, vá para a aba Blacklist, aqui iremos fazer o download da lista, para isso é só clicar no botão Download, tenha atenção que o download pode não ser iniciado imediatamente, sendo necessário clicar várias vezes nesse botão.

Download Iniciado
Download Iniciado

Após o download será criada a base de dados, esse processo pode demorar algum tempo para concluir.

Depois que a criação da base de dados for concluída, a blacklist estará ativa e pode ser configurada na aba Common ACL, e por definição está configurada para bloquear todos os domínios.

Website Bloqueado
Website Bloqueado

Agora é preciso configurar o que está bloqueado e o que está liberado, para isso abra a aba Common ACL.

Common ACL
Common ACL

Aqui temos a configuração inicial, em Target Rules podemos ver que está configurado como !all, ou seja, not all, dessa maneira não deixa passar todos os websites que estão na lista, para alterar isso é preciso clicar, em Target Rules List, no botão +, para expandir a lista.

Lista de Regras
Lista de Regras

Aqui podemos ver que a opção Default access [all], está configurada como deny, bloqueando todos os sites por definição.

Dessa maneira podemos criar uma whitelist que irá liberar categorias de websites enquanto todo o resto está bloqueado, mas não é o que queremos nesse momento.

Lista de Regras Reconfigurada
Lista de Regras Reconfigurada

Aqui temos a lista configurada para deixar passar todos os sites, menos os que foram configurados para serem bloqueados, como redes sociais, sites de pornografia, notícias e chat.

Depois de terminar a configuração clique em Save e na aba General settings, clique em Apply, para que as configurações sejam aplicadas.

Websites Funcionais e Bloqueados
Websites Funcionais e Bloqueados

Agora podemos ver que podemos navegar nos sites que não estão bloqueados.

E se voltarmos para as configurações do proxy transparente no Squid, e adicionarmos o IP do Windows Server, por exemplo, no campo Bypass Proxy for These Source IPs, poderemos ver como o Windows Server pode acessar a internet normalmente.

Bypass Proxy for These Source IPs
Bypass Proxy for These Source IPs

Depois de colocar o IP da máquina que deseja que não tenha seu tráfego interceptado, clique no botão Save no final da página.

Windows Server Acessando a Web Sem Proxy
Windows Server Acessando a Web Sem Proxy

Aqui podemos ver que o Windows Server não só pode acessar websites que estão bloqueados para o resto da rede, mas como não tem o seu tráfego interceptado, como podemos ver pelo fato de o website estar utilizando o seu certificado original.

A opção Bypass Proxy for These Destination IPs funciona da mesma maneira, se adicionarmos um domínio, esse website ficará acessível para toda a rede sem passar pelo proxy.

Bloquear Webmail
Bloquear Webmail

E se voltarmos para a configuração da Common ACL, no SquidGuard, e bloquear o acesso a webmails, os clientes também deixarão de ter acesso a serviços de webmail, enquanto mantém o acesso ao resto dos websites.

Webmail Bloqueado
Webmail Bloqueado

Na imagem acima podemos ver que os serviços de webmail estão bloqueados.

Bloquear AnyDesk

Vamos bloquear o acesso a ferramentas de acesso remoto, como o AnyDesk, mas para isso é preciso primeiro permitir que ela funcione.

Quando foi feita a configuração inicial do firewall, foi removida a regra que permite o tráfego, tanto para dentro como para fora, de qualquer tipo de protocolo, em qualquer porta, para permitir apenas o tráfego web, por isso será preciso habilitar a regra no firewall que permite esse tráfego na rede Green.

Firewall Rules - Green
Firewall Rules – Green

Vá para a página das regras do firewall para a rede Green, aqui iremos habilitar a regra Default allow LAN to any rule, que foi desabilitada inicialmente, para isso clique no ícone de um quadrado com uma checkmark dentro.

Firewall Rules - Green - Default allow LAN to any rule
Firewall Rules – Green – Default allow LAN to any rule

Depois de a habilitar, a ferramenta AnyDesk, e outras, já deverão funcionar, podemos fazer um teste para experimentar.

AnyDesk em um Cliente na WAN
AnyDesk em um Cliente na WAN

O cliente AnyDesk funciona normalmente em um cliente na WAN, como é de esperar.

AnyDesk em um Cliente na Rede Green
AnyDesk em um Cliente na Rede Green

O cliente AnyDesk funcionando em um cliente na rede Green depois de habilitar a regra no firewall.

Cliente Dentro da Rede Green Sendo Acessado Remotamente
Cliente Dentro da Rede Green Sendo Acessado Remotamente

Existem algumas maneiras diferentes de bloquear o AnyDesk, é possível utilizar o pfBlockerNG e bloquear utilizando DNS, também é possível bloquear as portas utilizadas pelo serviço, e também é possível bloquear os IPs dos servidores do AnyDesk.

Irei bloquear utilizando os IPs, e também a porta utilizada. Para descobrir quais são os IPs que o AnyDesk utiliza é possível fazer uma captura de pacotes e analizar esse tráfego.

Diagnostics - Packet Capure
Diagnostics – Packet Capture

Clique em Diagnostics -> Packet Capture.

Packet Capture
Packet Capture

Aqui podemos fazer a captura de pacotes com o tcpdump.

Configurações da Captura
Configurações da Captura

Antes de fazer a captura, se certifique de que o AnyDesk está completamente encerrado no cliente.

A interface que será monitorada será a Green, para reduzir ruído, em Address Family selecione IPv4 e em Protocol TCP.

Host Address é o do cliente que tem o AnyDesk instalado, não iremos selecionar nenhuma porta, já que o programa pode utilizar diferentes portas, e ainda não sabemos quais são.

Em Count coloque um valor elevado, de 500 para cima, e selecione a opção Do reverse DNS lookup em Reverse DNS Lookup, isso irá facilitar a nossa vida, já que irá identificar os domínios associados aos endereços de IP, dessa maneira será mais fácil identificar os servidores utilizados pelo AnyDesk.

Depois disso clique em Start para iniciar a captura e abra o AnyDesk no cliente.

Após o AnyDesk se conectar aos servidores do serviço, inicie uma sessão de conexão remota com outra máquina, depois termine essa sessão, e pare a captura no Packet Capture clicando em Stop.

Em Packets Captures deverá ter várias linhas similares a essas:

12:24:24.903953 IP 172.29.170.40.56640 > 20.73.130.64.https: tcp 0
12:24:24.903994 IP 20.73.130.64.https > 172.29.170.40.56640: tcp 0
12:24:27.616956 IP 172.29.170.40.56641 > relay-2056cafc.net.anydesk.com.https: tcp 0
12:24:27.617022 IP relay-2056cafc.net.anydesk.com.https > 172.29.170.40.56641: tcp 0
12:24:27.617475 IP 172.29.170.40.56641 > relay-2056cafc.net.anydesk.com.https: tcp 0
12:24:27.810187 IP 172.29.170.40.56641 > relay-2056cafc.net.anydesk.com.https: tcp 273
12:24:27.810226 IP relay-2056cafc.net.anydesk.com.https > 172.29.170.40.56641: tcp 0
12:24:27.856224 IP relay-2056cafc.net.anydesk.com.https > 172.29.170.40.56641: tcp 1460

Copie tudo o que tiver nessa janela para um documento de texto em uma máquina ou VM linux e crie o seguinte script bash nessa mesma máquina:

#!/bin/bash

cat $1 | egrep -ho '(relay.*anydesk\.com)' | sort --unique >> unique-urls.txt

echo '' > IPs.txt
rm IPs.txt

cat unique-urls.txt | while read line
do
    dig @1.1.1.1 $line | egrep -ho '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$' | egrep -ho '([0-9]+\.[0-9]+\.[0-9]+\.)' | sort --unique >> IPs.txt
done

rm unique-urls.txt

echo '' > $2
rm $2

cat IPs.txt | while read line
do
    for x in {0..255}
    do
	dig @1.1.1.1 -x ${line}${x} | grep 'anydesk\.com\.$' >> $2
    done
done

rm IPs.txt

Esse script é executado da seguinte maneira:

script.sh captura.txt ips.txt onde captura.txt é o nome do documento de texto onde colocou a saída dos pacotes capturados e ips.txt é o nome do documento de texto que irá conter os IPs dos servidores associados com o AnyDesk.

É comum empresas comprarem blocos de IPs, isso significa que é possível que em um intervalo de IPs contíguo é comum encontrar vários servidores/endereços que fazem parte do mesmo domínio. Esse script encontra todos os endereços únicos em que os três primeiros octetos do IP são iguais, e depois faz uma consulta reversa com todos os valores possíveis no quarto octeto, e faz isso para todas as redes únicas que foram encontradas.

Depois que o script terminar de ser executado, crie regras no firewall bloqueando o tráfego a esses IPs ou apenas às faixas de endereços associadas à AnyDesk, quando aplicar as regras, repita os passos da captura de pacotes, já que o programa irá tentar se conectar em servidores diferentes quando não conseguir se conectar aos que foram bloqueados, e quando não encontrar mais nenhum IP novo na captura de pacotes já não deve haver mais nenhum endereço novo com que se preocupar.

Também é possível criar uma regra bloqueando o tráfego destinado à porta 6568, que segundo as páginas de suporte do AnyDesk, é uma das portas utilizadas pelo serviço.

Fazendo isso o AnyDesk deixará de funcionar para os clientes que estão na rede onde foram aplicadas essas regras do firewall.

Regras Para Bloquear o AnyDesk
Regras Para Bloquear o AnyDesk

Aqui podemos ver as regras que foram criadas para bloquear o AnyDesk.

Também é possível criar um Alias com todos os endereços/faixas de IP e criar uma única regra associada a esse Alias.

AnyDesk Bloqueado
AnyDesk Bloqueado

Aqui podemos ver que o AnyDesk no cliente na rede Green não consegue se conectar aos servidores do serviço.

Configurar acesso pelo TeamViewer

Vamos primeiro confirmar que temos acesso de redes externas.

TeamViewer - Acessando Cliente Dentro do Firewall
TeamViewer – Acessando Cliente Dentro do Firewall

Na imagem acima temos uma máquina de fora da rede acessando uma máquina interna através do TeamViewer.

TeamViewer - Cliente Sendo Acessado
TeamViewer – Cliente Sendo Acessado

E na imagem acima vemos o cliente sendo acessado remotamente.

O processo para bloquear o acesso pelo TeamViewer é similar ao que foi feito para bloquear o AnyDesk.

O TeamViewer usa primariamente a porta 5938 para se conectar, mas infelizmente apenas bloquear essa porta não é suficiente, já que caso essa porta não esteja acessível, ele utiliza as portas 443 e 80 para iniciar as conexões.

Será preciso criar uma lista de IPs que o TeamViewer utiliza, o script anterior pode ser adaptado para criar essa lista.

Após fazer alguns ajustes no script, consegui a seguinte lista de IPs que o TeamViewer utiliza:

158.176.86.10
158.176.86.11
158.176.86.12
158.176.86.13
158.176.86.14
158.176.86.15
158.176.86.16
158.176.86.2
158.176.86.3
158.176.86.4
158.176.86.5
158.176.86.6
158.176.86.7
158.176.86.8
158.176.86.9

178.255.155.164
178.255.155.165
178.255.155.166
178.255.155.167
178.255.155.168
178.255.155.169
178.255.155.170
178.255.155.171
178.255.155.172
178.255.155.173
178.255.155.174
178.255.155.175
178.255.155.176
178.255.155.177
178.255.155.178
178.255.155.179
178.255.155.180
178.255.155.181
178.255.155.182
178.255.155.183
178.255.155.187
178.255.155.188
178.255.155.189
178.255.155.190

188.172.219.132
188.172.219.133
188.172.219.134
188.172.219.135
188.172.219.136
188.172.219.137
188.172.219.138
188.172.219.139
188.172.219.140
188.172.219.141
188.172.219.142
188.172.219.143
188.172.219.144
188.172.219.145
188.172.219.146
188.172.219.147
188.172.219.152
188.172.219.153
188.172.219.154
188.172.219.155
188.172.219.156
188.172.219.157
188.172.219.158

188.172.233.164
188.172.233.165
188.172.233.166
188.172.233.167
188.172.233.168
188.172.233.169
188.172.233.170
188.172.233.171
188.172.233.172
188.172.233.173
188.172.233.174
188.172.233.175
188.172.233.176
188.172.233.177
188.172.233.178
188.172.233.179
188.172.233.180
188.172.233.181
188.172.233.182
188.172.233.183
188.172.233.184
188.172.233.185
188.172.233.186
188.172.233.187
188.172.233.188

188.172.233.4
188.172.233.5
188.172.233.6

188.172.235.124
188.172.235.125
188.172.235.126
188.172.235.132
188.172.235.133
188.172.235.134
188.172.235.135
188.172.235.136
188.172.235.137
188.172.235.138
188.172.235.139
188.172.235.140
188.172.235.141
188.172.235.142
188.172.235.143
188.172.235.144
188.172.235.145
188.172.235.146
188.172.235.147
188.172.235.148
188.172.235.149
188.172.235.150
188.172.235.151
188.172.235.152
188.172.235.153
188.172.235.154
188.172.235.155
188.172.235.156
188.172.235.157
188.172.235.158

188.172.235.68
188.172.235.69
188.172.235.70
188.172.235.71
188.172.235.72

188.172.246.164
188.172.246.165
188.172.246.166
188.172.246.167
188.172.246.168
188.172.246.169
188.172.246.170
188.172.246.171
188.172.246.172
188.172.246.173
188.172.246.174
188.172.246.175
188.172.246.176
188.172.246.177
188.172.246.178
188.172.246.179
188.172.246.180
188.172.246.181
188.172.246.182
188.172.246.183
188.172.246.184
188.172.246.185
188.172.246.187
188.172.246.188
188.172.246.189
188.172.246.190

213.227.168.132
213.227.168.133
213.227.168.134
213.227.168.135
213.227.168.136
213.227.168.137
213.227.168.138
213.227.168.139
213.227.168.140
213.227.168.141
213.227.168.142
213.227.168.143
213.227.168.144
213.227.168.145
213.227.168.146
213.227.168.147
213.227.168.148
213.227.168.149
213.227.168.150
213.227.168.151
213.227.168.181
213.227.168.182
213.227.168.183
213.227.168.184
213.227.168.185
213.227.168.186
213.227.168.187
213.227.168.188
213.227.168.189
213.227.168.190

217.146.13.132
217.146.13.133
217.146.13.134
217.146.13.135
217.146.13.136
217.146.13.137
217.146.13.138
217.146.13.139
217.146.13.140
217.146.13.141
217.146.13.142
217.146.13.143
217.146.13.144
217.146.13.145
217.146.13.146
217.146.13.158

217.146.14.132
217.146.14.133
217.146.14.134
217.146.14.135
217.146.14.136
217.146.14.137
217.146.14.138
217.146.14.139
217.146.14.140
217.146.14.141

217.146.21.132
217.146.21.133
217.146.21.134
217.146.21.135
217.146.21.136
217.146.21.137
217.146.21.138
217.146.21.139
217.146.21.140
217.146.21.141

217.146.2.132
217.146.2.133
217.146.2.134
217.146.2.135
217.146.2.136
217.146.2.137
217.146.2.138
217.146.2.139
217.146.2.140
217.146.2.141
217.146.2.142
217.146.2.143

Como essa é uma lista extensa, com algumas centenas de IPs, é mais fácil utilizar um alias bloqueando essas faixas.

Firewall - Aliases
Firewall – Aliases

Clique em Firewall -> Aliases.

Aliases - IP
Aliases – IP

Depois clique em Add.

Criar Novo Alias
Criar Novo Alias

Dê um nome ao Alias, uma descrição, se achar necessário, e em Type, selecione Host(s).

No campo IP or FQDN iremos colocar as faixas de IPs, colocando o primeiro e último IP separados por um traço, dessa maneira:

158.176.86.2-158.176.86.16
Definir Faixas de IPs
Definir Faixas de IPs

Depois de colocar todas as faixas de IP relevantes, clique em Save.

Depois disso volte para a janela das regras para a rede Green e clique no botão Add com a seta apontando para cima.

Regra do Firewall Para o TeamViewer
Regra do Firewall Para o TeamViewer

A regra que irá bloquear o TeamViewer fica de acordo com a imagem acima.

E Action selecione Block, Interface fica como GREEN, em Protocol selecione TCP/UDP, em Source selecione GREEN net, em Destination selecione a opção Single host or alias e no campo da direita coloque o nome do alias que foi criado, com os endereços dos servidores do TeamViewer, coloque uma descrição se desejar e clique em Save.

Aplicar Regra Para Bloquear o TeamViewer
Aplicar Regra Para Bloquear o TeamViewer

Depois é só aplicar a regra, com isso o TeamViewer está bloqueado.

TeamViewer Bloqueado
TeamViewer Bloqueado

Na imagem acima podemos ver que o TeamViewer já não consegue mais se conectar.

Firewall - Schedules
Firewall – Schedules

Essa regra deve ser aplicada apenas em dias e horários específicos, para isso iremos criar um agendamento para que seja aplicada apenas quando necessário.

Clique em Firewall -> Schedules.

Schedules
Schedules

Clique em Add.

Novo Horário
Novo Horário

Aqui podemos fazer isso de duas maneiras, selecionar os dias úteis e o horário de trabalho, e aplicar esse horário em uma nova regra que irá permitir a conexão e que irá estar ativa apenas durante esses dias e horas, enquanto a regra que bloqueia continua ativa o tempo todo, ou criar algumas faixas de horários especificando quando essa regra que bloqueia o TeamViewer vai estar ativa, finais de semana e fora do horário de trabalho, e assim utilizar apenas uma regra no firewall.

Aqui irei fazer da segunda maneira, para isso será necessário três faixas diferentes, a primeira será de Segunda à Sexta, da meia noite (00:00) até as oito da manhã (8:00), a segunda também de Segunda à Sexta, mas dessa vez das seis da tarde (18:00) até a meia noite (tecnicamente não é até a meia noite, já que uma faixa de horário não pode terminar em um horário menor do que o que foi iniciado, nesse caso ficará até as 23:59), e a terceira ocupara os finais de semana inteiros (0:00 até 23:59).

Para selecionar os dias não é preciso clicar um a um, clique na parte de cima onde tem os nomes dos dias da semana: Mon, Tue, Wed…, fazendo isso irá selecionar automaticamente todos os dias da semana, não só no mês atual como nos meses seguintes, dessa maneira não é preciso criar regras para todos os meses (quando os dias selecionados estão com a cor azul, essa seleção é aplicada a todos os meses seguintes, quando estão a verde é apenas para o mês atual).

Faixas de Horários
Faixas de Horários

As faixas de horários devem ficar como na imagem acima.

Depois que terminar a criação da faixa de horários, clique em Save.

Horários Criados
Horários Criados

Com isso já temos essa faixa de horários criada, agora é só a aplicar na regra do firewall que está sendo utilizada para bloquear o TeamViewer.

Editar Regra do Firewall
Editar Regra do Firewall

Para editar a regra clique no ícone de um lápis, do lado direito, na regra a ser editada, nesse caso é a regra que bloqueia o TeamViewer.

Extra Options - Display Advanced
Extra Options – Display Advanced

Em Extra Options, clique em Display Advanced.

Schedule - TeamViewer
Schedule – TeamViewer

Em Schedule, selecione o horário que foi acabado de ser criado, nesse caso ele se chama TeamViewer.

Depois clique em Save, no final da página.

Horário Aplicado
Horário Aplicado

Aqui podemos ver que o horário foi aplicado com sucesso à regra.

TeamViewer Funcionando
TeamViewer Funcionando

E aqui podemos ver que o TeamViewer está funcionando.

Port Forwarding

Port Forwarding permite que uma porta, faixa de portas ou protocolo seja exposto a um IP privado em uma das redes internas.

Aqui iremos redirecionar duas portas externas, para portas específicas, e diferentes, para um host em uma rede interna. As portas 22222 e 42424 serão redirecionadas para as portas internas 61234 e 56789 respectivamente, e serão apontadas para o IP 10.18.170.2, que está na rede Orange e tem um webserver.

Firewall - NAT
Firewall – NAT

Para criar essa regra clique em Firewall -> NAT.

Port Forward
Port Forward

Para criar uma nova regra clique no botão Add.

Criar Nova Regra
Criar Nova Regra

Aqui iremos configurar a regra.

Configuração da Regra
Configuração da Regra

Como essa porta será exposta ao exterior, em Interface precisamos selecionar WAN.

Não estamos utilizando IPv6, por isso em Address Family certifique-se de que tem IPv4 selecionado.

Essa porta será utilizada apenas para fráfego web, por isso em Protocol selecione apenas TCP, não será preciso UDP nesse caso.

Em Destination selecione WAN address, isso fará com que o firewall redirecione essas portas quando algum cliente externo as tente acessar através do IP da interface WAN.

Em Destination port range, nos dois campos Custom, coloque o número da porta que será aberta na interface WAN, nesse caso será a porta 22222.

E em Redirect target IP selecione Single host e coloque o IP do webserver, que nesse caso será 10.18.170.2.

Em Redirect target port selecione a opção Other e em Custom coloque o número da porta que o host está esperando, nesse caso a porta 61234.

Dê uma descrição e clique em Save.

Aplicar Regra
Aplicar Regra

Da mesma maneira que as regras do firewall que foram criadas até agora, também é preciso aplicar as alterações, clique em Apply Changes, com isso já temos a primeira porta redirecionada.

Agora é só repetir esses passo para a outra porta.

Portas Redirecionadas
Portas Redirecionadas

Com isso já temos as duas portas redirecionadas, agora é só as testar para confirmar que está tudo funcionando corretamente.

Servidor Pedindo Autenticação
Servidor Pedindo Autenticação

Utilizando um cliente na WAN podemos ver que o redirecionamento está funcionando corretamente, aqui o servidor está pedindo autenticação para permitir o acesso à página.

Redirecionamento de Porta Feito com Sucesso
Redirecionamento de Porta Feito com Sucesso

Após a autenticação a página é carregada corretamente.

Redirecionamento da Porta 42424
Redirecionamento da Porta 42424

A mesma coisa para a porta 42424, redirecionamento feito com sucesso.

Instalar OPNsense

O processo de instalação do OPNsense é similar ao do pfSense, depois de terminada a instalação é preciso fazer a configuração inicial  das interfaces de rede.

As interfaces serão configuradas de maneira similar a como foi feito no  pfSense:

00:50:56:3C:1A:10 - R2/WAN - 10.155.170.2/30
00:50:56:3C:1A:11 - Green - 10.53.170.1/24
00:50:56:3C:1A:12 - Blue - 10.120.170.1/29
00:50:56:3C:1A:13 - Sync - 192.168.255.253/30
00:50:56:3C:1A:14 - Host - 10.10.10.21/24
Configuração Inicial do OPNsense
Configuração Inicial do OPNsense

O primeiro passo é configurar o papel das interfaces, para isso é só selecionar a opção número 1.

Selecionar Interface WAN
Selecionar Interface WAN

Depois disso será perguntado se desejamos configurar LAGG, ou Link Aggregation, isso não será necessário nesse momento, selecione n, a mesma coisa para VLANs, não serão necessárias.

Selecionar Interfaces
Selecionar Interfaces

As interfaces são selecionadas utilizando os seus nomes, e podem ser identificadas através dos endereços MAC.

Interfaces Selecionadas
Interfaces Selecionadas

Após selecionar as interfaces, confirme que deseja continuar.

Depois de selecionar as interfaces é preciso configurar alguns endereços de IP, para que seja possível acessar a interface web.

Configurar IP
Configurar IP

Selecione a opção 2 para configurar o IP de uma interface.

Configurar IP da Interface WAN
Configurar IP da Interface WAN

Primeiro introduza o IP da interface, depois a máscara de rede, e por fim o endereço do Gateway utilizado para acessar outras redes externas.

DNS
DNS

Não iremos utilizar o Gateway como DNS, selecione outro servidor DNS.

IPv6 e Protocolo da Interface Web
IPv6 e Protocolo da Interface Web

Não iremos utilizar IPv6, mas caso seja necessário, pode fazer essa configuração agora, também não iremos alterar o protocolo da interface web de http para https.

Terminando Configuração da Interface
Terminando Configuração da Interface

Após terminar de escolher as configurações desejadas é só aguardar um pouco para que essas configurações sejam aplicadas.

Depois  disso é só repetir os mesmos passos para outras interfaces que deseje configurar já.

WAN e Interface Para o Host Configuradas
WAN e Interface Para o Host Configuradas

Caso deseje acessar a interface web através da interface LAN, pode utilizar o endereço de IP pré configurado, mas caso queira utilizar outra interface será preciso desativar temporariamente o firewall, assim como foi feito no pfSense.

Desativar o Firewall Temporariamente
Desativar o Firewall Temporariamente

Após desativar o firewall temporariamente já podemos acessar a interface web tanto pela interface WAN como pela interface OPT3 (Host).

Interface Web OPNsense
Interface Web OPNsense

Com isso já podemos continuar a configuração através da interface web.

O login pode ser feito com as mesmas credenciais que foram utilizadas durante a instalação e configuração inicial.

Configuração Inicial OPNsense Através da Web Interface
Configuração Inicial OPNsense Através da Web Interface

O processo de configuração inicial será iniciado, ele é muito similar ao processo do pfSense.

Informação Geral
Informação Geral

Aqui é possível configurar o hostname do firewall, assim como o domínio e outras configurações de DNS, após fazer as configurações adequadas clique em Next.

Time Server Information
Time Server Information

Selecione o fuso-horário de onde está e time servers que deseja utilizar e clique em Next.

Interface WAN
Interface WAN

Aqui não tem muito o que fazer, a única alteração é desselecionar as opções que bloqueiam redes privadas e similares na interface WAN, como foi feito no pfSense, depois disso clique em Next.

Interface LAN-Green
Interface LAN-Green

Aqui não tem nada a ser feito, o resto das configurações dessa rede serão feitas mais tarde, clique em Next.

Senha da Conta root
Senha da Conta root

Caso deseje alterar a senha da conta root pode o fazer aqui, depois disso clique em Next.

Reload
Reload

Com essa configuração inicial terminada, clique em Reload, tenha atenção que caso esteja acessando a interface web por uma interface que não seja a LAN, isso irá reativar o firewall, fazendo com que o acesso à interface web seja bloqueado novamente, por isso será necessário o desativar novamente na shell.

Firewall - Rules - OPT3
Firewall – Rules – OPT3

Como foi feito no pfSense, irei criar uma regra para permitir o acesso à interface web através da interface OPT3/Host, para isso clique em Firewall -> Rules -> OPT3.

Regras do Firewall Para OPT3
Regras do Firewall Para OPT3

Aqui temos a página com as regras para essa interface. Nesse momento ainda não temos nenhuma regra, para criar a nova regra clique no botão laranja com um .

Regra Para Permitir Acesso à Interface Web OPT3
Regra Para Permitir Acesso à Interface Web OPT3

Similar à regra criada no pfSense, em Action selecione Pass, para permitir o tráfego, a interface é OPT3, em Direction selecione in.

Não vamos utilizar IPv6, por isso em TCP/IP Version selecione IPv4, em Protocol pode deixar como any, mas caso queira restringir um pouco mais, pode selecionar TCP.

Em Source selecione OPT3 net, isso irá permitir tráfego originado de máquinas originadas dessa rede, e não de redes diferentes, que por acaso cheguem através dessa interface, e em Destination selecione OPT3 address, para que apenas tráfego destinado ao IP dessa interface passe, não queremos que nenhuma outra máquina esteja acessível através dessa interface.

Dê uma descrição à regra e clique em Save.

Aplicar Alterações
Aplicar Alterações

Clique em Apply changes para aplicar a regra.

Isso pode demorar alguns instantes até que a regra esteja ativa, por isso é normal que a página não carregue, mas após alguns instantes já deve ter acesso à interface web através dessa interface.

Interfaces - LAN
Interfaces – LAN

Agora iremos alterar os nomes das interfaces, para que tenham nomes mais descritivos, vamos começar pela interface LAN, para isso clique em Interfaces -> [LAN].

Renomear Interface
Renomear Interface

Em Description coloque o nome que deseja dar a interface, nesse caso irá se chamar Green,  depois disso clique no botão Save no final da página.

Aplicar Alterações
Aplicar Alterações

Clique em Apply changes para aplicar a nova configuração.

Configurações Interface Blue
Configurações Interface Blue

A interface Blue não estava ativa e nem tinha IP definido, nesse caso, para a habilitar, marque a opção Enable Interface em Enable, em Description dê o nome que desejar à interface, nesse caso será Blue, em IPv4 Configuration Type selecione Static IPv4 e em IPv4 address coloque o endereço de IP que deseja usar nessa interface, depois disso clique em Save.

Repita o processo para as outras interfaces.

Interfaces Configuradas
Interfaces Configuradas

Aqui podemos ver que todas as interfaces já estão configuradas.

DHCP no OPNsense

Foi pedido para fornecer IPs por DHCP, mas não foi especificado em qual das redes, por isso isso será feito apenas na rede Green, entretanto, caso seja preciso em outra rede, o processo é o mesmo.

Services - DHCPv4 - [Green]
Services – DHCPv4 – [Green]
Clique em Services -> DHCPv4 -> [Green].

DHCP na Interface Green
DHCP na Interface Green

Aqui podemos ver que o servidor DHCP não está ativo nessa interface.

Configurações do Servidor DHCP na Interface Green
Configurações do Servidor DHCP na Interface Green

O primeiro passo é o ativar, para isso marque a opção Enable DHCP server on the Green interface, em Enable.

Em Range é possível definir a faixa de IPs que serão utilizados para a atribuição de IPs, e caso queira criar diferentes pools, com diferentes faixas de IP, pode o fazer clicando no ícone laranja com um ➕, em Additional Pools.

Em DNS servers pode configurar os servidores DNS que deseja atribuir aos clientes, e em Gateway coloque o IP dessa própria interface.

Clique em Save no final da página para salvar as configurações e ativar o servidor DHCP.

Cliente Windows Recebendo IP
Cliente Windows Recebendo IP

O servidor DHCP está funcionando como esperado, o cliente Windows recebeu um IP sem problemas.

Lista de Leases no OPNsense
Lista de Leases no OPNsense

Na imagem acima podemos ver a lista de leases no OPNsense.

Bloquear domínios .de

Foi pedido para bloquear sites com o tld .de, isso pode ser feito de algumas maneiras diferentes, as mais comuns são DNS e proxy, sendo a primeira menos intrusiva e simples, mas relativamente fácil de ser contornada caso o usuário tenha privilégios administrativos na máquina cliente que esteja utilizando, e a segunda mais garantida, mas mais complexa, além de ser mais onerosa para o firewall e colocar em questão a privacidade dos usuários.

Como foi feito com o pfSense, aqui será feito esse bloqueio através de proxy.

System - Trust - Authorities
System – Trust – Authorities

Clique em System -> Trust -> Authorities.

Como foi feito no pfSense, é preciso criar uma autoridade certificadora, que irá emitir os certificados dos websites que serão acessados pelos clientes.

Certificate Authority
Certificate Authority

Aqui serão preenchidos os dados para criar a autoridade que irá gerar os certificados.

Informações da Autoridade Certificadora
Informações da Autoridade Certificadora

Da mesma maneira que foi feito no pfSense, é importante que não existam ambiguidades no nome e descrição da autoridade, não tentar enganar os usuários e deixar claro que o tráfego está sendo interceptado.

Em Descriptive name dê um nome que seja descritivo da finalidade dessa CA, em Method selecione Create an internal Certificate Authority.

Os próximos campos, até Country Code podem ficar com as configurações padrão, e caso queira que essa CA tenha uma vida mais longa, pode aumentar o valor no campo Lifetime (days).

Preencha os campos em Distinguished name de acordo com a localização e nome da organização, e em Common Name dê um nome adequado.

depois disso clique em Save.

CA Criada
CA Criada

Com isso já temos a autoridade certificadora criada e pronta para emitir novos certificados.

E da mesma maneira que foi feito no pfSense, é preciso exportar o certificado para que seja instalado nas máquinas cliente, para que os certificados gerados pelo firewall para os websites sejam aceitados pelos clientes.

A exportação do certificado pode ser feita clicando no ícone do com uma seta ⬇ apontando para baixo, do lado do ícone de um lápis.

Com isso já podemos fazer a configuração do proxy no OPNsense.

Services - Web Proxy - Administration
Services – Web Proxy – Administration

Clique em Services -> Web Proxy -> Administration.

Configurações do Web Proxy
Configurações do Web Proxy

Aqui temos a página de configuração do proxy.

Habilitar Proxy
Habilitar Proxy

O primeiro passo é o habilitar, marque a opção Enable proxy e clique no botão Apply.

Forward Proxy
Forward Proxy

Clique na aba Forward Proxy.

É aqui que iremos configurar o proxy transparente.

Proxy Transparente Ativado
Proxy Transparente Ativado

Aqui é preciso selecionar as opções Enable Transparent HTTP proxy e Enable SSL inspection, as portas podem ficar como estão, e em CA to use selecione a CA que foi criada anteriormente, clique em Apply.

Se habilitar a opção full help, no canto superior direito, vai ver onde o proxy transparente e a inspeção de tráfego SSL foi habilitada, tem um link para criar uma regra de firewall, cada um deles irá criar uma regra diferente, um para a porta 80, para tráfego http, e outro para a porta 443, para tráfego https.

Regra do Firewall Para a Porta 80
Regra do Firewall Para a Porta 80

O primeiro link cria uma regra para direcionar o tráfego direcionado à porta 80, não é preciso fazer nenhuma alteração nessa regra, apenas clique em Save.

Regra do Firewall Para a Porta 443
Regra do Firewall Para a Porta 443

Mesma coisa para a regra de direcionamento da porta 443.

Regras Aplicadas
Regras Aplicadas

Com as duas regras ativas o proxy já deve estar funcionando para os clientes.

Proxy Funcionando Corretamente no Cliente
Proxy Funcionando Corretamente no Cliente

Aqui podemos ver que o proxy está funcionando corretamente no cliente.

Agora é preciso bloquear o acesso aos websites com o tld .de, da Alemanha.

Forward Proxy - Access Control List
Forward Proxy – Access Control List

Voltando à página de configuração do proxy, na aba Forward Proxy, clique no ícone de um triângulo apontando para baixo 🔻, e na lista clique em Access Control List.

ACLs
ACLs

Aqui podemos fazer várias configurações referentes a ACLs, whitelists, blacklists, etc…

Bloquear TLDs .de
Bloquear TLDs .de

Para bloquear os TLDs .de é só colocar a seguinte expressão regular no campo Blacklist:

.+\.de

Depois disso clique em Apply.

TLD .de Bloqueado
TLD .de Bloqueado

Aqui podemos ver que os domínios foram bloqueados com sucesso.

VPN IPsec Entre OPNsense e pfSense

IPsec, ou Internet Protocol Security, é um dos tipos de VPN disponíveis, e relativamente simples de ser configurado no OPNsense e pfSense.

Iremos configurar um túnel site to site, ou seja, uma ligação entre duas, ou mais, redes remotas, que geralmente são utilizadas para fazer a ligação entre filiais e matriz.

VPN - IPsec - Tunnel Settings
VPN – IPsec – Tunnel Settings

Para começar, clique em VPN -> IPsec -> Tunnel Settings.

IPsec - Tunnel Settings
IPsec – Tunnel Settings

É nessa página que iremos iniciar as configurações do túnel IPsec.

O primeiro passo é clicar no botão laranja com um ➕, que está do lado direito da tela, em Phase 1.

IPsec - Tunnel Settings
IPsec – Tunnel Settings

Aqui iremos configurar a primeira fase da conexão, que vai cuidar da troca de chaves e parâmetros criptográficos da conexão.

Configurações IPsec Phase 1
Configurações IPsec Phase 1

Aqui iremos configurar a primeira parte da ligação, os primeiros campos podem ficar com as configurações padrão, em Connection method deixe como default, Key Exchange version (IKE – Internet Key Exchange) fica como V2, Internet Protocol vai ficar como IPv4 e Interface como WAN.

Em Remote gateway é preciso colocar o IP público do outro roteador, será esse IP que o OPNsense irá utilizar para encontrar o roteador remoto através da internet, aqui ficará com o IP 10.155.170.10.

Em Description coloque algo descritivo que identifique facilmente essa ligação.

Authentication method ficará como Mutual PSK (pre-shared key), significa que iremos utilizar uma senha para fazer a autenticação.

O mais seguro seria utilizar um certificado, entretanto, para simplificar, e para efeitos de demonstração da criação do túnel, será utilizada uma senha para a autenticação.

Em My identifier deixe como My IP address, mesma coisa em Peer Identifier, deixe como Peer IP address.

Em Pre-Shared Key coloque a senha que será utilizada para fazer a autenticação, essa senha deverá ser a mesma dos dois lados.

Em Encryption algorithm temos várias opções, aqui foi selecionada a opção 256 bit AES-GCM with 128 bit ICV porque permite a paralelização da encriptação, tendo assim melhor performance se o sistema tiver várias threads de processamento, selecione o algorítmo mais adequado à situação em que se encontre.

Em Hash algorithm selecione qualquer um, menos MD5 e SHA1, esses algorítmos são extremamente antiquados e considerados “quebrados”, aqui foi selecionado SHA256.

O resto das opções podem ficar como estão, não é preciso fazer mais nenhuma alteração.

Com essa configuração terminada, clique em Save.

IPsec - Primeira Fase Terminada
IPsec – Primeira Fase Terminada

Com isso temos a primeira fase terminada, clique em Apply changes antes de continuar, depois clique no ícone laranja com um ➕ que está do lado direito da entrada que acabamos de completar, isso irá iniciar a configuração da segunda fase.

IPsec Phase 2
IPsec Phase 2

Aqui iremos configurar a segunda parte do túnel, responsável pela encriptação dos dados a ser transmitidos e os endpoints da ligação, quais redes serão conectadas.

IPsec - Configuração Phase 2
IPsec – Configuração Phase 2

Essa configuração é mais simples, em Description dê uma descrição adequada, na seção Local Network iremos definir a rede local que será o endpoint local, em Type temos selecionada a opção Green subnet, para que a rede Green tenha acesso à rede remota.

Em Remote Network iremos identificar qual será a rede remota, em Type selecione Network e em Address coloque o endereço da rede, que nesse caso é a rede Green do pfSense.

Abaixo, em Protocol, selecione ESP.

Em Encryption algorithms temos várias opções, AES128-256, aes128-256gcm16 e NULL, caso selecione uma das três primeiras opções, AES128-256, também será preciso selecionar um Hash algorithm abaixo, para as próximas três já não é preciso, e a última opção não encripta os dados, e obviamente não é recomendada, e o resto das opções não serão necessárias nesse momento, podem ficar com as opções padrão.

Depois de terminar a configuração clique no botão Save.

Configuração IPsec Terminada no OPNsense
Configuração IPsec Terminada no OPNsense

Com isso já temos as configurações do túnel feitas no OPNsense, para que o túnel esteja ativo e pronto a receber ligações, selecione a opção Enable IPsec e clique em Apply changes, o último passo é criar uma regra no firewall para permitir o tráfego através dessa ligação.

Firewall - Rules - IPsec
Firewall – Rules – IPsec

Clique em Firewall -> Rules -> IPsec.

Aqui iremos criar uma regra para essa nova interface, da mesma maneira que foi feita anteriormente, clique no ícone laranja com um ➕ que está do lado direito.

Regra no Firewall Para Permitir Tráfego Pelo Túnel IPsec
Regra no Firewall Para Permitir Tráfego Pelo Túnel IPsec

Caso preciso de uma regra mais específica, pode a configurar de acordo com as suas necessidades, nesse caso, apenas para demonstrar a funcionalidade, foi criada uma regra que permite todo o tráfego.

Agora é preciso replicar essas configurações no pfSense.

VPN - IPsec
VPN – IPsec

No pfSense, clique em VPN -> IPsec.

IPsec Tunnels
IPsec Tunnels

Aqui podemos criar as VPNs IPsec, e ver as já existentes.

Para criar um novo túnel clique em Add P1.

IPsec Phase 1
IPsec Phase 1

As opções aqui são muito similares às que encontramos no OPNsense, mas com algumas diferenças na maneira como são apresentadas.

Configurações IPsec Phase 1
Configurações IPsec Phase 1

Em Description dê uma descrição adequada à ligação, como foi feito no OPNsense.

Na seção IKE Endpoint Configuration temos uma diferença em relação ao OPNsense, lá, em Key Exchange Version, tinhamos as opções V1 e V2, por exemplo, fazendo mencionando apenas a versão do protocolo, aqui temos o seu nome completo, IKEv1 e IKEv2, como selecionamos V2 no OPNsense, iremos selecionar a opção IKEv2 aqui no pfSense, o resto das opções são iguais, com a única diferença no Remote Gateway, que aqui obviamente irá apontar para o IP externo do OPNsense.

Da mesma maneira que foi configurada no OPNsense, em Phase 1 Proposal (Authentication), iremos usar as opções Mutual PSK, My IP address, Peer IP address e em Pre-Shared Key, a senha que foi usada no OPNsense.

Em Phase 1 Propostal (Encryption Algorithm) é preciso selecionar o mesmo algorítimo que foi selecionado no OPNsense, tenha apenas atenção que aqui essa configuração é apresentada de maneira diferente. Como foi selecionado no OPNsense, selecione AES256-GCM, 128 bits, SHA256 e por último, 14 (2048 bit).

O resto das configurações pode ficar com as opções padrão, depois de terminar a configuração clique em Save.

Primeira Fase Criada
Primeira Fase Criada

Com isso já temos a primeira fase criada, agora iremos criar a segunda fase, para isso clique no botão Show Phase 2 Entries.

Adicionar Segunda Fase
Adicionar Segunda Fase

Para criar a segunda fase clique no botão Add P2.

Edit Phase 2
Edit Phase 2

Aqui a configuração deverá, novamente, seguir a que foi feita anteriormente no OPNsense.

Configurações da Segunda Fase
Configurações da Segunda Fase

Em Description dê uma descrição adequada, e em Mode, certifique-se de Tunnel IPv4 está selecionado, como está no OPNsense.

Desse lado, a rede que será ligada será a Green, por isso, em Local Network, selecione GREEN subnet, e em Remote Network coloque o endereço da rede remota, que no caso do OPNsense é a sua rede Green, com o endereço 10.25.170.0/24.

Na seção Phase 2 Proposal (SA/Key Exchange) é preciso selecionar o mesmo protocolo e algorítimos que foram selecionados no OPNsense, por isso em Protocol selecione a opção ESP e em Encryption Algorithms selecione apenas a opção AES256-GCM de 128 bits, como foi feito no OPNsense, caso seja preciso mais algorítimos para acomodar outros endpoints com configurações diferentes, pode selecionar os algorítimos e configurações relevantes.

Como o único algorítimo que selecionamos foi o AES256-GCM, não só não é preciso selecionar um Hash Algorithm, como essas opções estão desativadas.

Não é preciso fazer nenhuma alteração nas configurações seguintes, clique em Save para salvar essas configurações.

Túnel IPsec Configurado no pfSense
Túnel IPsec Configurado no pfSense

Com isso já temos o túnel IPsec configurado no pfSense, e como foi feito no OPNsense, aqui também será preciso criar uma regra no firewall para permitir o tráfego através dessa conexão, por isso vá até as regras do firewall para a ligação IPsec, da mesma maneira que foi feito para as outras regras que foram criadas.

Regra do Firewall Para o Túnel IPsec
Regra do Firewall Para o Túnel IPsec

Novamente, caso seja preciso alguma configuração específica, pode o fazer da mesma maneira como qualquer outra regra, aqui foi criada apenas uma regra que permite todo o tipo de tráfego apenas para demonstrar a ligação.

Status - IPsec
Status – IPsec

Com isso já podemos verificar o estado do túnel, para isso clique em  Status -> IPsec.

Ligação Estabelecida
Ligação Estabelecida

E aqui podemos ver que a ligação foi estabelecida com sucesso.

Ligação Estabelecida Com Sucesso Pelo Cliente
Ligação Estabelecida Com Sucesso Pelo Cliente

Na imagem acima podemos ver um cliente ligado à rede Green do OPNsense acessando uma partilha de rede no Windows Server que está na rede Green do pfSense.

VPN OpenVPN Entre OPNsense e pfSense

Agora iremos criar uma VPN utilizando o OpenVPN, para isso será preciso primeiro desligar a ligação através de IPsec.

Desligar Túnel IPsec
Desligar Túnel IPsec

Para desligar esse túnel é só desselecionar a opção Enable IPsec e clicar em Apply changes.

Com isso já podemos inicar a configuração da VPN OpenVPN.

VPN - OpenVPN - Servers
VPN – OpenVPN – Servers

Em um túnel IPsec são configurados os endpoints para que possam estabelecer uma ligação entre si, no caso de uma ligação OpenVPN, é preciso configurar um Servidor e um Cliente, qualquer um dos roteadores pode fazer o papel de Cliente ou Servidor, aqui o OPNsense será configurado como Servidor e o pfSense como cliente.

Iremos iniciar a configuração pelo OPNsense, para isso clique em VPN ->  OpenVPN -> Servers.

Agora iremos configurar o Servidor, para isso clique no ícone laranja com um ➕ que está do lado direito.

OpenVPN Servers
OpenVPN Servers

Nessa página será configurado o servidor.

OpenVPN - Configuração do Servidor
OpenVPN – Configuração do Servidor

A configuração aqui será relativamente simples, será preciso dar uma descrição para o servidor, selecionar a interface, certificados, algorítmos de hashing e endereços das redes a serem conectadas e a rede utilizada para fazer essa ligação.

Em Description dê uma descrição adequada a esse servidor OpenVPN, em Interface selecione WAN, já que o servidor irá receber a conexão remota através dessa interface, a porta pode ficar a que está.

Em Cryptographic Settings, podemos deixar a maior parte dos campos com as configurações padrão, devemos apenas alterar a opção Auth Digest Algorithm para SHA256 ou melhor, por questões de segurança.

Em IPv4 Tunnel Network coloque o endereço de uma rede que não esteja a ser utilizada pelo firewall e nem pelos clientes remotos, para evitar conflitos, o número de IPs disponíveis para hosts vai depender de quantos clientes irão se ligar a esse servidor, aqui, como não teremos muitos clientes, apenas 3 bits serão suficientes.

Em IPv4 Local Network coloque o endereço da rede local que deseja expor à VPN, e em IPv4 Remote Network o endereço da rede remota que será ligada à rede local.

Com isso a configuração está completa.

Servidor Criado
Servidor Criado

Com isso já temos o servidor configurado, agora precisamos apenas de mais um passo desse lado, copiar a chave TLS que iremos utilizar no cliente que irá se conectar, para isso clique no botão com um ícone de um lápis, do lado direito.

TLS Shared Key
TLS Shared Key

Iremos precisar da chave no campo TLS Shared Key.

Com o servidor configurado e a chave identificada, é preciso criar uma regra no firewall para permitir a conexão através da interface WAN.

Regra na Interface WAN para permitir a ligação VPN
Regra na Interface WAN para permitir a ligação VPN

Será preciso criar uma regra permitindo a ligação de clientes remotos através da interface WAN.

Regra na Interface WAN para permitir a ligação VPN
Regra na Interface WAN para permitir a ligação VPN

Essa regram é simples, ela será aplicada à interface WAN e a direção é in, já que irá servir para aceitar ligações externas, o protocolo é UDP, que é o que foi configurado no servidor OpenVPN.

Em Source temos algumas opções diferentes, podemos restringir a um único endereço de IP ou permitir a ligação à partir de qualquer IP, sendo uma ligação site-to-site, o ideal é restringir apenas a um único IP, mas para facilitar, ficara como any, permitindo ligações de qualquer endereço.

Em Destination coloque WAN address, e em Destination port range, selecione OpenVPN.

Dê uma descrição para a regra e depois clique em Save, e aplique a regra.

Com isso podemos iniciar a configuração no pfSense.

pfSense - OpenVPN
pfSense – OpenVPN

No pfSense clique em VPN -> OpenVPN.

OpenVPN - Clients
OpenVPN – Clients

Na aba Clients clique no botão Add.

Configuração do cliente OpenVPN
Configuração do cliente OpenVPN

Em Description dê um nome adequado à ligação, abaixo, em Server mode, selecione Peer to Peer (Shared Key), como foi configurado no OPNsense, mais adiante iremos utilizar a chave gerada pelo OPNsense.

Em Server host or address coloque o IP externo do OPNsense, que nesse caso é 10.155.170.2, o resto nessa seção pode ficar como está.

Em Cryptographic Settings é preciso configurar da mesma maneira que está configurado o servidor no OPNsense.

Desselecione a opção Auto generate e no campo Shared Key que irá aparecer logo abaixo coloque a chave gerada pelo OPNsense.

Em Data Encryption Algorithms é preciso selecionar a opção que foi configurada no OPNsense, não é preciso selecionar outros algorítmos, apenas o que o servidor irá utilizar, que nesse caso é AES-128-CBC (128 bit key, 128 bit block), e em Fallback Data Encryption Algorithm pode selecionar o mesmo, não fará diferença, já que o servidor está configurado para utilizar um único algorítmo, e esse cliente irá se conectar exclusivamente ao OPNsense, por isso não é preciso suportar algorítmos diferentes.

Em Auth digest algorithm selecione o mesmo que foi selecionado no OPNsense, que nesse caso é o SHA256.

Em Tunnel Settings será preciso configurar apenas dois campos, IPv4 Tunnel Network, com a mesma rede que foi configurada no OPNsense, e IPv4 Remote network(s), que será o endereço da rede do OPNsense que ficará acessível através da VPN, que aqui será a rede 10.53.170.0/24.

A última opção a ser configurada será Gateway creation, que deve ser alterada de Both para IPv4 only, depois disso clique em Save.

Cliente OpenVPN configurado no pfSense
Cliente OpenVPN configurado no pfSense

E com isso já temos o cliente configurado, agora será preciso voltar ao OPNsense.

OPNsense - Iniciar o serviço OpenVPN
OPNsense – Iniciar o serviço OpenVPN

Na Dashboard do OPNsense, em Services, podemos ver que o serviço openvpn não está ativo, clique no botão play para o iniciar, depois disso será preciso criar uma regra no firewall para permitir o tráfego através dessa ligação.

Criar regra para a interface OpenVPN
Criar regra para a interface OpenVPN

As regras para essa interface funcionam da mesma maneira que as regras criadas anteriormente, caso seja necessário pode criar regras para permitir apenas o mínimo necessário, nesse caso, para facilitar o processo, foi  criada uma regra que permite qualquer tipo de tráfego.

pfSense - OpenVPN conectado
pfSense – OpenVPN conectado

Na imagem acima podemos ver que o túnel OpenVPN está conectado com sucesso, enquanto o túnel IPsec está desligado.

Da mesma maneira que foi feito para a ligação IPsec, será preciso criar uma regra no pfSense para permitir o tráfego através to túnel OpenVPN.

Regra no firewall para a ligação OpenVPN
Regra no firewall para a ligação OpenVPN

Novamente, para simplificar, foi criada uma regra que permite todo tipo de tráfego, em uso real é preciso criar regras apropriadas para o uso pretendido.

Remote Desktop através do túnel
Remote Desktop através do túnel

Acesso ao Windows Server por Remote Desktop através da VPN funcionando.

Remote Users

Com as VPNs site-to-site configuradas, agora é preciso configurar a VPN para remote users.

Também é preciso um certificado para esse tipo de ligação, podemos utilizar o mesmo certificado que foi usado anteriormente, ou criar um novo, vamos criar um novo para haver alguma distinção, começando pela Certificate Authority.

Nova CA
Nova CA

Com a nova Certificate Authority criada, já é possível criar o novo certificado.

Novo certificado
Novo certificado

Com o certificado criado podemos tratar da autenticação dos users, essa autenticação será feita através Windows Server, para que apenas os users autorizados possam ter acesso remoto através da VPN.

User Manager
User Manager

Clique em System -> User Manager.

Authentication Servers
Authentication Servers

Depois em Authentication Servers, aqui iremos configurar o acesso às contas da AD pelo firewall, para que a autenticação possa ser feita, para isso clique em Add.

Configurações LDAP
Configurações LDAP

Acima temos a configuração necessária para se conectar e autenticar com o Windows Server, o conteúdo do campo Authentication containers (distinguishedName) vai depender da estrutuda da AD, e o caminho pode ser encontrado utilizando a ferramenta ADSI Edit no Windows Server.

Depois de colocar o distinguishedName clique em Select a container.

Containers para autenticação
Containers para autenticação

Selecione os containers adequados e clique em Save, depois novamente em Save no final da página.

Agora será preciso criar um novo servidor OpenVPN.

OpenVPN Servers
OpenVPN Servers

No mesmo local onde foi criado o cliente OpenVPN, mas dessa vez na aba Servers, clique em Add, para adicionar o servidor OpenVPN.

Configuração do servidor OpenVPN no pfSense
Configuração do servidor OpenVPN no pfSense

Acima temos a configuração do servidor para esse cenário.

Servidor Configurado
Servidor Configurado

Já temos o servidor criado, agora será preciso criar algumas regras no firewall para permitir as ligações dos clientes.

Regra do firewall na WAN para permitir a ligação OpenVPN
Regra do firewall na WAN para permitir a ligação OpenVPN

Com a regra criada agora é preciso instalar um pacote para exportar as configurações para os clientes, para que possam se conectar.

Instalar pacote para exportar configuração OpenVPN para clientes
Instalar pacote para exportar configuração OpenVPN para clientes

O processo de instalação é o mesmo que foi feito anteriormente, pesquise por “openvpn” e instale o pacote chamado openvpn-client-export.

System - User Manager
System – User Manager

Depois será preciso criar uma nova conta no firewall, para que as configurações possam ser exportadas, para isso clique em System -> User Manager.

Users
Users

Clique em Add.

Novo user
Novo user

Essa nova conta não será utilizada para acessar a interface web, ou para qualquer tipo de acesso direto ao firewall, por isso deve ser desativada, para isso selecione a opção Disabled – This user cannot login.

Preencha os campos como achar melhor, e em Certificate, selecione a opção Click to create a user certificate, depois selecione a CA que foi criada anteriormente para a VPN e dê um nome adequado ao certificado, depois clique em Save.

Nova conta criada
Nova conta criada

Com isso já temos a nova conta criada.

Client Export Utility
Client Export Utility

Nas configurações da OpenVPN, clique na aba Client Export.

Aqui não será preciso fazer nenhuma alteração, apenas clique no botão Save as default no final da página.

OpenVPN Clients
OpenVPN Clients

Logo no final da página temos várias opções de configurações e clientes para fazer o download, aqui iremos utilizar o cliente Windows de 64-bits, faça o download para a máquina que irá se conectar à VPN.

Instalar cliente OpenVPN
Instalar cliente OpenVPN

Inicie a instalação do cliente OpenVPN no cliente que irá fazer o acesso remoto.

Instalar cliente e configuração
Instalar cliente e configuração

Uma nova janela irá abrir para continuar a instalação, clique em Install.

Iniciar a ligação OpenVPN
Iniciar a ligação OpenVPN

Após a instalação terminar, o ícone do cliente OpenVPN irá aparecer na  bandeja de sistema, clique com o botão direito sobre ele e selecione a opção Connect.

Autenticação utilizando o Active Directory
Autenticação utilizando o Active Directory

Faça a autenticação com uma conta adequada.

Ligação feita com sucesso
Ligação feita com sucesso

A ligação foi feita com sucesso.

Acesso às pastas partilhadas no Windows Server
Acesso às pastas partilhadas no Windows Server

Aqui podemos ver que temos acesso ao servidor.

Agora é preciso restringir o acesso à VPN durante o período das 8-20h, para isso será preciso criar um novo agendamento, da mesma maneira que foi feita com o TeamViewer.

Novo agendamento para OpenVPN
Novo agendamento para OpenVPN

Com o agendamento criado já é possível o aplicar à regra do firewall.

Agendamento aplicado na regra da interface WAN
Agendamento aplicado na regra da interface WAN

O agendamento foi aplicado, agora já não será mais possível se conectar fora do horário especificado.

Não é possível fazer a conexão
Não é possível fazer a conexão

O cliente já não consegue mais fazer a ligação.

Entretanto, ainda não temos o proxy funcionando através da VPN, para isso será preciso primeiro o habilitar na interface da VPN.

Interfaces - Assignments
Interfaces – Assignments

Clique em Interfaces -> Assignments.

Selecionar porta ovpns2
Selecionar porta ovpns2

Em Available network ports selecione a segunda opção, ovpns2 (RemoteClients) e clique em Add.

Interface adicionada com sucesso
Interface adicionada com sucesso

A interface foi adicionada com o nome OPT5, clique sobre ela para a habilitarmos e alterar seu nome.

Habilitar e renomear a interface
Habilitar e renomear a interface

Selecione a opção Enable interface e em Description dê um nome adequado.

Status - OpenVPN
Status – OpenVPN

Depois será preciso parar o serviço OpenVPN temporariamente, para isso clique em Status -> OpenVPN.

Status dos clientes e servidores OpenVPN
Status dos clientes e servidores OpenVPN

Aqui podemos ver o status dos clientes e servidores, para parar o serviço, clique no botão com o símbolo ⏹, em Actions.

Servidor OpenVPN parado
Servidor OpenVPN parado

Com isso temos o serviço parado.

Regra do firewall para a interface OpenVPNServer
Regra do firewall para a interface OpenVPNServer

Adicione uma regra de firewall que permite todo o tráfego na interface OpenVPNServer.

Selecionar interface OpenVPNServer
Selecionar interface OpenVPNServer

Agora será preciso fazer com que os clientes remotos utilizem o proxy, para isso acesse a página de configuração do Squid Proxy e nos campos Proxy Interface(s), Transparent Proxy Interface(s) e SSL INtercep Interface(s), selecione a interface OpenVPNServer, depois clique em Save no final da página.

ACLs - Allowed Subnets
ACLs – Allowed Subnets

Depois, em ACLs, adicione a rede que selecionou para a VPN no campo Allowed Subnets, e novamente, clique em Save no final da página.

Depois disso volte para Status -> OpenVPN e inicie novamente o serviço.

Proxy funcionando corretamente para clientes remotos
Proxy funcionando corretamente para clientes remotos

Aqui podemos ver que o proxy está funcionando corretamente.

Remote Users OPNsense

Vamos agora configurar uma VPN para mobile clients no OPNsense, para que tenha acesso à rede Green (10.52.170.0/24).

Como foi feito no pfSense, iremos precisar de um certificado para o servidor OpenVPN.

System - Trust - Authorities
System – Trust – Authorities

Vá em System -> Trust -> Authorities.

Aqui podemos ver a CA que criamos anteriormente para o proxy, podemos utilizar essa mesma CA, mas para distinguir entre os dois usos, vamos criar uma nova, da mesma maneira que foi feito anteriormente.

Nova Certificate Authorivy criada
Nova Certificate Authorivy criada

Com a nova CA criada já podemos gerar um novo certificado.

Certificates
Certificates

No momento temos apenas um certificado, clique no botão ➕ para criar um novo certificado.

Novo certificado
Novo certificado

Aqui, o importante é, em Certificate authority, selecionar a CA que foi acabada de criar, em em Type, selecionar Server Certificate, o resto da informação pode ficar como achar melhor.

Certificados disponíveis
Certificados disponíveis

Com isso já temos o novo certificado criado, agora é preciso criar a nova conta de usuário que irá ser utilizada para fazer a autenticação do cliente.

System - Access - Users
System – Access – Users

Vá em System -> Access -> Users e clique no ícone ➕ para adicionar uma nova conta.

Nova conta
Nova conta

Especifique o username e senha e clique em Save and go back no final da página.

Nova conta criada
Nova conta criada

Com a nova conta criada, clique no ícone do lápis ✏ do lado direito, para editar a conta recém criada.

Gerar User Certificate
Gerar User Certificate

EM User Certificates, clique no botão ➕ para gerar um novo certificado.

User Certificate mdafe
User Certificate mdafe

Em Certificate authority selecione a CA que foi criada para esse fim, e em Type selecione Client Certificate, o resto das configurações podem ficar como achar melhor.

User Certificate para o user mdafe criado
User Certificate para o user mdafe criado

Com isso já temos o certificado para esse user, clique em Save and go back.

OpenVPN Servers
OpenVPN Servers

Agora iremos criar o servidor OpenVPN para os clientes remotos, como foi feito antes, vá em VPN -> OpenVPN -> Servers e clique no ícone ➕ para criar um novo servidor.

Configuração OpenVPN Server - Informação Geral
Configuração OpenVPN Server – Informação Geral

Dê uma descrição adequada ao servidor, em Server Mode selecione a opção Remote Access (User Auth), e em Backend for authentication selecione Local Database, para que a autenticação seja feita com os users do próprio firewall, o resto da configuração dessa parte é igual à que foi feita anteriormente, o firewall automaticamente seleciona a porta 1195, já que a porta 1194 já está em uso pelo outro servidor OpenVPN que foi configurado anteriormente.

Configuração OpenVPN Server - Configuração Criptográfica
Configuração OpenVPN Server – Configuração Criptográfica

Nas configurações criptográficas selecione a CA que foi criada para esse fim, OpenVPN-CA, em Peer Certificate Authority, e em Server Certificate selecione o certificado que foi criado para esse servidor OpenVPN.

O resto das configurações, como o algorítmo e chaves, devem ser escolhidos levando em conta o nível de segurança desejado e as capacidades do sistema.

Configuração OpenVPN Server - Configuração do Túnel
Configuração OpenVPN Server – Configuração do Túnel

Em IPv4 Tunnel Network especifique uma rede que não esteja em uso, ou acessível, pelo firewall, essa será a rede que será utilizada no túnel que faz a ligação entre o cliente e o firewall.

Habilite a opção Redirect Gateway para que o cliente acesse a internet através do firewall.

Configuração OpenVPN Server - Configuração do Cliente
Configuração OpenVPN Server – Configuração do Cliente

Selecione a opção Dynamic IP e Address Pool, também selecione a opção DNS Servers e configure os servidores DNS que o cliente irá utilizar.

Configuração OpenVPN Server - Configuração Avançada
Configuração OpenVPN Server – Configuração Avançada

Nessa parte não é preciso fazer nenhum tipo de configuração especial, o que pode fazer é alterar o Verbosity level para ter mais ou menos informações nos logs, caso seja necessário, depois disso clique em Save.

Novo servidor OpenVPN configurado
Novo servidor OpenVPN configurado

Com isso já temos o novo servidor OpenVPN configurado e ativo na porta 1195, como foi feito com o outro, é preciso criar uma regra no firewall na interface WAN para permitir a ligação através dessa porta.

Regra do firewall para a WAN permitindo ligações à porta 1195
Regra do firewall para a WAN permitindo ligações à porta 1195

Com a regra criada podemos ir para o próximo passo, exportar a configuração para o cliente que irá se conectar ao servidor.

Exportar configuração do cliente
Exportar configuração do cliente

Vá em VPN -> OpenVPN -> Client Export.

Aqui, em Remote Access Server selecione o servidor que acabamos de criar, em Export type selecione Archive.

Existem várias opções diferentes de tipos de configurações que podem ser exportadas, a opção Archive exporta a configuração necessária para se utilizar o cliente OpenVPN que já está instalado no cliente.

Salvar configuração para o user mdafe
Salvar configuração para o user mdafe

Mais abaixo na página temos as opções que podem ser exportadas, clique no ícone ☁ para o user mdafe para exportar a configuração.

Importar configuração para o cliente OpenVPN
Importar configuração para o cliente OpenVPN

Para importar a configuração no cliente é só abrir a pasta onde o cliente OpenVPN vai buscar as configurações, o local dessa pasta pode ser encontrado nas configurações do cliente.

Extraia o conteúdo do arquivo .zip para dentro dessa pasta.

Conectar utilizando a nova configuração
Conectar utilizando a nova configuração

Com a configuração importada já podemos nos conectar ao servidor OpenVPN no OPNsense, dessa vez o cliente irá mostrar as configurações disponíveis, em vez de apenas dar a opção para se conectar, quando havia apenas uma configuração.

Autenticar utilizando o user mdafe
Autenticar utilizando o user mdafe

Faça a autenticação utilizando as credenciais do user que foi criado no firewall.

Ligação feita com sucesso
Ligação feita com sucesso

A ligação foi feita com sucesso.

Cliente acessando a internet através do firewall OPNsense utilizando o túnel OpenVPN
Cliente acessando a internet através do firewall OPNsense utilizando o túnel OpenVPN

Aqui podemos ver que o cliente tem acesso à internet e que o tráfego está passando pelo firewall.

Captive Portal no pfSense

Agora iremos configurar um Captive Portal na rede Blue do pfSense.

Para isso será preciso configurar um servidor DHCP para que os clientes possam receber um IP automaticamente, e o acesso à internet será condicionado, tendo a velocidade e volumes de dados transferidos limitados.

Services - DHCP Server
Services – DHCP Server

Clique em Services -> DHCP Server.

Configurações do servidor DHCP na interface Blue
Configurações do servidor DHCP na interface Blue

Selecione a aba BLUE para configurar o servidor DHCP na interface Blue.

Habilitar o servidor DHCP e configurar a pool de endereços
Habilitar o servidor DHCP e configurar a pool de endereços

Selecione a opção Enable para habilitar o serviço, em Range defina o início e o fim da faixa de IPs que serão atribuídos aos clientes.

Também será preciso configurar o serviço para que os clientes usem o firewall como servidor DNS, mais abaixo, em DNS servers, coloque o IP da interface Blue do firewall, e depois disso clique no botão Save no final da página.

Regra do firewall permitindo acesso à internet na rede Blue e acesso exclusivo ao DNS do firewall
Regra do firewall permitindo acesso à internet na rede Blue e acesso exclusivo ao DNS do firewall

Crie duas regras no firewall para a interface Blue, uma permitindo o acesso à internet e outra que bloqueia o acesso a qualquer servidor DNS que não seja o próprio firewall, na ordem que está na imagem acima.

Services - Captive Portal
Services – Captive Portal

Agora iremos configurar o Captive Portal, clique em Services -> Captive Portal.

Captive Portal Zones
Captive Portal Zones

Clique em Add para iniciarmos a criação da zona para a rede Blue.

Adicionar nova zona de Captive Portal
Adicionar nova zona de Captive Portal

Dê um nome e uma descrição apropriados e clique Save & Continue.

Zona criada e pronta para ser configurada
Zona criada e pronta para ser configurada

Antes de habilitar e iniciar a configuração da zona, vamos criar um novo certificado para a página de autenticação do Captive Portal.

Certificado para o Captive Portal
Certificado para o Captive Portal

Crie um certificado para um endereço que será utilizado na página de autenticação, nesse caso o endereço é captiveportal.rotolip.local, mas pode ser qualquer endereço que queira, não precisa ser do domínio do Windows Server.

Editar a configuração do Captive Portal
Editar a configuração do Captive Portal

Voltando para a página de configuração do Captive Portal, clique no ícone do lápis ✏ para entrar no modo de edição.

Habilitar o Captive Portal e selecionar a interface
Habilitar o Captive Portal e selecionar a interface

Selecione a opção Enable para abilitar o Captive Portal, e em Interfaces selecione a interface BLUE.

Definir a cota de dados transferidos
Definir a cota de dados transferidos

Em Traffic quota (Megabytes) podemos definir a quantidade máxima de dados transferidos por sessão, nesse caso serão 500MB.

URL para onde os users serão redirecionados após a autenticação
URL para onde os users serão redirecionados após a autenticação

Caso queira que os users sejam redirecionados automaticamente para uma página específica após serem autenticados, pode definir a página no campo After authentication Redirection URL.

Limitar largura de banda
Limitar largura de banda

Para limitar a largura de banda de cada user, selecione a opção Per-user bandwidth restriction e em Default download (Kbit/s) e Default upload (Kbit/s) defina as velocidades máximas de download e upload, respectivamente.

Método de autenticação
Método de autenticação

Em Authentication Method selecione Use an Authentication backend e em Authentication Server selecione Local Database.

Habilitar HTTPS
Habilitar HTTPS

Para que a autenticação seja feita através de HTTPS, e não HTTP, habilite a opção Login – Enable HTTPS login, e em HTTPS server name coloque a URL do servidor de autenticação, abaixo, em SSL/TLS Certificate selecione o certificado que foi criado para o Captive Portal, para a mesma URL que foi indicada acima, depois clique em Save no final da página.

Vouchers para a autenticação
Vouchers para a autenticação

Agora será preciso gerar os vouchers que serão utilizados para fazer a autenticação, para isso clique na aba Vouchers.

Habilitar a criação de vouchers e gerar o par de chaves pública-privada
Habilitar a criação de vouchers e gerar o par de chaves pública-privada

Para que possamos gerar os vouchers é preciso primeiro habilitar a sua criação e gerar um par de chave pública/privada, para isso selecione a opção Enable – Enable the creation, generation and activation of rolls with vouchers, e abaixo clique no botão Generate new keys,  depois disso clique no botão Save no final da página.

Gerar novos vouchers
Gerar novos vouchers

Agora já podemos gerar os vouchers, para isso clique no botão Add.

Configuração dos vouchers
Configuração dos vouchers

Aqui pode configurar como os vouchers serão gerados, a opção Minutes per ticket serve para configurar a duração máxima da sessão, nesse caso 120 minutos (2 horas), em Count o número de vouchers a serem gerados é indicado, nesse caso apenas 10 vouchers, a opção Comment é auto explicativa.

Depois de configurar como quer gerar os vouchers, clique em Save.

Vouchers gerados
Vouchers gerados

Com os vouchers gerados, clique no ícone de uma folha com um x, que está do lado direito dos vouchers, para fazer o download do arquivo .csv com os códigos.

Arquivo .csv com os vouchers gerados
Arquivo .csv com os vouchers gerados

Aqui temos os vouchers que foram gerados, e que serão utilizados na autenticação no Captive Portal.

Entretanto, se tentar acessar a internet não irá conseguir acessar o portal de autenticação do Captive Portal, já que ainda não existe nenhuma entrada no serviço DNS para o endereço que foi configurado anteriormente.

Services - DNS Resolver
Services – DNS Resolver

Para que a página de autenticação do Captive Portal possa ser acessada, será preciso criar um A Record no servidor DNS do firewall, para isso clique em Services -> DNS Resolver.

Host Overrides
Host Overrides

Em Host Overrides clique no botão Add.

A Record apontando para a interface Blue
A Record apontando para a interface Blue

Aqui iremos configurar o A Record que irá apontar a URL captiveportal.rotolip.local para o IP da interface Blue.

Em Host coloque captiveportal, em Domain coloque rotolip.local e em IP Address coloque o IP da interface Blue, dê uma descrição apropriada e clique em Save.

A Record criado
A Record criado

Com isso já temos o A Record criado e já podemos verificar se o serviço está funcionando corretamente.

Cliente recebendo pedido de autenticação para poder navegar na internet
Cliente recebendo pedido de autenticação para poder navegar na internet

Aqui podemos ver que ao tentar acessar alguma página da internet é pedido para fazer login primeiro.

Página de acesso do Captive Portal
Página de acesso do Captive Portal

E temos acesso à página de autenticação, e podemos ver na barra de endereço que a URL está funcionando como esperado.

Página redirecionada
Página redirecionada

Após a autenticação, foi feito com sucesso o redirecionamento para a página que foi configurada.

Sessão iniciada
Sessão iniciada

No pfSense podemos ver que temos uma sessão iniciada com o primeiro voucher.

Velocidade limitada e DNS do firewall sendo utilizado
Velocidade limitada e DNS do firewall sendo utilizado

As velocidades de download e upload foram limitadas, e o cliente está utilizando o firewall como servidor DNS.

Captive Portal no OPNsense

Agora iremos fazer a mesma coisa, mas no OPNsense.

System - Servers
System – Servers

Clique em System -> Access -> Servers.

Dê um nome descritivo e em Type selecione Voucher, clique em Save.

Servidor de vouchers criado
Servidor de vouchers criado

Com isso temos o servidor de vouchers criado.

Services - Captive Portal - Administration
Services – Captive Portal – Administration

Clique em Services -> Captive Portal -> Administration, iremos criar a configuração para a zona Blue.

Habilitar zona e selecionar interfaces e método de autenticação
Habilitar zona e selecionar interfaces e método de autenticação

Habilite a zona e em interfaces selecione apenas a interface Blue, em Authenticate using selecione o servidor de vouchers que foi criado anteriormente.

Descrição da zona
Descrição da zona

Aqui também é possível utilizar HTTPS para o portal de autenticação, caso queira o fazer, se não desejar, apenas dê uma descrição para essa zona e clique em Save.

Aplicar configuração
Aplicar configuração

Clique em Apply para aplicar as alterações feitas.

Criar vouchers
Criar vouchers

Agora iremos criar os vouchers, para isso clique em Services -> Captive Portal -> Vouchers, e depois no botão Create vouchers.

Configurar geração de vouchers
Configurar geração de vouchers

Aqui podemos alterar algumas configurações dos vouchers gerados, esses vouchers também terão a duração de 2 horas, para isso, em Validity, selecione a opção Custom (mninutes) e indique a duração no campo logo abaixo, também pode configurar se os vouchers expiram, e o número de vouchers a serem gerados, nesse caso serão apenas 10, como foi feito anteriormente, em Groupname dê um nome para identificar esse lote de vouchers que serão gerados, para terminar clique em Generate.

Ao clicar em Generate, os vouchers serão gerados automaticamente e será feito o download do arquivo .csv com os vouchers gerados, salve-os em um local apropriado.

Vouchers gerados com sucesso
Vouchers gerados com sucesso

Aqui podemos ver os vouchers que foram gerados.

Arquivo .csv com os vouchers
Arquivo .csv com os vouchers

Aqui, ao contrário do pfSense, os vouchers não são apenas um código que é introduzido, mas sim um par de username/password.

Configuração do servidor DHCP na interface Blue
Configuração do servidor DHCP na interface Blue

Para habilitar o servidor DHCP vá em Services -> DHCPv4 -> [Blue].

Selecione a opção Enable DHCP Server on the Blue interface, em Range indique o início e fim da faixa de IPs que serão distribuídos aos clientes, e como também iremos restringir os clientes apenas ao DNS do firewall, em DNS servers também é preciso colocar o IP da interface Blue.

Quando terminar clique em Save no final da página.

Regras no firewall da interface Blue do OPNsense para permitir o acesso à internet enquanto bloqueia o acesso a qualquer servidos DNS além do firewall
Regras no firewall da interface Blue do OPNsense para permitir o acesso à internet enquanto bloqueia o acesso a qualquer servidos DNS além do firewall

Crie duas regras no firewall para a interface Blue, uma para permitir o acesso à internet e outra para bloquear o acesso a qualquer servidor DNS que não seja o firewall.

Firewall - Shaper - Pipes
Firewall – Shaper – Pipes

Para limitar a largura de banda para os users do Captive Portal no OPNsense é preciso fazer um procedimento diferente.

Clique em Firewall -> Shaper -> Pipes, depois clique no botão com o ➕ para criar um novo pipe.

Criar pipe para limitar velocidade de download
Criar pipe para limitar velocidade de download

Em Bandwidth especifique a largura de banda que deseja alocar, em Bandwidth Metricpode especificar as unidades.

Descrição do pipe
Descrição do pipe

Não é preciso fazer mais nenhuma configuração além de dar uma descrição para o pipe, quando terminar clique em Save.

Repita o processo para o pipe para o upload.

Pipes criados
Pipes criados

Com os pipes criados podemos criar as regras que irão aplicar os limites.

Criar regras
Criar regras

Clique na aba Rules e no botão ➕.

Criar regra para download
Criar regra para download

Ative o switch advanced mode e se certifique de que a regra está ativa.

Em Interface selecione a interface Blue, em Protocol selecione ipv4.

Direção e descrição da regra
Direção e descrição da regra

Em Direction selecione out, já que vamos limitar a velocidade do tráfego que sai da interface e vai para os clientes, e em Target selecione o pipe que foi criado para os downloads, dê uma descrição e clique em Save.

Repita o processo para criar uma regra para os uploads, dessa vez selecionando como target o pipe de upload, e a direção in.

Regras criadas
Regras criadas

Com as duas regras criadas já podemos testar o Captive Portal no cliente.

Cliente Windows na rede Blue do OPNsense sendo notificado que precisa fazer login para poder acessar a internet
Cliente Windows na rede Blue do OPNsense sendo notificado que precisa fazer login para poder acessar a internet

Como podemos ver na imagem acima, é pedido para iniciar sessão para poder acessar a internet.

Portal de acesso do Captive Portal no OPNsense
Portal de acesso do Captive Portal no OPNsense

O portal de acesso do Captive Portal no OPNsense é ligeiramente diferente do pfSense, aqui não temos a opção de utilizar um token, apenas uma combinação de username e password.

Cliente com largura de banda restrida e acesso apenas ao DNS do firewall
Cliente com largura de banda restrida e acesso apenas ao DNS do firewall

A largura de banda foi limitada com sucesso, e o cliente não tem acesso a outros servidores DNS além do próprio firewall.

Sessão iniciada no Captive Portal pelo cliente Windows
Sessão iniciada no Captive Portal pelo cliente Windows

E no OPNsense podemos ver a sessão do Captive Portal ativa.

High Availability no pfSense

Uma segunda instância do pfSense será instalada e configurada para assumir as funções da instância atual, caso ela falhe.

O primeiro passo será fazer algumas pequenas alterações na rede que liga o pfSense e o R3, no momento a rede configurada é a 10.155.170.8/30, que tem apenas 2 IPs disponíveis, o primeiro, 10.155.170.9, para o R3 e o segundo, 10.155.170.10, para o pfSense, entretanto, será preciso mais 2 IPs, um para a segunda instância do pfSense e outro para a interface virtual que será partilhada entre as duas instâncias, por isso a rede será expandida, de /30 para /29, com a primeira instância passando a 10.155.170.11, segunda instância do pfSense ficando com o endereço 10.155.170.12 e a interface virtual 10.155.170.10.

Também será preciso configurar a interface OPT3, que no momento não está em uso, para servir como link de sincronização entre as duas instâncias.

A configuração dessa nova instância, que ficará com o hostname zidPR, terá uma configuração inicial muito semelhante à da instância atual, ballaPR.

Será preciso mudar os IPs de todas as interfaces do firewall ballaPR, para um IP à frente, por exemplo, o endereço da interface Green vai passar de 172.29.170.1 para 172.29.170.2, e os IPs da segunda instância, zidPR, serão os endereços seguintes, isso será feito para que não seja preciso alterar as configurações de servidores DHCP, ou outros serviços que estejam configurados para usar os endereços originais da instância ballaPR.

Os IPs da instância zidPR ficação da seguinte forma:

00:50:56:20:02:80 – R3-pf/WAN 10.155.170.12/29
00:50:56:20:02:81 – pfGreen 172.29.170.3/23
00:50:56:20:02:82 – pfOrange 10.18.170.3/29
00:50:56:20:02:83 – pfBlue 10.0.170.3/24
00:50:56:20:02:84 – pfSync 172.168.255.2/30
00:50:56:20:02:85 – Host 10.10.10.22/24

Interfaces ballaPR
Interfaces ballaPR
Interfaces zidPR
Interfaces zidPR

Nas imagens acima podemos ver que as duas instâncias tem as mesmas interfaces físicas com os mesmos nomes e com os IPs em sequência.

Com as interfaces já configuradas, é preciso agora instalar os mesmos pacotes que foram instalados no ballaPR.

Pacotes instalados no firewall ballaPR
Pacotes instalados no firewall ballaPR
Pacotes instalados no firewall zidPR
Pacotes instalados no firewall zidPR

Agora é preciso criar as regras no firewall na interface Sync para possa haver a sincronização.

Regras de firewall para a interface Sync
Regras de firewall para a interface Sync

É preciso replicar essas regras nos dois firewalls.

System - High Avail. Sync
System – High Avail. Sync

Agora será preciso ativar a Alta Disponibilidade nos dois firewalls, para isso vá em System -> High Avail. Sync, nos dois firewalls.

High Availability - State Synchronization Settings
High Availability – State Synchronization Settings

Selecione a opção Synchronize states, e em Synchronize Interface, selecione a interface que foi configurada para esse propósito, nesse caso é a interface Sync.

Em pfSunc Synchronize Peer IP coloque o IP da interface Sync do outro firewall, no firewall ballaPR esse IP é 172.168.255.2 e no zidPR é 172.168.255.1.

High Availability - State Synchronization Settings no zidPR
High Availability – State Synchronization Settings no zidPR

Não é preciso fazer mais nenhuma configuração nessa página para o segundo firewall, nesse caso pode clicar em Save no final da página e continuar a configuração no primeiro firewall.

High Availability - Configuration Syncronization Settings
High Availability – Configuration Syncronization Settings

Em Synchronize Config to IP coloque novamente o IP do segundo firewall, em Remote System Username coloque o username da conta de administrador, e em Remote System Password coloque a senha, pode deixar a opção Synchronize admin ativa.

High Availability - Select options to sync
High Availability – Select options to sync

Aqui serão selecionadas as opções que serão sincronizadas, selecione todas as que se apliquem e clique em Save.

Agora é preciso criar os Virtual IPs, que serão partilhados entre os dois firewalls.

Firewall - Virtual IPs
Firewall – Virtual IPs

Clique em Firewall -> Virtual IPs.

Virtual IPs
Virtual IPs

Para criar um novo Virtual IP clique em Add.

WAN CARP VIP
WAN CARP VIP

Vamos começar pelo VIP da interface WAN.

Em Type selecione CARP, em Interface selecione WAN.

Address type fica como Single address, e em Address(es) coloque o IP que deseja, que nesse caso será o IP que a interface WAN desse firewall usava anteriormente.

Em Virtual IP Password coloque uma senha e a confirme.

VHID Group geralmente é configurado como o último octeto do endereço de IP, por isso fica como 10 nesse caso.

Em Description coloque uma descrição adequada para esse VIP e clique em Save.

Repita os passos para o resto das interfaces, colocando os endereços apropriados.

CARP Virtual IPs para as interfaces
CARP Virtual IPs para as interfaces

Com a criação dos VIPs terminadas podemos ir para o próximo passo, NAT.

Firewall - NAT - Outbound
Firewall – NAT – Outbound

Clique em Firewall -> NAT e depois na aba Outbound.

Selecione a opção Manual Outbound NAT rule generation e clique em Save.

NAT Mappings
NAT Mappings

Aqui podemos ver todas as regras que foram geradas automaticamente, será preciso alterar todas elas.

Para isso clique no ícone do lápis ✏ do lado direito para as editar.

Alterar Translation Address para WAN CARP VIP
Alterar Translation Address para WAN CARP VIP

Em Translation – Address, altere de Interface Address para o VIP da interface WAN, depois clique em Save no final da página.

Primeira regra alterada
Primeira regra alterada

Com isso já temos a primeira regra alterada, repita esses passos para o resto das regras.

Resto das regras alteradas
Resto das regras alteradas

Com as regras alteradas podemos continuar o processo.

Status CARP ballaPR
Status CARP ballaPR

Se clicar em Status -> CARP (failover) poderá ver o estado do serviço.

Aqui vemos que o primeiro firewall, ballaPR, está como MASTER.

Status CARP zidPR
Status CARP zidPR

E o segundo como BACKUP.

A maioria das configurações estão sendo replicadas automaticamente com essas configurações, mas ainda é preciso fazer algumas alterações em alguns serviços.

Reconfigurar o IP do Gateway no servidor DHCP
Reconfigurar o IP do Gateway no servidor DHCP

No caso do servidor DHCP é preciso recondigurar o IP do Gateway para o VIP da interface.

Squid Proxy - CARP Status VIP
Squid Proxy – CARP Status VIP

No Squid Proxy é preciso ativar a sincronização, para isso, em CARP Status VIP selecione o VIP de alguma das interfaces que está configurada para utilizar o proxy, nesse caso é o VIP da interface Green, repita esses passos nos dois firewalls.

Clique em Save no final da página.

Squid Proxy - Sync
Squid Proxy – Sync

No firewall principal, na aba Sync do Squid Proxy, em Enable Sync selecione a opção Sync to host(s) defined below.

Habilite a opção Replication Targets e a configure com o protocolo que esteja utilizando na interface web, HTTPS, nesse caso, o IP deve ser o queo firewall está utilizando naquela interface, nesse caso é o IP 172.29.170.3 na interface Green, mesma coisa para a porta, as credenciais são as utilizadas para acessar a interface web.

Essa configuração só é feita no firewall principal.

Essa configuração precisa ser repetida para o SquidGuard, e é feita na aba XMLRPC Sync.

Agora é preciso atualizar as configurações das VPNs.

OpenVPN Server - Endpoint Configuration - Interface
OpenVPN Server – Endpoint Configuration – Interface

No servidor OpenVPN, em Endpoint Configuration, altere a Interface para o VIP da WAN e salve.

IPsec - IKE Endpoint Configuration - Interface
IPsec – IKE Endpoint Configuration – Interface

O mesmo deve ser feito para a VPN IPsec, em IKE Endpoint Configuration, altere a Interface para o VIP da WAN e salve.

Agora será preciso alterar as regras no firewall na interface WAN referentes ao servidor OpenVPN, que no momento estão configuradas para o IP da interface WAN, mas precisam ser configuradas para o VIP da WAN.

Regras do firewall para OpenVPN
Regras do firewall para OpenVPN

Com isso os clientes remotos poderão se conectar.

Cliente remoto ligado através do servidor OpenVPN através do firewall principal
Cliente remoto ligado através do servidor OpenVPN através do firewall principal

Acima temos um cliente remoto ligado ao servidor OpenVPN que está ativo no firewall principal.

Nenhum cliente no firewall secundário
Nenhum cliente no firewall secundário

E nenhum no secundário.

Cliente ligado com sucesso através da VPN OpenVPN
Cliente ligado com sucesso através da VPN OpenVPN

O cliente se conectou com sucesso através do VIP da WAN.

Firewall principal desconectado
Firewall principal desconectado

Com o firewall principal desconectado de todas as redes podemos testar se a ligação passa automaticamente para o firewall secundário.

Cliente passou a se conectar ao firewall secundário
Cliente passou a se conectar ao firewall secundário

A ligação foi automaticamente reestabelecida no firewall secundário.

Ligação ativa no cliente
Ligação ativa no cliente

O cliente continua tendo acesso à rede.

Ativar Keep Alive na segunda fase
Ativar Keep Alive na segunda fase

Na segunda fase (Phase 2) da ligação, ative a opção Keep Alive e coloque um IP da rede remota, para permitir a conexão automática do túnel.

Ao contrário do túnel OpenVPN, o túnel IPsec pode demorar algum tempo até ter sua ligação reestabelecida depois da mudança de estado dos firewalls.

Túnel IPsec ativo no firewall secundário
Túnel IPsec ativo no firewall secundário

Túnel IPsec ativo através do segundo firewall, com a ligação estabelecida automaticamente após assumir o papel de MASTER.

Cliente com acesso à rede remota
Cliente com acesso à rede remota

Cliente remoto com acesso à rede.

High Availability no OPNsense

O mesmo processo de configuração de um segundo firewall para alta disponibilidade será feito OPNsense, seguindo os mesmos princípios que foram mostrados no pfSense.

Os IPs serão alterados para o próximo endereço disponível e o CIDR da rede WAN passará de /30 para /29.

WAN: 10.155.170.2/30 -> 10.155.170.3/29
Green: 10.53.170.1 -> 10.53.170.2
Blue: 10.120.170.1 -> 10.120.170.2

As interfaces Host e Sync continuarão com os mesmos endereços, já que não precisarão de Virtual IP.

A instância tabakPR ficará com os seguintes IPs:

WAN: 10.155.170.2
Green: 10.53.170.1
Blue: 10.120.170.1
Host: 10.10.10.23
Sync: 192.168.255.254

E os Virtual IPs nas duas instâncias ficarão com os endereços originais da instância tellisPR.

Regra permitindo tráfego na interface Sync no OPNsense
Regra permitindo tráfego na interface Sync no OPNsense

Como foi feito no pfSense, é preciso criar regras permitindo o tráfego na interface Sync.

Virtual IP no OPNsense
Virtual IP no OPNsense

O mesmo processo para criação dos VIPs.

Virtual IPs configurados
Virtual IPs configurados

Acima temos todos os VIPs configurados no OPNsense, eles serão sincronizados automaticamente quando o processo de configuração do CARP for terminado.

Gateway do servidor DHCP na interface Green
Gateway do servidor DHCP na interface Green

Como foi preciso fazer no pfSense, é necessário reconfigurar o Gateway no servidor DHCP.

Firewall - NAT - Outbound
Firewall – NAT – Outbound

A mesma coisa para as regras NAT.

High Availability - General settings
High Availability – General settings

Và em System -> High Availability -> Settings para configurar a alta disponibilidade.

Selecione a opção Synchronize States para habilitar a sincronização das configurações desse firewall para o secundário.

Em Synchronize Interface selecione a interface de sincronização, nesse caso é a interface Sync, e em Synchronize Peer IP coloque o IP do firewall secundário.

High Availability - Configuration Synchronization Settings
High Availability – Configuration Synchronization Settings

Em Synchronize Config to IP coloque novamente o IP do firewall secundário, para que essa instância replique suas configurações para o secundário.

Em Remote System Username e Remote System Password coloque as credenciais da conta de administrador.

High Availability - Configurações a sincronizar
High Availability – Configurações a sincronizar

Como foi feito no pfSense, selecione todas as opções que deseja sincronizar e depois clique em Save no final da página.

High Availability no firewall secundário
High Availability no firewall secundário

No firewall secundário é preciso apenas habilitar o serviço, selecionar a interface correta e colocar o IP do firewall primário, não é preciso fazer mais nenhuma configuração, já que esse firewall irá receber as configurações do firewall primário.

IPsec Interface - WAN CARP VIP
IPsec Interface – WAN CARP VIP

Como foi preciso fazer no pfSense, aqui também é preciso atualizar as configurações das VPNs IPsec e OpenVPN, para utilizar o VIP da WAN.

OpenVPN Servers Interface - WAN CARP VIP
OpenVPN Servers Interface – WAN CARP VIP

Depois de atualizar as interfaces das das VPNs é preciso atualizar as regras do firewall, da mesma maneira que foi feita no pfSense.

Atualizar regras no firewall para os servidores OpenVPN
Atualizar regras no firewall para os servidores OpenVPN

Com as regras atualizadas a configuração está completa, se desligar o firewall primário, o secundário irá assumir as responsabilidades.

VPN IPsec conectada através do firewall secundário
VPN IPsec conectada através do firewall secundário
Cliente Windows utilizando Remote Desktop através da VPN IPsec através do firewall secundário
Cliente Windows utilizando Remote Desktop através da VPN IPsec através do firewall secundário

Nas imagens acima podemos ver o cliente por trás dos firewalls OPNsense (com o segundo em failover) se conectando à rede do outro lado do pfSense.

OpenVPN em failover
OpenVPN em failover

OpenVPN em failover no firewall secundário.

Cliente na rede Green do OPNsense acessando o Windows Server através da VPN OpenVPN site to site
Cliente na rede Green do OPNsense acessando o Windows Server através da VPN OpenVPN site to site

O cliente Windows 10 acessando o Windows Server através da VPN OpenVPN site to site em failover.

Ligação de cliente remoto ao servidor OpenVPN no firewall secundário em failover
Ligação de cliente remoto ao servidor OpenVPN no firewall secundário em failover

Com o firewall em failover, um cliente remoto ligado ao servidor OpenVPN.

Cliente remoto conectado ao firewall secundário em failover acessando a internet através da VPN
Cliente remoto conectado ao firewall secundário em failover acessando a internet através da VPN

Windows 10 acessando a internet através da VPN no firewall secundário em failover.

Conclusão

Nesse trabalho foram abordados inúmeros temas referentes a firewalls e VPNs.

Existem diferentes maneiras de fazer a mesma coisa, é importante avaliar as necessidades e recursos disponíveis para encontrar a melhor solução.

Leave a Reply

Your email address will not be published. Required fields are marked *