Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: .NET Core 2.1, .NET Core 3.1, .NET 5
Este artigo apresenta como configurar um firewall local para proteger sua máquina virtual (VM) Linux.
Pré-requisitos
Não há pré-requisitos para concluir esta parte do tutorial.
Objetivo desta parte
Você aprenderá a proteger sua VM do Linux configurando um firewall.
Embora não haja pré-requisitos para esta parte, a configuração ideal seguiria as orientações das partes anteriores. Você deve ter o seguinte:
- Nginx rodando automaticamente e escutando solicitações enviadas na porta 80
- Nginx configurado como um proxy reverso e roteando solicitações de entrada para um aplicativo ASP.NET Core que está escutando na porta 5000.
- O aplicativo ASP.NET Core configurado para iniciar automaticamente após a reinicialização do servidor ou quando o processo é interrompido ou trava
Configurar um firewall local para permitir o acesso de computadores remotos
Quase todas as distribuições Linux incluem um firewall local chamado iptables. Este guia para iniciantes é suficiente para um início rápido. O Iptables é um firewall leve, mas poderoso, que usa cadeias de políticas para permitir ou bloquear o tráfego.
De acordo com a página de ajuda da comunidade Ubuntu, por padrão, o iptables é instalado em todas as distribuições oficiais do Ubuntu e é configurado para permitir todo o tráfego.
Embora o iptables seja um firewall leve, não é fácil gerenciar as regras persistentes. Felizmente, existem várias ferramentas de configuração de firewall que facilitam muito a tarefa de configurar regras de firewall no Linux. De acordo com a documentação oficial do firewall do Ubuntu, a ferramenta de configuração de firewall padrão para o Ubuntu é ufw
. Esta ferramenta fornece um método mais amigável do que o iptables fornece para criar um firewall baseado em host IPv4 ou IPv6.
Observação
ufw
é inicialmente desabilitado por padrão. Portanto, você deve habilitá-lo para poder usá-lo.
A VM do Linux que foi usada ao longo deste tutorial não é protegida por nenhuma regra de firewall. Isso ocorre porque, embora o iptables esteja instalado e em execução, não há regras definidas.
O objetivo aqui é permitir que apenas o tráfego HTTP e SSH (Secure Shell) chegue à VM de fora. Para conseguir isso, siga estas etapas:
- Antes de habilitar
ufw
o , verifique se a regra de política padrão está definida como permitir. Caso contrário, você corre o risco de perder a conexão SSH com a VM. A regra padrão é a regra que é processada se nenhuma outra regra for correspondida. Habilitar a regra padrão "permitir" garantirá que o tráfego SSH de entrada não seja bloqueado. Neste ponto, não há nenhuma regra de "negação". Portanto, todo o tráfego de entrada é permitido. -
Importante
Adicione explicitamente as regras de "permissão" SSH e HTTP. Observe também que, se você configurou a porta SSH para um valor diferente do padrão de 22, deverá permitir essa porta. Por exemplo, se você alterou a porta SSH para 2222, execute este comando:
sudo ufw allow 2222
. - Defina a regra padrão como uma regra de "negação". Isso garante que, se o protocolo for diferente de SSH ou HTTP, a regra padrão de "negação" negará o tráfego. Por exemplo, o tráfego HTTP de entrada será negado.
- Ative o
ufw
.
Os comandos para essas etapas estão listados na captura de tela a seguir.
Isso é o que ocorre em cada etapa.
Verifica o status do UFW executando o
sudo ufw status verbose
comando. Por padrão, o ufw não está habilitado e está inativo.executa
sudo ufw default allow
comando. Como não há outra regra além da regra padrão "permitir", todas as portas na VM serão consideradas abertas.-
Importante
Adicione o protocolo SSH à lista de permissões executando o
sudo ufw allow ssh
comando. Protocol.ssh é um protocolo conhecido e é definido no arquivo /etc/services . Portanto, "ssh" pode ser usado em vez de "22". Lembre-se de que, se você configurar o serviço SSH para escutar em uma porta diferente da porta padrão 22, deverá adicionar explicitamente a outra porta. Por exemplo, se você configurar o SSH para escutar a porta 2222, execute este comando:sudo ufw allow 2222
. Permita o protocolo HTTP executando
sudo ufw allow http
. HTTP é um protocolo conhecido definido no arquivo /etc/services. Portanto, o nome do protocolo pode ser usado e osudo ufw allow http
comando pode ser executado. Corrersudo ufw allow 80
também é perfeitamente válido.Observação
Depois de permitir os protocolos SSH e HTTP, você desejará adicionar todos os outros protocolos à lista de "negação".
Você pode fazer isso alterando a regra padrão para negar executando o
sudo ufw default deny
comando. Somente os protocolos SSH e HTTP serão permitidos. Os outros protocolos serão negados.Habilitar
ufw
.
Aqui está a sudo ufw status verbose
saída depois de concluir este procedimento.
Depois que o firewall estiver configurado, teste se ele funciona.
Testar o firewall local
Testar o firewall é fácil: crie uma regra de "negação" para o protocolo HTTP e tente acessar o site de outro computador. A solicitação deve ser bloqueada.
Antes de criar essa regra de "negação", verifique se o aplicativo está acessível ao navegador em sua configuração atual. Para fazer isso, edite o arquivo C:\Windows\System32\drivers\etc\hosts no computador cliente adicionando o nome do host com bugs e usando o endereço IP público da VM do Linux. O nome do host buggyamb resolve o endereço IP da VM do Linux. Você pode adicionar qualquer nome de host ao arquivo hosts ou tentar se conectar diretamente ao endereço IP público da VM do Linux.
Depois de verificar se as solicitações HTTP podem chegar à VM, tente habilitar uma regra que bloqueie o tráfego HTTP. Isso é garantir que o firewall funcione. Para fazer isso, adicione uma regra de "negação" para HTTP executando sudo ufw deny http
. Isso adiciona duas regras de "negação" para o protocolo HTTP (na porta 80). Um é para IPv4, o outro é para IPv6.
Abra o navegador novamente e tente acessar o aplicativo ASP.NET Core que está sendo executado no Linux.
Esta captura de tela mostra o resultado esperado.
Você pode executar um teste semelhante diretamente na VM do Linux usando o wget
comando. A captura de tela a seguir mostra as etapas necessárias para o mesmo teste executando wget
o .
Isso é o que ocorre em cada etapa.
A regra "negar" para o protocolo HTTP foi adicionada.
O
wget buggyamb-external
comando foi executado. Como você pode imaginar, o nome de host "buggyamb-external" resolve o endereço IP público da VM do Linux. Para fazer isso, edite o/etc/hosts
arquivo usando o vi. Como mostrado,wget
tentei me conectar a ele, mas nunca consegui. Para sair da operação, você tinha que pressionar CTRL+C.Uma regra "permitir" para o protocolo HTTP foi adicionada.
A execução do
wget buggyamb-external
comando novamente produziu resultados diferentes. Desta vez,wget
foi possível conectar porque o protocolo HTTP foi permitido. Conforme mostrado,wget
baixa o arquivo Index.html para o diretório atual.
Agora você está um passo mais perto de concluir a configuração necessária para depurar o aplicativo ASP.NET Core. Antes de ir para a próxima parte, certifique-se novamente de que o SSH e o HTTP sejam permitidos no firewall local.