Hailbytes VPN com Firezone Firewall Documentação

Conteúdo

Iniciar

As instruções passo a passo para implantar Hailbytes VPN com Firezone GUI são fornecidas aqui. 

Administrar: A configuração da instância do servidor está diretamente relacionada a esta parte.

Guias do usuário: Documentos úteis que podem ensiná-lo a usar o Firezone e resolver problemas típicos. Após a implementação bem-sucedida do servidor, consulte esta seção.

Guias para configurações comuns

Túnel dividido: use a VPN para enviar tráfego apenas para intervalos de IP específicos.

Lista de permissões: defina o endereço IP estático de um servidor VPN para usar a lista de permissões.

Túneis Reversos: Crie túneis entre vários pares usando túneis reversos.

Obter suporte

Temos o prazer de ajudá-lo se precisar de ajuda para instalar, personalizar ou utilizar Hailbytes VPN.

Autenticação

Antes que os usuários possam produzir ou baixar arquivos de configuração do dispositivo, o Firezone pode ser configurado para exigir autenticação. Os usuários também podem precisar se autenticar novamente periodicamente para manter sua conexão VPN ativa.

Embora o método de login padrão do Firezone seja e-mail e senha locais, ele também pode ser integrado a qualquer provedor de identidade OpenID Connect (OIDC) padronizado. Os usuários agora podem fazer login no Firezone usando suas credenciais Okta, Google, Azure AD ou provedor de identidade privada.

 

Integre um provedor OIDC genérico

Os parâmetros de configuração necessários para o Firezone permitir SSO usando um provedor OIDC são mostrados no exemplo abaixo. Em /etc/firezone/firezone.rb, você pode encontrar o arquivo de configuração. Execute firezone-ctl reconfigure e firezone-ctl restart para atualizar o aplicativo e aplicar as alterações.

 

# Este é um exemplo usando Google e Okta como um provedor de identidade SSO.

# Múltiplas configurações OIDC podem ser adicionadas à mesma instância Firezone.

 

# Firezone pode desativar a VPN de um usuário se houver algum erro detectado ao tentar

# para atualizar seu access_token. Isso é verificado para funcionar para Google, Okta e

# Azure SSO e é usado para desconectar automaticamente a VPN de um usuário se ele for removido

# do provedor OIDC. Deixe desabilitado se seu provedor OIDC

# tem problemas para atualizar tokens de acesso, pois pode interromper inesperadamente um

# sessão VPN do usuário.

default['firezone']['authentication']['disable_vpn_on_oidc_error'] = false

 

default['firezone']['authentication']['oidc'] = {

  Google: {

    Discovery_document_uri: “https://accounts.google.com/.well-known/openid-configuration”,

    ID do Cliente: " ”,

    cliente_secret: “ ”,

    redirecionamento_uri: “https://instance-id.yourfirezone.com/auth/oidc/google/callback/”,

    tipo_resposta: “código”,

    escopo: “perfil de e-mail openid”,

    marcador: "Google"

  },

  Ok: {

    discovery_document_uri: “https:// /.well-known/openid-configuration”,

    ID do Cliente: " ”,

    cliente_secret: “ ”,

    redirecionamento_uri: “https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,

    tipo_resposta: “código”,

    escopo: “perfil de e-mail openid offline_access”,

    etiqueta: “Okta”

  }

}



As seguintes configurações são necessárias para a integração:

  1. discovery_document_uri: O URI de configuração do provedor OpenID Connect que retorna um documento JSON usado para construir solicitações subsequentes para esse provedor OIDC.
  2. client_id: o ID do cliente do aplicativo.
  3. client_secret: O segredo do cliente do aplicativo.
  4. redirect_uri: Instrui o provedor OIDC para onde redirecionar após a autenticação. Este deve ser o seu Firezone EXTERNAL_URL + /auth/oidc/ /callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/google/callback/).
  5. response_type: Definido como código.
  6. escopo: Escopos OIDC para obter de seu provedor OIDC. Isso deve ser definido como perfil de e-mail openid ou perfil de e-mail openid offline_access, dependendo do provedor.
  7. label: O texto do rótulo do botão que aparece na tela de login do Firezone.

URLs bonitos

Para cada provedor OIDC, um URL bonito correspondente é criado para redirecionar para o URL de login do provedor configurado. Para o exemplo de configuração do OIDC acima, os URLs são:

  • https://instance-id.yourfirezone.com/auth/oidc/google
  • https://instance-id.yourfirezone.com/auth/oidc/okta

Instruções para configuração do Firezone com provedores de identidade populares

Provedores para os quais temos documentação:

  • Google
  • Octa
  • Azure Active Directory
  • Login
  • Autenticação Local

 

Se o seu provedor de identidade tiver um conector OIDC genérico e não estiver listado acima, consulte a documentação dele para obter informações sobre como recuperar as definições de configuração necessárias.

Mantenha a reautenticação regular

A configuração em configurações/segurança pode ser alterada para exigir reautenticação periódica. Isso pode ser usado para impor o requisito de que os usuários entrem no Firezone regularmente para continuar sua sessão VPN.

A duração da sessão pode ser configurada entre uma hora e noventa dias. Ao definir isso como Nunca, você pode habilitar sessões VPN a qualquer momento. Este é o padrão.

Reautenticação

Um usuário deve encerrar sua sessão VPN e fazer login no portal Firezone para autenticar novamente uma sessão VPN expirada (URL especificado durante a implantação).

Você pode autenticar novamente sua sessão seguindo as instruções precisas do cliente encontradas aqui.

 

Status da conexão VPN

A coluna da tabela Conexão VPN da página Usuários exibe o status da conexão de um usuário. Estes são os status de conexão:

ENABLED – A conexão está habilitada.

DESATIVADO – A conexão foi desativada por um administrador ou falha de atualização do OIDC.

EXPIRED – A conexão está desativada devido à expiração da autenticação ou um usuário não se conectou pela primeira vez.

Google

Por meio do conector OIDC geral, o Firezone permite o logon único (SSO) com o Google Workspace e o Cloud Identity. Este guia mostrará como obter os parâmetros de configuração listados abaixo, necessários para a integração:

  1. discovery_document_uri: O URI de configuração do provedor OpenID Connect que retorna um documento JSON usado para construir solicitações subsequentes para esse provedor OIDC.
  2. client_id: o ID do cliente do aplicativo.
  3. client_secret: O segredo do cliente do aplicativo.
  4. redirect_uri: Instrui o provedor OIDC para onde redirecionar após a autenticação. Este deve ser o seu Firezone EXTERNAL_URL + /auth/oidc/ /callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/google/callback/).
  5. response_type: Definido como código.
  6. escopo: Escopos OIDC para obter de seu provedor OIDC. Isso deve ser definido como perfil de e-mail openid para fornecer ao Firezone o e-mail do usuário nas declarações retornadas.
  7. label: O texto do rótulo do botão que aparece na tela de login do Firezone.

Obter definições de configuração

1. Tela de configuração OAuth

Se esta for a primeira vez que você está criando um novo ID de cliente OAuth, você será solicitado a configurar uma tela de consentimento.

*Selecione Interno para o tipo de usuário. Isso garante que apenas contas pertencentes a usuários na sua organização do Google Workspace possam criar configurações de dispositivos. NÃO selecione Externo, a menos que queira permitir que qualquer pessoa com uma Conta do Google válida crie configurações de dispositivo.

 

Na tela de informações do aplicativo:

  1. Nome do aplicativo: Firezone
  2. Logotipo do aplicativo: logotipo Firezone (salvar link como).
  3. Página inicial do aplicativo: a URL da sua instância do Firezone.
  4. Domínios autorizados: o domínio de nível superior da sua instância Firezone.

 

 

2. Crie IDs de cliente OAuth

Esta seção é baseada na própria documentação do Google sobre Configurando OAuth 2.0.

Visite o Console do Google Cloud página de credenciais página, clique em + Criar credenciais e selecione ID do cliente OAuth.

Na tela de criação do ID do cliente OAuth:

  1. Defina o tipo de aplicativo como aplicativo da Web
  2. Adicione seu Firezone EXTERNAL_URL + /auth/oidc/google/callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/google/callback/) como uma entrada para URIs de redirecionamento autorizado.

 

Depois de criar o ID do cliente OAuth, você receberá um ID do cliente e um segredo do cliente. Eles serão usados ​​junto com o URI de redirecionamento na próxima etapa.

Integração Firezone

Editar /etc/firezone/firezone.rb para incluir as opções abaixo:

 

# Usando o Google como o provedor de identidade SSO

default['firezone']['authentication']['oidc'] = {

  Google: {

    Discovery_document_uri: “https://accounts.google.com/.well-known/openid-configuration”,

    ID do Cliente: " ”,

    cliente_secret: “ ”,

    redirecionamento_uri: “https://instance-id.yourfirezone.com/auth/oidc/google/callback/”,

    tipo_resposta: “código”,

    escopo: “perfil de e-mail openid”,

    marcador: "Google"

  }

}

 

Execute firezone-ctl reconfigure e firezone-ctl restart para atualizar o aplicativo. Agora você deve ver um botão Entrar com o Google no URL raiz do Firezone.

Octa

O Firezone usa o conector OIDC genérico para facilitar o Single Sign-On (SSO) com o Okta. Este tutorial mostrará como obter os parâmetros de configuração listados abaixo, que são necessários para a integração:

  1. discovery_document_uri: O URI de configuração do provedor OpenID Connect que retorna um documento JSON usado para construir solicitações subsequentes para esse provedor OIDC.
  2. client_id: o ID do cliente do aplicativo.
  3. client_secret: O segredo do cliente do aplicativo.
  4. redirect_uri: Instrui o provedor OIDC para onde redirecionar após a autenticação. Este deve ser o seu Firezone EXTERNAL_URL + /auth/oidc/ /callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/okta/callback/).
  5. response_type: Definido como código.
  6. escopo: Escopos OIDC para obter de seu provedor OIDC. Isso deve ser definido como perfil de e-mail openid offline_access para fornecer ao Firezone o e-mail do usuário nas declarações retornadas.
  7. label: O texto do rótulo do botão que aparece na tela de login do Firezone.

 

Integrar Okta App

Esta seção do guia é baseada em Documentação da Okta.

No Admin Console, vá para Aplicativos > Aplicativos e clique em Criar integração de aplicativo. Defina o método de login como OICD – OpenID Connect e o tipo de aplicativo como aplicativo da Web.

Defina estas configurações:

  1. Nome do aplicativo: Firezone
  2. Logotipo do aplicativo: logotipo Firezone (salvar link como).
  3. Tipo de Concessão: Marque a caixa Atualizar Token. Isso garante que o Firezone seja sincronizado com o provedor de identidade e que o acesso VPN seja encerrado assim que o usuário for removido.
  4. URIs de redirecionamento de login: adicione seu Firezone EXTERNAL_URL + /auth/oidc/okta/callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/okta/callback/) como uma entrada para URIs de redirecionamento autorizado .
  5. Atribuições: Limite os grupos aos quais você deseja fornecer acesso à sua instância Firezone.

Depois que as configurações forem salvas, você receberá uma ID de cliente, Segredo do cliente e Domínio Okta. Esses 3 valores serão usados ​​na Etapa 2 para configurar o Firezone.

Integrar Firezone

Editar /etc/firezone/firezone.rb para incluir as opções abaixo. Seu Discovery_document_url será /.bem conhecido/configuração openid anexado ao final do seu okta_domínio.

 

# Usando Okta como o provedor de identidade SSO

default['firezone']['authentication']['oidc'] = {

  Ok: {

    discovery_document_uri: “https:// /.well-known/openid-configuration”,

    ID do Cliente: " ”,

    cliente_secret: “ ”,

    redirecionamento_uri: “https://instance-id.yourfirezone.com/auth/oidc/okta/callback/”,

    tipo_resposta: “código”,

    escopo: “perfil de e-mail openid offline_access”,

    etiqueta: “Okta”

  }

}

 

Execute firezone-ctl reconfigure e firezone-ctl restart para atualizar o aplicativo. Agora você deve ver um botão Sign in with Okta no URL raiz do Firezone.

 

Restringir o acesso a determinados usuários

Os usuários que podem acessar o aplicativo Firezone podem ser restringidos pela Okta. Vá para a página de atribuições do Firezone App Integration do Okta Admin Console para fazer isso.

Azure Active Directory

Por meio do conector OIDC genérico, o Firezone habilita o Single Sign-On (SSO) com o Azure Active Directory. Este manual mostrará como obter os parâmetros de configuração listados abaixo, que são necessários para a integração:

  1. discovery_document_uri: O URI de configuração do provedor OpenID Connect que retorna um documento JSON usado para construir solicitações subsequentes para esse provedor OIDC.
  2. client_id: o ID do cliente do aplicativo.
  3. client_secret: O segredo do cliente do aplicativo.
  4. redirect_uri: Instrui o provedor OIDC para onde redirecionar após a autenticação. Este deve ser o seu Firezone EXTERNAL_URL + /auth/oidc/ /callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/azure/callback/).
  5. response_type: Definido como código.
  6. escopo: Escopos OIDC para obter de seu provedor OIDC. Isso deve ser definido como perfil de e-mail openid offline_access para fornecer ao Firezone o e-mail do usuário nas declarações retornadas.
  7. label: O texto do rótulo do botão que aparece na tela de login do Firezone.

Obter definições de configuração

Este guia é extraído do Documentos do Azure Active Directory.

 

Acesse a página Azure Active Directory do portal do Azure. Escolha a opção de menu Gerenciar, selecione Novo Cadastro e, em seguida, cadastre-se fornecendo as informações abaixo:

  1. Nome: Zona de Fogo
  2. Tipos de conta com suporte: (somente Diretório padrão – inquilino único)
  3. URI de redirecionamento: este deve ser seu Firezone EXTERNAL_URL + /auth/oidc/azure/callback/ (por exemplo, https://instance-id.yourfirezone.com/auth/oidc/azure/callback/). Certifique-se de incluir a barra à direita. Este será o valor redirect_uri.

 

Após o registro, abra a visualização de detalhes do aplicativo e copie o ID do aplicativo (cliente). Este será o valor client_id. Em seguida, abra o menu endpoints para recuperar o Documento de metadados do OpenID Connect. Este será o valor discovery_document_uri.

 

Crie um novo segredo do cliente clicando na opção Certificados e segredos no menu Gerenciar. Copie o segredo do cliente; o valor do segredo do cliente será este.

 

Por fim, selecione o link de permissões da API no menu Gerenciar, clique em Adicione uma permissãoe selecione Microsoft Graph. Adicionar, acrescentar email, código aberto, acesso_offline e perfis para as permissões necessárias.

Integração Firezone

Editar /etc/firezone/firezone.rb para incluir as opções abaixo:

 

# Usando o Azure Active Directory como o provedor de identidade SSO

default['firezone']['authentication']['oidc'] = {

  azul: {

    discovery_document_uri: “https://login.microsoftonline.com/ /v2.0/.well-known/openid-configuration”,

    ID do Cliente: " ”,

    cliente_secret: “ ”,

    redirecionamento_uri: “https://instance-id.yourfirezone.com/auth/oidc/azure/callback/”,

    tipo_resposta: “código”,

    escopo: “perfil de e-mail openid offline_access”,

    etiqueta: “Azure”

  }

}

 

Execute firezone-ctl reconfigure e firezone-ctl restart para atualizar o aplicativo. Agora você deve ver um botão Entrar com o Azure na URL raiz do Firezone.

Como: Restringir o Acesso a Certos Membros

O Azure AD permite que os administradores limitem o acesso do aplicativo a um grupo específico de usuários dentro de sua empresa. Mais informações sobre como fazer isso podem ser encontradas na documentação da Microsoft.

Administrador

  • configurar
  • Gerenciar instalação
  • Atualizar
  • Resolução de problemas
  • Considerações de Segurança
  • Executando consultas SQL

configurar

O Chef Omnibus é usado pelo Firezone para gerenciar tarefas, incluindo empacotamento de lançamentos, supervisão de processos, gerenciamento de logs e muito mais.

O código Ruby compõe o arquivo de configuração principal, localizado em /etc/firezone/firezone.rb. Reiniciar sudo firezone-ctl reconfigure depois de fazer modificações neste arquivo faz com que o Chef reconheça as alterações e as aplique ao sistema operacional atual.

Consulte a referência do arquivo de configuração para obter uma lista completa de variáveis ​​de configuração e suas descrições.

Gerenciar instalação

Sua instância Firezone pode ser gerenciada por meio do zona de fogo-ctl comando, como mostrado abaixo. A maioria dos subcomandos requer prefixação com sudo.

 

root@demo:~# firezone-ctl

omnibus-ctl: comando (subcomando)

Comandos Gerais:

  limpar

    Exclua *todos* os dados da zona de incêndio e comece do zero.

  criar-ou-redefinir-admin

    Redefine a senha para o administrador com e-mail especificado por padrão ['firezone']['admin_email'] ou cria um novo administrador se esse e-mail não existir.

  ajudar

    Imprima esta mensagem de ajuda.

  reconfigurar

    Reconfigure o aplicativo.

  redefinir-rede

    Redefine nftables, interface WireGuard e tabela de roteamento de volta aos padrões Firezone.

  show-config

    Mostre a configuração que seria gerada pela reconfiguração.

  rede de desmontagem

    Remove a interface WireGuard e a tabela firezone nftables.

  vigor-cert-renewal

    Forçar a renovação do certificado agora, mesmo que ainda não tenha expirado.

  parar-cert-renovação

    Remove cronjob que renova certificados.

  desinstalação

    Mate todos os processos e desinstale o supervisor do processo (os dados serão preservados).

  versão

    Exibir a versão atual do Firezone

Comandos de gerenciamento de serviços:

  morte graciosa

    Tente uma parada normal e, em seguida, SIGKILL todo o grupo de processos.

  fazer correr

    Envie um HUP aos serviços.

  int

    Envie aos serviços um INT.

  matar

    Envie aos serviços um KILL.

  uma vez

    Inicie os serviços se eles estiverem inativos. Não os reinicie se eles pararem.

  restart

    Interrompa os serviços se estiverem em execução e reinicie-os.

  lista de serviços

    Liste todos os serviços (os serviços ativados aparecem com um *.)

  começo

    Inicie os serviços se eles estiverem inativos e reinicie-os se eles pararem.

  estado

    Mostra o status de todos os serviços.

  Pare

    Pare os serviços e não os reinicie.

  cauda

    Observe os logs de serviço de todos os serviços ativados.

  prazo

    Envie um TERMO para os serviços.

  usr1

    Envie aos serviços um USR1.

  usr2

    Envie aos serviços um USR2.

Atualizar

Todas as sessões VPN devem ser encerradas antes de atualizar o Firezone, que também exige o desligamento da interface do usuário da Web. Caso algo dê errado durante a atualização, aconselhamos reservar uma hora para a manutenção.

 

Para aprimorar o Firezone, execute as seguintes ações:

  1. Atualize o pacote firezone usando a instalação de um comando: sudo -E bash -c “$(curl -fsSL https://github.com/firezone/firezone/raw/master/scripts/install.sh)”
  2. Execute firezone-ctl reconfigure para selecionar as novas alterações.
  3. Execute firezone-ctl restart para reiniciar os serviços.

Se surgir algum problema, informe-nos por enviando um tíquete de suporte.

Atualizar de <0.5.0 para >=0.5.0

Existem algumas alterações importantes e modificações de configuração no 0.5.0 que devem ser abordadas. Saiba mais abaixo.

Solicitações empacotadas Nginx non_ssl_port (HTTP) removidas

O Nginx não suporta mais os parâmetros de porta SSL e não-SSL forçados a partir da versão 0.5.0. Como o Firezone precisa de SSL para funcionar, recomendamos remover o pacote de serviço Nginx definindo default['firezone']['nginx']['enabled'] = false e direcionando seu proxy reverso para o aplicativo Phoenix na porta 13000 (por padrão ).

Suporte ao Protocolo ACME

0.5.0 apresenta suporte ao protocolo ACME para renovar automaticamente os certificados SSL com o serviço Nginx integrado. Para habilitar,

  • Certifique-se de que default['firezone']['external_url'] contenha um FQDN válido que resolva para o endereço IP público do seu servidor.
  • Certifique-se de que a porta 80/tcp esteja acessível
  • Habilite o suporte ao protocolo ACME com default['firezone']['ssl']['acme']['enabled'] = true em seu arquivo de configuração.

Destinos de regra de saída sobrepostos

A possibilidade de adicionar regras com destinos duplicados desapareceu no Firezone 0.5.0. Nosso script de migração reconhecerá automaticamente essas situações durante uma atualização para 0.5.0 e manterá apenas as regras cujo destino inclua a outra regra. Não há nada que você precise fazer se estiver tudo bem.

Caso contrário, antes de atualizar, aconselhamos alterar seu conjunto de regras para se livrar dessas situações.

Pré-configurando Okta e Google SSO

O Firezone 0.5.0 remove o suporte para o estilo antigo de configuração Okta e Google SSO em favor da nova configuração baseada em OIDC mais flexível. 

Se você tiver alguma configuração nas chaves default['firezone']['authentication']['okta'] ou default['firezone']['authentication']['google'], você precisa migrá-las para nosso OIDC -configuração baseada em usando o guia abaixo.

Configuração existente do Google OAuth

Remova essas linhas contendo as configurações antigas do Google OAuth do seu arquivo de configuração localizado em /etc/firezone/firezone.rb

 

default['firezone']['authentication']['google']['enabled']

default['firezone']['authentication']['google']['client_id']

default['firezone']['authentication']['google']['client_secret']

default['firezone']['authentication']['google']['redirect_uri']

 

Em seguida, configure o Google como um provedor OIDC seguindo os procedimentos aqui.

(Fornecer instruções de link) <<<<<<<<<<<<<<<<

 

Configurar o Google OAuth existente 

Remova essas linhas contendo as configurações antigas do Okta OAuth do seu arquivo de configuração localizado em /etc/firezone/firezone.rb

 

default['firezone']['authentication']['okta']['enabled']

default['firezone']['authentication']['okta']['client_id']

default['firezone']['authentication']['okta']['client_secret']

Padrão['firezone']['autenticação']['okta']['site']

 

Em seguida, configure o Okta como um provedor OIDC seguindo os procedimentos aqui.

Atualize de 0.3.x para >= 0.3.16

Dependendo da sua configuração e versão atuais, siga as instruções abaixo:

Se você já tem uma integração OIDC:

Para alguns provedores OIDC, a atualização para >= 0.3.16 requer a obtenção de um token de atualização para o escopo de acesso offline. Ao fazer isso, garante-se que o Firezone seja atualizado com o provedor de identidade e que a conexão VPN seja desligada após a exclusão de um usuário. As iterações anteriores do Firezone não tinham esse recurso. Em alguns casos, os usuários excluídos do seu provedor de identidade ainda podem estar conectados a uma VPN.

É necessário incluir o acesso off-line no parâmetro de escopo de sua configuração OIDC para provedores OIDC que oferecem suporte ao escopo de acesso off-line. A reconfiguração Firezone-ctl deve ser executada para aplicar as alterações no arquivo de configuração Firezone, localizado em /etc/firezone/firezone.rb.

Para usuários que foram autenticados por seu provedor OIDC, você verá o título Conexões OIDC na página de detalhes do usuário da interface do usuário da Web se o Firezone conseguir recuperar o token de atualização com sucesso.

Se isso não funcionar, você precisará excluir seu aplicativo OAuth existente e repetir as etapas de configuração do OIDC para criar uma nova integração de aplicativo .

Eu tenho uma integração OAuth existente

Antes de 0.3.11, Firezone usava provedores OAuth2 pré-configurados. 

Siga as instruções SUA PARTICIPAÇÃO FAZ A DIFERENÇA para migrar para o OIDC.

Não integrei um provedor de identidade

Nenhuma ação necessária. 

Você pode seguir as instruções SUA PARTICIPAÇÃO FAZ A DIFERENÇA para ativar o SSO por meio de um provedor OIDC.

Atualize de 0.3.1 para >= 0.3.2

Em seu lugar, default['firezone']['external url'] substituiu a opção de configuração default['firezone']['fqdn']. 

Defina isso como a URL do seu portal on-line Firezone acessível ao público em geral. O padrão será https:// mais o FQDN do seu servidor se deixado indefinido.

O arquivo de configuração está localizado em /etc/firezone/firezone.rb. Consulte a referência do arquivo de configuração para obter uma lista completa de variáveis ​​de configuração e suas descrições.

Atualize de 0.2.x para 0.3.x

O Firezone não mantém mais as chaves privadas do dispositivo no servidor Firezone a partir da versão 0.3.0. 

A IU da Web do Firezone não permitirá que você baixe novamente ou veja essas configurações, mas todos os dispositivos existentes devem continuar a operar como estão.

Atualize de 0.1.x para 0.2.x

Se você estiver atualizando do Firezone 0.1.x, há algumas alterações no arquivo de configuração que devem ser feitas manualmente. 

Para fazer as modificações necessárias em seu arquivo /etc/firezone/firezone.rb, execute os comandos abaixo como root.

 

cp /etc/firezone/firezone.rb /etc/firezone/firezone.rb.bak

sed -i “s/\['ativar'\]/\['ativar'\]/” /etc/firezone/firezone.rb

echo “default['firezone']['connectivity_checks']['enabled'] = true” >> /etc/firezone/firezone.rb

echo “default['firezone']['connectivity_checks']['interval'] = 3_600” >> /etc/firezone/firezone.rb

firezone-ctl reconfigurar

reinicialização do firezone-ctl

guia de solução de problemas

Verificar os logs do Firezone é um primeiro passo sábio para quaisquer problemas que possam ocorrer.

Execute sudo firezone-ctl tail para visualizar os logs do Firezone.

Depurando problemas de conectividade

A maioria dos problemas de conectividade com o Firezone são causados ​​por regras incompatíveis de iptables ou nftables. Você deve certificar-se de que quaisquer regras que você tenha em vigor não entrem em conflito com as regras do Firezone.

A conectividade com a Internet cai quando o túnel está ativo

Certifique-se de que a cadeia FORWARD permite pacotes de seus clientes WireGuard para os locais que você deseja deixar passar pelo Firezone se sua conectividade com a Internet se deteriorar toda vez que você ativar seu túnel WireGuard.

 

Isso pode ser alcançado se você estiver usando o ufw, garantindo que a política de roteamento padrão seja permitida:

 

ubuntu@fz:~$ sudo ufw default permitir roteamento

Política de roteamento padrão alterada para 'permitir'

(certifique-se de atualizar suas regras de acordo)

 

A ufw o status de um servidor Firezone típico pode ser assim:

 

ubuntu@fz:~$ sudo ufw status detalhado

Estado: ativo

Registro: ativado (baixo)

Padrão: negar (entrada), permitir (saída), permitir (roteado)

Novos perfis: pular

 

Para ação de

— —— —-

22/tcp PERMITIR EM qualquer lugar

80/tcp PERMITIR EM qualquer lugar

443/tcp PERMISSÃO EM QUALQUER LUGAR

51820/udp PERMITIR EM QUALQUER LUGAR

22/tcp (v6) PERMITIR EM qualquer lugar (v6)

80/tcp (v6) PERMITIR EM qualquer lugar (v6)

443/tcp (v6) PERMITIR EM qualquer lugar (v6)

51820/udp (v6) PERMITIR EM qualquer lugar (v6)

Considerações de Segurança

Aconselhamos limitar o acesso à interface da Web para implantações de produção extremamente confidenciais e de missão crítica, conforme explicado abaixo.

Serviços e portas

 

e eficaz

Porta padrão

Endereço de escuta

Descrição

nginx

80, 443

todos os

Porta HTTP(S) pública para administrar o Firezone e facilitar a autenticação.

Vigia

51820

todos os

Porta WireGuard pública usada para sessões VPN. (UDP)

Postgresql

15432

127.0.0.1

Porta somente local usada para o servidor Postgresql integrado.

Phoenix

13000

127.0.0.1

Porta somente local usada pelo servidor de aplicativos elixir upstream.

Implantações de produção

Aconselhamos que você pense em restringir o acesso à interface do usuário da web exposta publicamente do Firezone (por padrão, portas 443/tcp e 80/tcp) e, em vez disso, use o túnel WireGuard para gerenciar Firezone para produção e implantações voltadas para o público, onde um único administrador será responsável de criar e distribuir configurações de dispositivos para usuários finais.

 

Por exemplo, se um administrador criou uma configuração de dispositivo e criou um túnel com o endereço WireGuard local 10.3.2.2, a seguinte configuração ufw permitiria que o administrador acessasse a IU da web Firezone na interface wg-firezone do servidor usando o padrão 10.3.2.1 endereço do túnel:

 

root@demo:~# ufw status detalhado

Estado: ativo

Registro: ativado (baixo)

Padrão: negar (entrada), permitir (saída), permitir (roteado)

Novos perfis: pular

 

Para ação de

— —— —-

22/tcp PERMITIR EM qualquer lugar

51820/udp PERMITIR EM QUALQUER LUGAR

Em qualquer lugar PERMITIR EM 10.3.2.2

22/tcp (v6) PERMITIR EM qualquer lugar (v6)

51820/udp (v6) PERMITIR EM qualquer lugar (v6)

Isso deixaria apenas 22 / tcp exposto para acesso SSH para gerenciar o servidor (opcional) e 51820 / udp expostos para estabelecer túneis WireGuard.

Executar consultas SQL

Firezone agrupa um servidor Postgresql e correspondência psql utilitário que pode ser usado no shell local da seguinte forma:

 

/opt/firezone/embedded/bin/psql \

  -U zona de fogo \

  -d zona de fogo \

  -h localhost\

  -p 15432\

  -c “SQL_STATEMENT”

 

Isso pode ser útil para fins de depuração.

 

Tarefas comuns:

 

  • Listando todos os usuários
  • Listando todos os dispositivos
  • Alterar a função de um usuário
  • Fazendo backup do banco de dados



Listando todos os usuários:

 

/opt/firezone/embedded/bin/psql \

  -U zona de fogo \

  -d zona de fogo \

  -h localhost\

  -p 15432\

  -c “SELECIONE * DE usuários;”



Listando todos os dispositivos:

 

/opt/firezone/embedded/bin/psql \

  -U zona de fogo \

  -d zona de fogo \

  -h localhost\

  -p 15432\

  -c “SELECIONE * DE dispositivos;”



Alterar uma função de usuário:

 

Defina a função como 'admin' ou 'sem privilégios':

 

/opt/firezone/embedded/bin/psql \

  -U zona de fogo \

  -d zona de fogo \

  -h localhost\

  -p 15432\

  -c “UPDATE users SET role = 'admin' WHERE email = 'user@example.com';”



Fazendo backup do banco de dados:

 

Além disso, está incluído o programa pg dump, que pode ser usado para fazer backups regulares do banco de dados. Execute o seguinte código para despejar uma cópia do banco de dados no formato de consulta SQL comum (substitua /path/to/backup.sql pelo local onde o arquivo SQL deve ser criado):

 

/opt/firezone/embedded/bin/pg_dump\

  -U zona de fogo \

  -d zona de fogo \

  -h localhost\

  -p 15432 > /caminho/para/backup.sql

Guias do usuário

  • Adicionar usuários
  • Adicionar Dispositivos
  • Regras de saída
  • Instruções do cliente
  • VPN de túnel dividido
  • túnel reverso 
  • Gateway NAT

Adicionar usuários

Após a implantação bem-sucedida do Firezone, você deve adicionar usuários para fornecer a eles acesso à sua rede. A IU da Web é usada para fazer isso.

 

IU da Web


Ao selecionar o botão “Adicionar usuário” em /users, você pode adicionar um usuário. Você será solicitado a fornecer ao usuário um endereço de e-mail e uma senha. Para permitir o acesso aos usuários em sua organização automaticamente, o Firezone também pode interagir e sincronizar com um provedor de identidade. Mais detalhes estão disponíveis em Autenticar. < Adicione um link para Autenticar

Adicionar Dispositivos

Aconselhamos solicitar que os usuários criem suas próprias configurações de dispositivo para que a chave privada seja visível apenas para eles. Os usuários podem gerar suas próprias configurações de dispositivo seguindo as instruções no Instruções do cliente página.

 

Gerando a configuração do dispositivo de administração

Todas as configurações do dispositivo do usuário podem ser criadas pelos administradores do Firezone. Na página de perfil do usuário localizada em /users, selecione a opção “Add Device” para fazer isso.

 

[Inserir captura de tela]

 

Você pode enviar por e-mail ao usuário o arquivo de configuração do WireGuard depois de criar o perfil do dispositivo.

 

Usuários e dispositivos estão vinculados. Para mais detalhes sobre como adicionar um usuário, consulte Adicionar usuários.

Regras de saída

Por meio do uso do sistema netfilter do kernel, o Firezone permite recursos de filtragem de saída para especificar pacotes DROP ou ACCEPT. Todo o tráfego é normalmente permitido.

 

CIDRs IPv4 e IPv6 e endereços IP são suportados por meio da lista de permissões e da lista de negações, respectivamente. Você pode optar por definir o escopo de uma regra para um usuário ao adicioná-la, o que aplica a regra a todos os dispositivos desse usuário.

Instruções do cliente

Instale e configure

Para estabelecer uma conexão VPN usando o cliente WireGuard nativo, consulte este guia.

 

1. Instale o cliente WireGuard nativo

 

Os clientes WireGuard oficiais localizados aqui são compatíveis com Firezone:

 

MacOS

 

Windows

 

iOS

 

Android

 

Visite o site oficial do WireGuard em https://www.wireguard.com/install/ para sistemas operacionais não mencionados acima.

 

2. Baixe o arquivo de configuração do dispositivo

 

O administrador do Firezone ou você mesmo pode gerar o arquivo de configuração do dispositivo usando o portal Firezone.

 

Visite o URL fornecido pelo administrador do Firezone para gerar automaticamente um arquivo de configuração do dispositivo. Sua empresa terá uma URL exclusiva para isso; neste caso, é https://instance-id.yourfirezone.com.

 

Faça login no Firezone Okta SSO

 

[Inserir captura de tela]

 

3. Adicione a configuração do cliente

 

Importe o arquivo.conf para o cliente WireGuard abrindo-o. Acionando o botão Ativar, você pode iniciar uma sessão VPN.

 

[Inserir captura de tela]

Reautenticação de Sessão

Siga as instruções abaixo se o seu administrador de rede tiver exigido autenticação recorrente para manter sua conexão VPN ativa. 



Você precisa:

 

URL do portal Firezone: Peça a conexão ao seu administrador de rede.

Seu administrador de rede deve ser capaz de oferecer seu login e senha. O site Firezone solicitará que você faça login usando o serviço de logon único que seu empregador usa (como Google ou Okta).

 

1. Desligue a conexão VPN

 

[Inserir captura de tela]

 

2. Autentique-se novamente 

Vá para o URL do portal Firezone e faça login usando as credenciais que seu administrador de rede forneceu. Se você já estiver conectado, clique no botão Reautenticar antes de entrar novamente.

 

[Inserir captura de tela]

 

Etapa 3: iniciar uma sessão VPN

[Inserir captura de tela]

Gerenciador de rede para Linux

Para importar o perfil de configuração do WireGuard usando a CLI do Network Manager em dispositivos Linux, siga estas instruções (nmcli).

NOTA

Se o perfil tiver suporte IPv6 ativado, a tentativa de importar o arquivo de configuração usando a GUI do Network Manager pode falhar com o seguinte erro:

ipv6.method: o método “auto” não é compatível com WireGuard

1. Instale as ferramentas WireGuard 

É necessário instalar os utilitários de espaço do usuário WireGuard. Este será um pacote chamado wireguard ou wireguard-tools para distribuições Linux.

Para Ubuntu / Debian:

sudo apt instalar wireguard

Para usar o Fedora:

sudo dnf instalar ferramentas wireguard

Arch Linux:

sudo pacman -S wireguard-tools

Visite o site oficial do WireGuard em https://www.wireguard.com/install/ para as distribuições não mencionadas acima.

2. Baixe a configuração 

O administrador do Firezone ou a autogeração podem gerar o arquivo de configuração do dispositivo usando o portal Firezone.

Visite o URL fornecido pelo administrador do Firezone para gerar automaticamente um arquivo de configuração do dispositivo. Sua empresa terá uma URL exclusiva para isso; neste caso, é https://instance-id.yourfirezone.com.

[Inserir captura de tela]

3. Importar configurações

Importe o arquivo de configuração fornecido usando nmcli:

sudo nmcli tipo de conexão de importação arquivo wireguard /path/to/configuration.conf

NOTA

O nome do arquivo de configuração corresponderá à conexão/interface do WireGuard. Após a importação, a conexão pode ser renomeada, se necessário:

conexão nmcli modificar [nome antigo] connection.id [novo nome]

4. Conecte ou desconecte

Através da linha de comando, conecte-se à VPN da seguinte maneira:

conexão nmcli [nome vpn]

Desconectar:

conexão nmcli inativa [nome vpn]

O applet Network Manager aplicável também pode ser usado para gerenciar a conexão se estiver usando uma GUI.

Conexão Automática

Ao selecionar “sim” para a opção de conexão automática, a conexão VPN pode ser configurada para conectar-se automaticamente:

 

conexão nmcli modificar conexão [nome vpn]. <<<<<<<<<<<<<<<<<<<<<<

 

autoconectar sim

 

Para desativar a conexão automática, defina-a novamente como não:

 

conexão nmcli modificar conexão [nome vpn].

 

autoconexão não

Disponibilize a autenticação multifator

Para ativar o MFA Vá para a página /user account/register mfa do portal Firezone. Use seu aplicativo autenticador para digitalizar o código QR depois de gerado e digite o código de seis dígitos.

Entre em contato com seu administrador para redefinir as informações de acesso de sua conta se você perder seu aplicativo autenticador.

VPN de túnel dividido

Este tutorial o guiará pelo processo de configuração do recurso de encapsulamento dividido do WireGuard com Firezone para que apenas o tráfego para intervalos de IP específicos seja encaminhado pelo servidor VPN.

 

1. Configurar IPs permitidos 

Os intervalos de IP para os quais o cliente roteará o tráfego de rede são definidos no campo IPs permitidos localizado na página /configurações/padrão. Somente as configurações de túnel WireGuard recém-criadas produzidas pelo Firezone serão afetadas pelas alterações neste campo.

 

[Inserir captura de tela]



O valor padrão é 0.0.0.0/0, ::/0, que roteia todo o tráfego de rede do cliente para o servidor VPN.

 

Exemplos de valores neste campo incluem:

 

0.0.0.0/0, ::/0 – todo o tráfego de rede será roteado para o servidor VPN.

192.0.2.3/32 – somente o tráfego para um único endereço IP será roteado para o servidor VPN.

3.5.140.0/22 ​​– apenas o tráfego para IPs no intervalo 3.5.140.1 – 3.5.143.254 será roteado para o servidor VPN. Neste exemplo, foi usado o intervalo CIDR para a região AWS ap-northeast-2.



NOTA

O Firezone seleciona primeiro a interface de saída associada à rota mais precisa ao determinar para onde rotear um pacote.

 

2. Gere novamente as configurações do WireGuard

Os usuários devem regenerar os arquivos de configuração e adicioná-los ao seu cliente WireGuard nativo para atualizar os dispositivos de usuário existentes com a nova configuração de túnel dividido.

 

Para obter instruções, veja Adicionar Dispositivo. <<<<<<<<<<< Adicionar link

túnel reverso

Este manual demonstrará como conectar dois dispositivos usando o Firezone como um relé. Um caso de uso típico é permitir que um administrador acesse um servidor, contêiner ou máquina protegida por NAT ou firewall.

 

Nó a Nó 

Esta ilustração mostra um cenário direto no qual os dispositivos A e B constroem um túnel.

 

[Insira a imagem arquitetônica da zona de incêndio]

 

Comece criando o Dispositivo A e o Dispositivo B navegando para /users/[user_id]/new_device. Nas configurações de cada dispositivo, certifique-se de que os seguintes parâmetros estejam definidos com os valores listados abaixo. Você pode definir as configurações do dispositivo ao criar a configuração do dispositivo (consulte Adicionar dispositivos). Se você precisar atualizar as configurações em um dispositivo existente, poderá fazê-lo gerando uma nova configuração de dispositivo.

 

Observe que todos os dispositivos têm uma página /settings/defaults onde o PersistentKeepalive pode ser configurado.

 

Dispositivo A

 

IPs permitidos = 10.3.2.2/32

  Este é o IP ou intervalo de IPs do Dispositivo B

Persistente Keepalive = 25

  Se o dispositivo estiver atrás de um NAT, isso garante que o dispositivo seja capaz de manter o túnel ativo e continuar recebendo pacotes da interface WireGuard. Normalmente, um valor de 25 é suficiente, mas pode ser necessário diminuir esse valor, dependendo do ambiente.



dispositivo B

 

IPs permitidos = 10.3.2.3/32

Este é o IP ou intervalo de IPs do Dispositivo A

Persistente Keepalive = 25

Caso Admin - Um para Muitos Nós

Este exemplo mostra uma situação na qual o Dispositivo A pode se comunicar com os Dispositivos B a D em ambas as direções. Essa configuração pode representar um engenheiro ou administrador acessando vários recursos (servidores, contêineres ou máquinas) em várias redes.

 

[Diagrama Arquitetônico]<<<<<<<<<<<<<<<<<<<<<<<

 

Certifique-se de que as seguintes configurações sejam feitas nas configurações de cada dispositivo para os valores correspondentes. Ao criar a configuração do dispositivo, você pode especificar as configurações do dispositivo (consulte Adicionar dispositivos). Uma nova configuração de dispositivo pode ser criada se as configurações de um dispositivo existente precisarem ser atualizadas.

 

Dispositivo A (nó do administrador)

 

IPs permitidos = 10.3.2.3/32, 10.3.2.4/32, 10.3.2.5/32 

    Este é o IP dos dispositivos B a D. Os IPs dos dispositivos B a D devem ser incluídos em qualquer intervalo de IP que você escolher definir.

Persistente Keepalive = 25 

    Isso garante que o dispositivo possa manter o túnel e continuar recebendo pacotes da interface WireGuard mesmo se estiver protegido por um NAT. Na maioria dos casos, um valor de 25 é adequado; no entanto, dependendo do ambiente, pode ser necessário diminuir esse valor.

 

Dispositivo B

 

  • AllowedIPs = 10.3.2.2/32: Este é o IP ou intervalo de IPs do Dispositivo A
  • Persistente Keepalive = 25

Dispositivo C

 

  • AllowedIPs = 10.3.2.2/32: Este é o IP ou intervalo de IPs do Dispositivo A
  • Persistente Keepalive = 25

Dispositivo D

 

  • AllowedIPs = 10.3.2.2/32: Este é o IP ou intervalo de IPs do Dispositivo A
  • Persistente Keepalive = 25

Gateway NAT

Para oferecer um único IP de saída estático para que todo o tráfego de sua equipe flua, o Firezone pode ser utilizado como um gateway NAT. Estas situações envolvem seu uso frequente:

 

Contratos de consultoria: solicite que seu cliente coloque na lista de permissões um único endereço IP estático, em vez do IP exclusivo do dispositivo de cada funcionário.

Usando um proxy ou mascarando seu IP de origem para fins de segurança ou privacidade.

 

Um exemplo simples de limitar o acesso a um aplicativo da Web auto-hospedado a um único IP estático na lista de permissões executando o Firezone será demonstrado nesta postagem. Nesta ilustração, Firezone e o recurso protegido estão em diferentes áreas de VPC.

 

Essa solução é frequentemente usada no lugar do gerenciamento de uma lista de permissões de IP para vários usuários finais, o que pode consumir muito tempo à medida que a lista de acesso se expande.

Exemplo da AWS

Nosso objetivo é configurar um servidor Firezone em uma instância EC2 para redirecionar o tráfego VPN para o recurso restrito. Nesse caso, o Firezone está servindo como um proxy de rede ou gateway NAT para fornecer a cada dispositivo conectado um IP de saída público exclusivo.

 

1. Instale o servidor Firezone

Nesse caso, uma instância EC2 chamada tc2.micro tem uma instância Firezone instalada nela. Para obter informações sobre a implantação do Firezone, acesse o Guia de implantação. Em relação à AWS, certifique-se de:

 

O security group da instância Firezone EC2 permite o tráfego de saída para o endereço IP do recurso protegido.

A instância Firezone vem com um IP elástico. O tráfego que é encaminhado através da instância Firezone para destinos externos terá esse como endereço IP de origem. O endereço IP em questão é 52.202.88.54.

 

[Inserir captura de tela]<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

2. Restrinja o acesso ao recurso que está sendo protegido

Um aplicativo da web auto-hospedado serve como recurso protegido neste caso. O aplicativo da web só pode ser acessado por solicitações provenientes do endereço IP 52.202.88.54. Dependendo do recurso, pode ser necessário permitir o tráfego de entrada em várias portas e tipos de tráfego. Isso não é abordado neste manual.

 

[Inserir captura de tela]<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

Informe ao terceiro responsável pelo recurso protegido que o tráfego do IP estático definido na Etapa 1 deve ser permitido (neste caso, 52.202.88.54).

 

3. Use o servidor VPN para direcionar o tráfego para o recurso protegido

 

Por padrão, todo o tráfego do usuário passará pelo servidor VPN e virá do IP estático configurado na Etapa 1 (neste caso, 52.202.88.54). No entanto, se o tunelamento dividido foi ativado, as configurações podem ser necessárias para garantir que o IP de destino do recurso protegido esteja listado entre os IPs permitidos.

Adicione aqui o texto do cabeçalho

Abaixo está uma lista completa das opções de configuração disponíveis no /etc/firezone/firezone.rb.



opção

descrição

valor padrão

default['firezone']['external_url']

URL usado para acessar o portal da web desta instância do Firezone.

“https://#{node['fqdn'] || node['hostname']}”

default['firezone']['config_directory']

Diretório de nível superior para configuração do Firezone.

/etc/firezone'

padrão['firezone']['install_directory']

Diretório de nível superior para instalar o Firezone.

/opt/firezone'

padrão['firezone']['app_directory']

Diretório de nível superior para instalar o aplicativo web Firezone.

“#{node['firezone']['install_directory']}/embedded/service/firezone”

default['firezone']['log_directory']

Diretório de nível superior para logs Firezone.

/var/log/zona de fogo'

default['firezone']['var_directory']

Diretório de nível superior para arquivos de tempo de execução do Firezone.

/var/opt/firezone'

padrão['firezone']['usuário']

Nome do usuário sem privilégios do Linux ao qual a maioria dos serviços e arquivos pertencerá.

zona de fogo'

default['firezone']['grupo']

Nome do grupo Linux ao qual a maioria dos serviços e arquivos pertencerá.

zona de fogo'

default['firezone']['admin_email']

Endereço de e-mail do usuário Firezone inicial.

“firezone@localhost”

padrão['firezone']['max_devices_per_user']

Número máximo de dispositivos que um usuário pode ter.

10

default['firezone']['allow_unprivileged_device_management']

Permite que usuários não administradores criem e excluam dispositivos.

VERDADEIRO

default['firezone']['allow_unprivileged_device_configuration']

Permite que usuários não administradores modifiquem as configurações do dispositivo. Quando desativado, impede que usuários sem privilégios alterem todos os campos do dispositivo, exceto nome e descrição.

VERDADEIRO

default['firezone']['egress_interface']

Nome da interface onde o tráfego encapsulado sairá. Se nil, a interface de rota padrão será usada.

zero

default['firezone']['fips_enabled']

Ative ou desative o modo OpenSSL FIPs.

zero

default['firezone']['logging']['enabled']

Ative ou desative o registro no Firezone. Defina como false para desabilitar totalmente o log.

VERDADEIRO

padrão['empresa']['nome']

Nome usado pelo livro de receitas da 'empresa' do Chef.

zona de fogo'

padrão['firezone']['install_path']

Caminho de instalação usado pelo livro de receitas 'corporativo' do Chef. Deve ser definido como o install_directory acima.

nó['firezone']['install_directory']

default['firezone']['sysvinit_id']

Um identificador usado em /etc/inittab. Deve ser uma sequência única de 1 a 4 caracteres.

E AÍ'

default['firezone']['authentication']['local']['enabled']

Ative ou desative a autenticação de e-mail/senha local.

VERDADEIRO

default['firezone']['authentication']['auto_create_oidc_users']

Crie automaticamente usuários que se conectam do OIDC pela primeira vez. Desative para permitir que apenas usuários existentes façam login via OIDC.

VERDADEIRO

default['firezone']['authentication']['disable_vpn_on_oidc_error']

Desative a VPN de um usuário se for detectado um erro ao tentar atualizar o token OIDC.

FALSE

padrão['firezone']['autenticação']['oidc']

OpenID Connect config, no formato {“provider” => [config…]} – Ver Documentação do OpenIDConnect para exemplos de configuração.

{}

default['firezone']['nginx']['enabled']

Ative ou desative o servidor nginx incluído.

VERDADEIRO

default['firezone']['nginx']['ssl_port']

Porta de escuta HTTPS.

443

padrão['firezone']['nginx']['diretório']

Diretório para armazenar a configuração do host virtual nginx relacionado ao Firezone.

“#{node['firezone']['var_directory']}/nginx/etc”

default['firezone']['nginx']['log_directory']

Diretório para armazenar arquivos de log nginx relacionados ao Firezone.

“#{node['firezone']['log_directory']}/nginx”

default['firezone']['nginx']['log_rotation']['file_maxbytes']

Tamanho do arquivo no qual girar os arquivos de log do Nginx.

104857600

default['firezone']['nginx']['log_rotation']['num_to_keep']

Número de arquivos de log Firezone nginx para manter antes de descartar.

10

default['firezone']['nginx']['log_x_forwarded_for']

Se deve registrar o cabeçalho Firezone nginx x-forwarded-for.

VERDADEIRO

default['firezone']['nginx']['hsts_header']['enabled']

Ativar ou desativar HSTS.

VERDADEIRO

default['firezone']['nginx']['hsts_header']['include_subdomains']

Ative ou desative includeSubDomains para o cabeçalho HSTS.

VERDADEIRO

default['firezone']['nginx']['hsts_header']['max_age']

Idade máxima para o cabeçalho HSTS.

31536000

default['firezone']['nginx']['redirect_to_canonical']

Se deve redirecionar URLs para o FQDN canônico especificado acima

FALSE

default['firezone']['nginx']['cache']['enabled']

Ative ou desative o cache Firezone nginx.

FALSE

padrão['firezone']['nginx']['cache']['diretório']

Diretório para o cache Firezone nginx.

“#{node['firezone']['var_directory']}/nginx/cache”

padrão['firezone']['nginx']['usuário']

Usuário Firezone nginx.

nó['firezone']['usuário']

padrão['firezone']['nginx']['grupo']

Grupo Firezone nginx.

node['firezone']['grupo']

default['firezone']['nginx']['dir']

Diretório de configuração nginx de nível superior.

nó['firezone']['nginx']['diretório']

default['firezone']['nginx']['log_dir']

Diretório de log nginx de nível superior.

node['firezone']['nginx']['log_directory']

default['firezone']['nginx']['pid']

Localização do arquivo pid nginx.

“#{node['firezone']['nginx']['directory']}/nginx.pid”

default['firezone']['nginx']['daemon_disable']

Desative o modo daemon nginx para que possamos monitorá-lo.

VERDADEIRO

default['firezone']['nginx']['gzip']

Ative ou desative a compactação nginx gzip.

em'

default['firezone']['nginx']['gzip_static']

Ative ou desative a compactação nginx gzip para arquivos estáticos.

desligado'

default['firezone']['nginx']['gzip_http_version']

Versão HTTP a ser usada para servir arquivos estáticos.

1.0 '

default['firezone']['nginx']['gzip_comp_level']

nível de compactação nginx gzip.

2 '

default['firezone']['nginx']['gzip_proxied']

Ativa ou desativa o gzipping de respostas para solicitações de proxy, dependendo da solicitação e da resposta.

qualquer'

default['firezone']['nginx']['gzip_vary']

Ativa ou desativa a inserção do cabeçalho de resposta “Vary: Accept-Encoding”.

desligado'

default['firezone']['nginx']['gzip_buffers']

Define o número e o tamanho dos buffers usados ​​para compactar uma resposta. Se nil, o padrão nginx é usado.

zero

default['firezone']['nginx']['gzip_types']

Tipos MIME para habilitar a compactação gzip.

['text/plain', 'text/css','application/x-javascript', 'text/xml', 'application/xml', 'application/rss+xml', 'application/atom+xml', ' text/javascript', 'aplicativo/javascript', 'aplicativo/json']

default['firezone']['nginx']['gzip_min_length']

Comprimento mínimo do arquivo para habilitar a compactação gzip do arquivo.

1000

default['firezone']['nginx']['gzip_disable']

Correspondente de agente do usuário para desabilitar a compactação gzip.

MSIE [1-6]\.'

default['firezone']['nginx']['keepalive']

Ativa o cache para conexão com servidores upstream.

em'

default['firezone']['nginx']['keepalive_timeout']

Tempo limite em segundos para conexão keepalive com servidores upstream.

65

default['firezone']['nginx']['worker_processes']

Número de processos de trabalho nginx.

nó['cpu'] && nó['cpu']['total'] ? nó['cpu']['total']: 1

default['firezone']['nginx']['worker_connections']

Número máximo de conexões simultâneas que podem ser abertas por um processo de trabalho.

1024

default['firezone']['nginx']['worker_rlimit_nofile']

Altera o limite do número máximo de arquivos abertos para processos de trabalho. Usa padrão nginx se nil.

zero

default['firezone']['nginx']['multi_accept']

Se os trabalhadores devem aceitar uma conexão por vez ou múltiplas.

VERDADEIRO

default['firezone']['nginx']['event']

Especifica o método de processamento de conexão a ser usado dentro do contexto de eventos nginx.

epoll'

default['firezone']['nginx']['server_tokens']

Ativa ou desativa a emissão da versão nginx nas páginas de erro e no campo de cabeçalho de resposta “Servidor”.

zero

default['firezone']['nginx']['server_names_hash_bucket_size']

Define o tamanho do depósito para as tabelas de hash de nomes de servidor.

64

default['firezone']['nginx']['sendfile']

Habilita ou desabilita o uso do sendfile() do nginx.

em'

default['firezone']['nginx']['access_log_options']

Define opções de log de acesso nginx.

zero

default['firezone']['nginx']['error_log_options']

Define as opções de log de erros do nginx.

zero

default['firezone']['nginx']['disable_access_log']

Desativa o registro de acesso nginx.

FALSE

default['firezone']['nginx']['types_hash_max_size']

tipos nginx hash tamanho máximo.

2048

default['firezone']['nginx']['types_hash_bucket_size']

tamanho do balde de hash de tipos nginx.

64

default['firezone']['nginx']['proxy_read_timeout']

tempo limite de leitura do proxy nginx. Defina como nil para usar o padrão nginx.

zero

default['firezone']['nginx']['client_body_buffer_size']

tamanho do buffer do corpo do cliente nginx. Defina como nil para usar o padrão nginx.

zero

default['firezone']['nginx']['client_max_body_size']

tamanho máximo do corpo do cliente nginx.

250 m '

default['firezone']['nginx']['default']['modules']

Especifique módulos nginx adicionais.

[]

default['firezone']['nginx']['enable_rate_limiting']

Ative ou desative a limitação de taxa nginx.

VERDADEIRO

default['firezone']['nginx']['rate_limiting_zone_name']

Nome da zona de limitação de taxa Nginx.

zona de fogo'

default['firezone']['nginx']['rate_limiting_backoff']

Recuo de limitação de taxa Nginx.

10 m '

default['firezone']['nginx']['rate_limit']

Limite de taxa Nginx.

10r/s'

default['firezone']['nginx']['ipv6']

Permita que o nginx escute solicitações HTTP para IPv6, além de IPv4.

VERDADEIRO

default['firezone']['postgresql']['enabled']

Ative ou desative o Postgresql agrupado. Defina como falso e preencha as opções do banco de dados abaixo para usar sua própria instância do Postgresql.

VERDADEIRO

default['firezone']['postgresql']['username']

Nome de usuário para Postgresql.

nó['firezone']['usuário']

default['firezone']['postgresql']['data_directory']

Diretório de dados do Postgresql.

“#{node['firezone']['var_directory']}/postgresql/13.3/data”

default['firezone']['postgresql']['log_directory']

Diretório de log do Postgresql.

“#{node['firezone']['log_directory']}/postgresql”

default['firezone']['postgresql']['log_rotation']['file_maxbytes']

Tamanho máximo do arquivo de log do Postgresql antes de ser girado.

104857600

default['firezone']['postgresql']['log_rotation']['num_to_keep']

Número de arquivos de log do Postgresql a serem mantidos.

10

default['firezone']['postgresql']['checkpoint_completion_target']

Alvo de conclusão do ponto de verificação do Postgresql.

0.5

default['firezone']['postgresql']['checkpoint_segments']

Número de segmentos de ponto de verificação do Postgresql.

3

default['firezone']['postgresql']['checkpoint_timeout']

Tempo limite do ponto de verificação do Postgresql.

5min'

default['firezone']['postgresql']['checkpoint_warning']

Tempo de aviso do ponto de verificação do Postgresql em segundos.

década de 30

default['firezone']['postgresql']['effective_cache_size']

Tamanho efetivo do cache do Postgresql.

128MB'

default['firezone']['postgresql']['listen_address']

Endereço de escuta do Postgresql.

127.0.0.1 '

default['firezone']['postgresql']['max_connections']

Conexões máximas do Postgresql.

350

default['firezone']['postgresql']['md5_auth_cidr_addresses']

CIDRs do Postgresql para permitir autenticação md5.

['127.0.0.1/32', '::1/128']

padrão['firezone']['postgresql']['porta']

Porta de escuta do Postgresql.

15432

default['firezone']['postgresql']['shared_buffers']

Tamanho dos buffers compartilhados do Postgresql.

“#{(node['memory']['total'].to_i / 4) / 1024}MB”

default['firezone']['postgresql']['shmmax']

Postgresql shmmax em bytes.

17179869184

default['firezone']['postgresql']['shmall']

Postgresql pequeno em bytes.

4194304

default['firezone']['postgresql']['work_mem']

Tamanho da memória de trabalho do Postgresql.

8MB'

default['firezone']['database']['user']

Especifica o nome de usuário que Firezone usará para se conectar ao banco de dados.

node['firezone']['postgresql']['username']

default['firezone']['database']['password']

Se estiver usando um banco de dados externo, especifica a senha que Firezone usará para se conectar ao banco de dados.

mude-me'

padrão['firezone']['database']['nome']

Banco de dados que o Firezone usará. Será criado se não existir.

zona de fogo'

default['firezone']['database']['host']

Host do banco de dados ao qual o Firezone se conectará.

nó['firezone']['postgresql']['listen_address']

padrão['firezone']['database']['porta']

Porta do banco de dados à qual o Firezone se conectará.

nó['firezone']['postgresql']['porta']

default['firezone']['database']['pool']

O tamanho do pool de banco de dados que Firezone usará.

[10, Etc.nprocessadores].max

default['firezone']['database']['ssl']

Se deve conectar-se ao banco de dados por SSL.

FALSE

default['firezone']['database']['ssl_opts']

Hash de opções para enviar para a opção :ssl_opts ao conectar por SSL. Ver Documentação do Ecto.Adapters.Postgres.

{}

default['firezone']['database']['parameters']

Hash de parâmetros para enviar para a opção :parameters ao se conectar ao banco de dados. Ver Documentação do Ecto.Adapters.Postgres.

{}

default['firezone']['database']['extensions']

Extensões de banco de dados a serem ativadas.

{ 'plpgsql' => verdadeiro, 'pg_trgm' => verdadeiro }

default['firezone']['phoenix']['enabled']

Ative ou desative o aplicativo da web Firezone.

VERDADEIRO

default['firezone']['phoenix']['listen_address']

Endereço de escuta do aplicativo web Firezone. Este será o endereço de escuta upstream que o nginx proxies.

127.0.0.1 '

padrão['firezone']['phoenix']['porta']

Porta de escuta do aplicativo web Firezone. Esta será a porta upstream que o nginx proxies.

13000

default['firezone']['phoenix']['log_directory']

Diretório de registro do aplicativo web Firezone.

“#{node['firezone']['log_directory']}/phoenix”

default['firezone']['phoenix']['log_rotation']['file_maxbytes']

Tamanho do arquivo de log do aplicativo web Firezone.

104857600

default['firezone']['phoenix']['log_rotation']['num_to_keep']

Número de arquivos de log do aplicativo da Web Firezone a serem mantidos.

10

default['firezone']['phoenix']['crash_detection']['enabled']

Ative ou desative a desativação do aplicativo da web Firezone quando uma falha for detectada.

VERDADEIRO

default['firezone']['phoenix']['external_trusted_proxies']

Lista de proxies reversos confiáveis ​​formatados como uma matriz de IPs e/ou CIDRs.

[]

default['firezone']['phoenix']['private_clients']

Lista de clientes HTTP de rede privada, formatados como Array de IPs e/ou CIDRs.

[]

default['firezone']['wireguard']['enabled']

Ative ou desative o gerenciamento integrado do WireGuard.

VERDADEIRO

default['firezone']['wireguard']['log_directory']

Diretório de log para gerenciamento WireGuard integrado.

“#{node['firezone']['log_directory']}/wireguard”

default['firezone']['wireguard']['log_rotation']['file_maxbytes']

Tamanho máximo do arquivo de log do WireGuard.

104857600

default['firezone']['wireguard']['log_rotation']['num_to_keep']

Número de arquivos de log do WireGuard a serem mantidos.

10

default['firezone']['wireguard']['interface_name']

Nome da interface WireGuard. A alteração desse parâmetro pode causar uma perda temporária na conectividade VPN.

wg-firezone'

padrão['firezone']['wireguard']['porta']

Porta de escuta WireGuard.

51820

default['firezone']['wireguard']['mtu']

Interface WireGuard MTU para este servidor e para configurações de dispositivo.

1280

default['firezone']['wireguard']['endpoint']

WireGuard Endpoint a ser usado para gerar configurações de dispositivo. Se nil, o padrão é o endereço IP público do servidor.

zero

default['firezone']['wireguard']['dns']

DNS WireGuard a ser usado para configurações de dispositivos gerados.

1.1.1.1, 1.0.0.1'

default['firezone']['wireguard']['allowed_ips']

WireGuard AllowedIPs para usar para configurações de dispositivos gerados.

0.0.0.0/0, ::/0'

default['firezone']['wireguard']['persistent_keepalive']

Configuração padrão de PersistentKeepalive para configurações de dispositivo geradas. Um valor de 0 desativa.

0

default['firezone']['wireguard']['ipv4']['enabled']

Ative ou desative o IPv4 para a rede WireGuard.

VERDADEIRO

default['firezone']['wireguard']['ipv4']['masquerade']

Ative ou desative o mascaramento para pacotes que saem do túnel IPv4.

VERDADEIRO

default['firezone']['wireguard']['ipv4']['network']

Pool de endereços IPv4 da rede WireGuard.

10.3.2.0/24 ′

default['firezone']['wireguard']['ipv4']['address']

Endereço IPv4 da interface WireGuard. Deve estar dentro do pool de endereços WireGuard.

10.3.2.1 '

default['firezone']['wireguard']['ipv6']['enabled']

Ative ou desative o IPv6 para a rede WireGuard.

VERDADEIRO

default['firezone']['wireguard']['ipv6']['masquerade']

Ative ou desative o mascaramento para pacotes que saem do túnel IPv6.

VERDADEIRO

default['firezone']['wireguard']['ipv6']['network']

Pool de endereços IPv6 da rede WireGuard.

fd00::3:2:0/120′

default['firezone']['wireguard']['ipv6']['address']

Endereço IPv6 da interface WireGuard. Deve estar dentro do pool de endereços IPv6.

fd00::3:2:1′

default['firezone']['runit']['svlogd_bin']

Runit svlogd bin local.

“#{node['firezone']['install_directory']}/embedded/bin/svlogd”

padrão['firezone']['ssl']['diretório']

Diretório SSL para armazenar certificados gerados.

/var/opt/firezone/ssl'

default['firezone']['ssl']['email_address']

Endereço de e-mail a ser usado para certificados autoassinados e avisos de renovação do protocolo ACME.

você@exemplo.com'

default['firezone']['ssl']['acme']['enabled']

Habilite o ACME para provisionamento automático de certificado SSL. Desative isso para evitar que o Nginx escute na porta 80. Consulte SUA PARTICIPAÇÃO FAZ A DIFERENÇA para mais instruções.

FALSE

default['firezone']['ssl']['acme']['server']

Servidor ACME a ser usado para emissão/renovação de certificados. pode ser qualquer servidor acme.sh válido

letsencrypt

default['firezone']['ssl']['acme']['keylength']

Especifique o tipo de chave e comprimento para certificados SSL. Ver SUA PARTICIPAÇÃO FAZ A DIFERENÇA

ec-256

padrão['firezone']['ssl']['certificado']

Caminho para o arquivo de certificado para seu FQDN. Substitui a configuração ACME acima, se especificado. Se ACME e this forem nulos, um certificado autoassinado será gerado.

zero

default['firezone']['ssl']['certificate_key']

Caminho para o arquivo de certificado.

zero

default['firezone']['ssl']['ssl_dhparam']

nginx ssl dh_param.

zero

default['firezone']['ssl']['country_name']

Nome do país para o certificado autoassinado.

NÓS'

default['firezone']['ssl']['state_name']

Nome do estado para certificado autoassinado.

CA '

default['firezone']['ssl']['locality_name']

Nome da localidade para o certificado autoassinado.

São Francisco'

default['firezone']['ssl']['company_name']

Certificado autoassinado do nome da empresa.

Minha compania'

default['firezone']['ssl']['organizational_unit_name']

Nome da unidade organizacional para o certificado autoassinado.

Operações'

padrão['firezone']['ssl']['cifras']

Cifras SSL para nginx usar.

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’

default['firezone']['ssl']['fips_ciphers']

Cifras SSL para o modo FIPs.

FIPS@STRENGTH:!aNULL:!eNULL'

padrão['firezone']['ssl']['protocolos']

Protocolos TLS a serem usados.

TLSv1 TLSv1.1 TLSv1.2′

default['firezone']['ssl']['session_cache']

Cache de sessão SSL.

compartilhado:SSL:4m'

default['firezone']['ssl']['session_timeout']

Tempo limite da sessão SSL.

5 m '

padrão['firezone']['robots_allow']

os robôs nginx permitem.

/ '

padrão['firezone']['robots_disallow']

os robôs nginx não permitem.

zero

default['firezone']['outbound_email']['from']

E-mail de saída do endereço.

zero

default['firezone']['outbound_email']['provider']

Provedor de serviços de e-mail de saída.

zero

default['firezone']['outbound_email']['configs']

Configurações do provedor de e-mail de saída.

consulte omnibus/cookbooks/firezone/attributes/default.rb

default['firezone']['telemetry']['enabled']

Ative ou desative a telemetria anônima do produto.

VERDADEIRO

default['firezone']['connectivity_checks']['enabled']

Ative ou desative o serviço de verificação de conectividade Firezone.

VERDADEIRO

padrão['firezone']['connectivity_checks']['intervalo']

Intervalo entre as verificações de conectividade em segundos.

3_600



________________________________________________________________

 

Locais de arquivos e diretórios

 

Aqui você encontrará uma lista de arquivos e diretórios relacionados a uma instalação típica do Firezone. Eles podem mudar dependendo das mudanças no seu arquivo de configuração.



caminho

descrição

/var/opt/firezone

Diretório de nível superior contendo dados e configuração gerada para serviços integrados Firezone.

/opt/firezone

Diretório de nível superior contendo bibliotecas, binários e arquivos de tempo de execução necessários para o Firezone.

/usr/bin/firezone-ctl

utilitário firezone-ctl para gerenciar sua instalação Firezone.

/etc/systemd/system/firezone-runsvdir-start.service

arquivo de unidade systemd para iniciar o processo de supervisão do Firezone runsvdir.

/etc/firezone

Arquivos de configuração do Firezone.



__________________________________________________________

 

Modelos de firewall

 

Esta página estava vazia em documentos

 

_____________________________________________________________

 

Modelo de Firewall Nftables

 

O seguinte modelo de firewall nftables pode ser usado para proteger o servidor que executa o Firezone. O modelo faz algumas suposições; você pode precisar ajustar as regras para se adequar ao seu caso de uso:

  • A interface WireGuard é denominada wg-firezone. Se isso não estiver correto, altere a variável DEV_WIREGUARD para corresponder à opção de configuração padrão ['firezone']['wireguard']['interface_name'].
  • A porta que o WireGuard está escutando é 51820. Se você não estiver usando a porta padrão, altere a variável WIREGUARD_PORT.
  • Somente o seguinte tráfego de entrada será permitido ao servidor:
    • SSH (porta TCP 22)
    • HTTP (porta TCP 80)
    • HTTPS (porta TCP 443)
    • WireGuard (porta UDP WIREGUARD_PORT)
    • UDP traceroute (porta UDP 33434-33524, taxa limitada a 500/segundo)
    • ICMP e ICMPv6 (taxa de respostas ping/ping limitada a 2000/segundo)
  • Somente o seguinte tráfego de saída será permitido do servidor:
    • DNS (UDP e porta TCP 53)
    • HTTP (porta TCP 80)
    • NTP (porta UDP 123)
    • HTTPS (porta TCP 443)
    • Envio SMTP (porta TCP 587)
    • UDP traceroute (porta UDP 33434-33524, taxa limitada a 500/segundo)
  • O tráfego incomparável será registrado. As regras usadas para registro são separadas das regras para descartar o tráfego e são limitadas por taxa. A remoção das regras de registro relevantes não afetará o tráfego.

Regras Gerenciadas Firezone

Firezone configura suas próprias regras nftables para permitir/rejeitar tráfego para destinos configurados na interface web e para lidar com NAT de saída para tráfego de cliente.

A aplicação do modelo de firewall abaixo em um servidor já em execução (não no momento da inicialização) resultará na eliminação das regras do Firezone. Isso pode ter implicações de segurança.

Para contornar isso, reinicie o serviço Phoenix:

firezone-ctl reiniciar phoenix

Modelo básico de firewall

#!/usr/sbin/nft -f

 

## Limpar/limpar todas as regras existentes

liberar conjunto de regras

 

################################ VARIÁVEIS ################# ###############

## Nome da interface de Internet/WAN

definir DEV_WAN = eth0

 

## Nome da interface WireGuard

definir DEV_WIREGUARD = wg-firezone

 

## Porta de escuta do WireGuard

definir WIREGUARD_PORT = 51820

############################## VARIÁVEIS FIM ################## ############

 

# Tabela principal de filtragem da família inet

tabela filtro inet {

 

 # Regras para tráfego encaminhado

 # Esta cadeia é processada antes da cadeia direta Firezone

 cadeia para frente {

   tipo de filtro filtro de prioridade de avanço do gancho – 5; política aceita

 }

 

 # Regras para tráfego de entrada

 cadeia de entrada {

   tipo de gancho de filtro filtro de prioridade de entrada; queda de política

 

   ## Permitir tráfego de entrada para interface de loopback

   se lo \

     aceitar \

     comentar “Permitir todo o tráfego da interface de loopback”

 

   ## Permitir conexões estabelecidas e relacionadas

   estado ct estabelecido, relacionado \

     aceitar \

     comentar “Permitir conexões estabelecidas/relacionadas”

 

   ## Permitir tráfego WireGuard de entrada

   iif $DEV_WAN porta udp $WIREGUARD_PORT \

     contador \

     aceitar \

     comentar “Permitir tráfego WireGuard de entrada”

 

   ## Registrar e descartar novos pacotes TCP não SYN

   flags tcp != estado syn ct novo \

     taxa limite 100/minuto rajada 150 pacotes \

     prefixo de registro “IN – Novo !SYN: “ \

     comentar “Registro de limite de taxa para novas conexões que não têm o sinalizador SYN TCP definido”

   flags tcp != estado syn ct novo \

     contador \

     derrubar \

     comentar “Elimine novas conexões que não tenham o sinalizador SYN TCP definido”

 

   ## Registrar e descartar pacotes TCP com sinalizador fin/syn inválido definido

   flags tcp & (fin|syn) == (fin|syn) \

     taxa limite 100/minuto rajada 150 pacotes \

     prefixo de registro “IN – TCP FIN|SIN:“ \

     comentar “Registro de limite de taxa para pacotes TCP com sinalizador fin/syn inválido definido”

   flags tcp & (fin|syn) == (fin|syn) \

     contador \

     derrubar \

     comentar “Descartar pacotes TCP com conjunto de sinalizadores fin/syn inválido”

 

   ## Registrar e descartar pacotes TCP com sinalizador syn/rst inválido definido

   sinalizadores tcp & (syn|rst) == (syn|rst) \

     taxa limite 100/minuto rajada 150 pacotes \

     prefixo de registro “ENTRADA – TCP SYN|RST: “ \

     comentar “Registro de limite de taxa para pacotes TCP com sinalizador syn/rst inválido definido”

   sinalizadores tcp & (syn|rst) == (syn|rst) \

     contador \

     derrubar \

     comentar “Descarte pacotes TCP com conjunto de sinalizadores syn/rst inválidos”

 

   ## Registrar e descartar sinalizadores TCP inválidos

   flags tcp & (fin|syn|rst|psh|ack|urg) < (fin) \

     taxa limite 100/minuto rajada 150 pacotes \

     prefixo de registro “DENTRO – FIN:” \

     comentar “Registro de limite de taxa para sinalizadores TCP inválidos (fin|syn|rst|psh|ack|urg) < (fin)”

   flags tcp & (fin|syn|rst|psh|ack|urg) < (fin) \

     contador \

     derrubar \

     comentar “Descarte pacotes TCP com flags (fin|syn|rst|psh|ack|urg) < (fin)”

 

   ## Registrar e descartar sinalizadores TCP inválidos

   flags tcp & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     taxa limite 100/minuto rajada 150 pacotes \

     prefixo de registro “IN – FIN|PSH|URG:” \

     comentar “Registro de limite de taxa para sinalizadores TCP inválidos (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)”

   flags tcp & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     contador \

     derrubar \

     comentar “Descarte pacotes TCP com sinalizadores (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)”

 

   ## Descarte o tráfego com estado de conexão inválido

   estado ct inválido \

     taxa limite 100/minuto rajada 150 pacotes \

     log sinaliza todos os prefixos “IN – Inválido: “ \

     comentar “Registro de limite de taxa para tráfego com estado de conexão inválido”

   estado ct inválido \

     contador \

     derrubar \

     comentar “Descartar tráfego com estado de conexão inválido”

 

   ## Permitir respostas de ping/ping IPv4, mas limite de taxa para 2000 PPS

   ip protocolo icmp icmp type { resposta de eco, solicitação de eco } \

     taxa limite 2000/segundo \

     contador \

     aceitar \

     comentar “Permitir eco IPv4 de entrada (ping) limitado a 2000 PPS”

 

   ## Permitir todos os outros ICMP IPv4 de entrada

   ip protocolo icmp \

     contador \

     aceitar \

     comentar “Permitir todos os outros IPv4 ICMP”

 

   ## Permitir respostas de ping/ping IPv6, mas limite de taxa para 2000 PPS

   tipo icmpv6 { resposta de eco, solicitação de eco } \

     taxa limite 2000/segundo \

     contador \

     aceitar \

     comentar “Permitir eco IPv6 de entrada (ping) limitado a 2000 PPS”

 

   ## Permitir todos os outros ICMP IPv6 de entrada

   meta l4proto { icmpv6 } \

     contador \

     aceitar \

     comentar “Permitir todos os outros IPv6 ICMP”

 

   ## Permitir portas UDP traceroute de entrada, mas limitar a 500 PPS

   porta udp 33434-33524\

     taxa limite 500/segundo \

     contador \

     aceitar \

     comentar “Permitir traceroute UDP de entrada limitado a 500 PPS”

 

   ## Permitir SSH de entrada

   porta tcp ssh ct estado novo \

     contador \

     aceitar \

     comentar “Permitir conexões SSH de entrada”

 

   ## Permitir HTTP e HTTPS de entrada

   tcp dport { http, https } ct estado novo \

     contador \

     aceitar \

     comentar “Permitir conexões HTTP e HTTPS de entrada”

 

   ## Registre qualquer tráfego incomparável, mas limite a taxa de registro a um máximo de 60 mensagens/minuto

   ## A política padrão será aplicada ao tráfego incomparável

   taxa limite 60/minuto rajada 100 pacotes \

     prefixo de registro “DENTRO – Soltar:“ \

     comentar “Registrar qualquer tráfego incomparável”

 

   ## Conte o tráfego incomparável

   contador \

     comentar “Conte qualquer tráfego incomparável”

 }

 

 # Regras para tráfego de saída

 cadeia de saída {

   filtro de tipo filtro de prioridade de saída do gancho; queda de política

 

   ## Permitir tráfego de saída para interface de loopback

   oi lo \

     aceitar \

     comentar “Permitir todo o tráfego para a interface de loopback”

 

   ## Permitir conexões estabelecidas e relacionadas

   estado ct estabelecido, relacionado \

     contador \

     aceitar \

     comentar “Permitir conexões estabelecidas/relacionadas”

 

   ## Permita o tráfego de saída do WireGuard antes de descartar conexões com estado ruim

   oif $DEV_WAN esporte udp $WIREGUARD_PORT \

     contador \

     aceitar \

     comentar “Permitir tráfego de saída do WireGuard”

 

   ## Descarte o tráfego com estado de conexão inválido

   estado ct inválido \

     taxa limite 100/minuto rajada 150 pacotes \

     log sinaliza todos os prefixos “SAÍDA – Inválido: “ \

     comentar “Registro de limite de taxa para tráfego com estado de conexão inválido”

   estado ct inválido \

     contador \

     derrubar \

     comentar “Descartar tráfego com estado de conexão inválido”

 

   ## Permitir todos os outros IPv4 ICMP de saída

   ip protocolo icmp \

     contador \

     aceitar \

     comentar “Permitir todos os tipos IPv4 ICMP”

 

   ## Permitir todos os outros IPv6 ICMP de saída

   meta l4proto { icmpv6 } \

     contador \

     aceitar \

     comentar “Permitir todos os tipos IPv6 ICMP”

 

   ## Permitir portas UDP traceroute de saída, mas limitar a 500 PPS

   porta udp 33434-33524\

     taxa limite 500/segundo \

     contador \

     aceitar \

     comentar “Permitir traceroute UDP de saída limitado a 500 PPS”

 

   ## Permitir conexões HTTP e HTTPS de saída

   tcp dport { http, https } ct estado novo \

     contador \

     aceitar \

     comentar “Permitir conexões HTTP e HTTPS de saída”

 

   ## Permitir envio SMTP de saída

   tcp dport envio ct estado novo \

     contador \

     aceitar \

     comentar “Permitir envio SMTP de saída”

 

   ## Permitir solicitações DNS de saída

   porta udp 53 \

     contador \

     aceitar \

     comentar “Permitir solicitações de DNS UDP de saída”

   porta tcp 53 \

     contador \

     aceitar \

     comentar “Permitir solicitações de DNS TCP de saída”

 

   ## Permitir solicitações NTP de saída

   porta udp 123 \

     contador \

     aceitar \

     comentar “Permitir solicitações NTP de saída”

 

   ## Registre qualquer tráfego incomparável, mas limite a taxa de registro a um máximo de 60 mensagens/minuto

   ## A política padrão será aplicada ao tráfego incomparável

   taxa limite 60/minuto rajada 100 pacotes \

     prefixo de registro “SAIR – Soltar: “ \

     comentar “Registrar qualquer tráfego incomparável”

 

   ## Conte o tráfego incomparável

   contador \

     comentar “Conte qualquer tráfego incomparável”

 }

 

}

 

# Tabela principal de filtragem NAT

tabela inet nat {

 

 # Regras para pré-roteamento de tráfego NAT

 cadeia de pré-roteamento {

   digite nat gancho pré-roteamento prioridade dstnat; política aceita

 }

 

 # Regras para pós-roteamento de tráfego NAT

 # Esta tabela é processada antes da cadeia de pós-roteamento Firezone

 pós-roteamento em cadeia {

   digite nat hook prioridade pós-roteamento srcnat – 5; política aceita

 }

 

}

Uso

O firewall deve ser armazenado no local relevante para a distribuição do Linux em execução. Para Debian/Ubuntu é /etc/nftables.conf e para RHEL é /etc/sysconfig/nftables.conf.

nftables.service precisará ser configurado para iniciar na inicialização (se ainda não estiver) definido:

systemctl habilitar nftables.service

Se fizer qualquer alteração no modelo de firewall, a sintaxe pode ser validada executando o comando check:

nft -f /caminho/para/nftables.conf -c

Certifique-se de validar se o firewall funciona conforme o esperado, pois alguns recursos do nftables podem não estar disponíveis, dependendo da versão em execução no servidor.



_______________________________________________________________



Telemetria

 

Este documento apresenta uma visão geral da telemetria que o Firezone coleta de sua instância auto-hospedada e como desativá-la.

Por que Firezone coleta telemetria

Zona de fogo confia em telemetria para priorizar nosso roteiro e otimizar os recursos de engenharia que temos para tornar o Firezone melhor para todos.

A telemetria que recolhemos visa responder às seguintes questões:

  • Quantas pessoas instalam, usam e param de usar o Firezone?
  • Quais recursos são mais valiosos e quais não são usados?
  • Qual funcionalidade precisa de mais melhorias?
  • Quando algo quebra, por que quebrou e como podemos evitar que isso aconteça no futuro?

Como coletamos a telemetria

Existem três locais principais onde a telemetria é coletada no Firezone:

  1. Telemetria de pacote. Inclui eventos como instalação, desinstalação e atualização.
  2. Telemetria CLI de comandos firezone-ctl.
  3. Telemetria do produto associada ao portal da Web.

Em cada um desses três contextos, capturamos a quantidade mínima de dados necessários para responder às perguntas da seção acima.

Os e-mails do administrador são coletados apenas se você aceitar explicitamente as atualizações do produto. Caso contrário, as informações de identificação pessoal são nunca coletados.

O Firezone armazena a telemetria em uma instância auto-hospedada do PostHog em execução em um cluster privado do Kubernetes, acessível apenas pela equipe do Firezone. Aqui está um exemplo de um evento de telemetria que é enviado de sua instância do Firezone para nosso servidor de telemetria:

{

   vai: “0182272d-0b88-0000-d419-7b9a413713f1”,

   "Timestamp": “2022-07-22T18:30:39.748000+00:00”,

   "evento": “fz_http_iniciado”,

   “id_distinto”: “1ec2e794-1c3e-43fc-a78f-1db6d1a37f54”,

   "propriedades": {

       “$geoip_city_name”: “Ashburn”,

       “$geoip_continent_code”: "N / D",

       “$geoip_continent_name”: "América do Norte",

       “$geoip_country_code”: "NÓS",

       “$geoip_country_name”: "Estados Unidos",

       “$geoip_latitude”: 39.0469,

       “$geoip_longitude”: -77.4903,

       “$geoip_postal_code”: "20149",

       “$geoip_subdivision_1_code”: "VA",

       “$geoip_subdivision_1_name”: "Virgínia",

       “$geoip_time_zone”: “América/Nova_York”,

       “$ip”: "52.200.241.107",

       “$plugins_deferidos”:[],

       “$plugins_failed”:[],

       “$plugins_sucesso”: [

           “GeoIP (3)”

       ],

       “id_distinto”: “1zc2e794-1c3e-43fc-a78f-1db6d1a37f54”,

       "fqdn": “awsdemo.firezone.dev”,

       “versão_kernel”: “Linux 5.13.0”,

       "versão": "0.4.6"

   },

   “elementos_cadeia”: ""

}

Como desativar a telemetria

NOTA

A equipe de desenvolvimento do Firezone confia na análise de produtos para tornar o Firezone melhor para todos. Deixar a telemetria habilitada é a contribuição mais valiosa que você pode fazer para o desenvolvimento do Firezone. Dito isso, entendemos que alguns usuários têm requisitos de privacidade ou segurança mais altos e preferem desativar completamente a telemetria. Se é você, continue lendo.

A telemetria é habilitada por padrão. Para desativar completamente a telemetria do produto, defina a seguinte opção de configuração como false em /etc/firezone/firezone.rb e execute sudo firezone-ctl reconfigure para selecionar as alterações.

padrão['zona de fogo']['telemetria']['habilitado'] = falso

Isso desativará completamente toda a telemetria do produto.