||| Página inicial Grupo de SinaisPrivacidade Online Softwares Comprar Artigos|Tutoriais|Notícias Depoimentos Quem Somos Contato Doar

Go to our


virt-manager-linux-qemu-kvm-modo-nat - ITP logo
Configurar-virt-manager-debian-rede-nat

Máquina Virtual no Virt Manager em Rede NAT


Este artigo oferece um tutorial básico e completo para iniciantes sobre a instalação e configuração de máquinas virtuais utilizando QEMU-KVM e Virt-Manager no Debian. Além disso, abordaremos a configuração de NAT e forneceremos um script pronto para otimizar a operação da máquina virtual. Com este guia, você aprenderá conceitos essenciais de redes e virtualização de forma simples e prática.


O que são Máquina Virtual, Sandbox e Docker, e para que servem?

A máquina virtual virtualiza o hardware de um PC ou dispositivo e emula sistemas operacionais nele. É totalmente virtualizado e funciona como um programa que permite rodar um sistema operacional dentro de outro.

Isolamento de softwares: Se um navegador, aplicativos, wallets de criptomoedas ou extensões forem maliciosos ou se tornarem maliciosos, eles ficam isolados dentro do SO da máquina virtual!

O que é sandboxing, container e Docker:

Docker: É uma plataforma de código aberto (open-source) para o desenvolvimento de aplicativos em uma caixa de areia (sandbox). Seus ambientes virtualizados e leves são conhecidos como contêineres.

Cada máquina virtual contém uma cópia completa do sistema operacional e do aplicativo, assim como os binários e bibliotecas necessários. Esses arquivos podem ocupar dezenas de GBs em um computador. Além disso, virtualizar o hardware para um sistema operacional convidado pode exigir uma sobrecarga substancial.

Ao invés de virtualizar o hardware, os contêineres virtualizam o sistema operacional. No Docker, os contêineres são abstrações na camada do aplicativo que podem conter tanto o código quanto as dependências. Na mesma máquina, vários contêineres podem funcionar como processos isolados.

Sandboxing envolve fornecer um ambiente seguro para um programa ou software, permitindo o uso sem prejudicar o sistema. Ele mantém o programa isolado do restante do sistema, utilizando diferentes métodos disponíveis no kernel Linux.


INSTALAÇÃO QEMU, KVM, Virt Manager para Debian

Virtual machine QEMU for Debian Linux:

https://www.qemu.org/download/#linux

INSTALAÇÃO MAIS COMPLETA:

Linux Debian:

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y;
sudo adduser seu_usuário libvirt;
sudo adduser seu_usuário kvm;
sudo systemctl status libvirtd;
sudo systemctl start libvirtd;
sudo systemctl enable libvirtd;

Entrar:

sudo virt-manager;

Observação: Sempre use o Virt-Manager, preferencialmente com sudo, pois para a configuração de NAT e outras redes, o sistema precisa de permissões de root para configurar o firewall iptables do Debian.

Para usar o Virt-Manager em redes que não utilizam o firewall, pode ser que funcione normalmente. Um exemplo disso é o uso do modo macvtap, que será abordado em um artigo mais avançado.

Desinstalar:

Apagar dados de /var/lib/libvirt/qemu/channel/target e:

sudo apt purge qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y;
sudo apt remove qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y;

Modo Configuração NAT vs Modo Bridge

NAT: Quando configurada com NAT (Network Address Translation), a máquina virtual fica isolada da rede local. Nesse modo, o tráfego de rede da VM é redirecionado através do endereço IP do host, como se o host fosse um roteador. Isso significa que a VM pode acessar a rede externa (como a internet), mas os outros dispositivos na rede não podem se comunicar diretamente com a VM.

Bridge: Quando configurada em modo Bridge, a máquina virtual se comporta como um dispositivo físico na rede local. A VM se torna visível para todos os outros dispositivos e máquinas na rede, podendo comunicar-se diretamente com eles. Essa configuração faz com que a VM receba um IP próprio na rede local, facilitando a comunicação com outros dispositivos.

Neste tutorial, abordaremos a configuração de NAT, e não entraremos em detalhes sobre o modo Bridge. Teremos um guia específico para essa configuração em outro artigo.


Barreira do modo NAT para maior segurança

Um atacante, para atingir sua máquina virtual, precisa primeiro invadir seu computador e, em seguida, invadir a VM, que está isolada e não visível para a rede. Isso torna as operações na VM mais seguras para tarefas que exigem maior proteção.

Se você usa a rede em modo Bridge, Route ou MacVTap (que abordaremos em outros artigos), sua VM se conectará diretamente ao roteador ou switch da rede, tornando-a visível para outras máquinas. Nesse cenário, os atacantes poderiam realizar escaneamentos de rede, roubar seu endereço MAC ou coletar metadados de sua VM na rede, aumentando os riscos de ataques.


Problema de configuração do Virt-Manager que poucos sabem e pode prejudicar a segurança do seu Linux ou colapsar a rede!

O firewall ficará aberto e sem proteção após desligar o modo de rede NAT, que vamos aprender a configurar neste tutorial!

Sempre que desligar a rede NAT no Virt-Manager, é necessário, antes, desconectar a internet do PC e reconfigurar o firewall com as regras que você utiliza!

Em nosso script automatizado do Virt-Manager, ele apaga a rede padrão NAT, remove todas as regras do iptables e reconfigura com regras de kernel e regras básicas de iptables para segurança do sistema, baseado no script https://github.com/leandroibov/iptables_kernel_basico.

O Virt-Manager adiciona regras no iptables para o modo NAT funcionar sem apagar as regras existentes. Isso pode gerar conflitos, fazendo com que a rede colapse ou não funcione corretamente!

Por isso, você deve baixar e usar os scripts do libvirt no GitHub do Leandroibov, que corrigirão esse problema!


Usando os scripts Libvirt para automatizar e assegurar as configurações com segurança!

Baixe os scripts em: https://github.com/leandroibov/virt-manager-kvm-qemu-nat-network-script-iptables

Autorize a execução desses scripts com:

sudo chmod +x virt_manager_br10.sh virt_manager_br11.sh virt_manager_delete.sh virt_manager_start.sh virt_manager_stop.sh

Para executar, use: ./virt_manager_br10.sh por exemplo, ou copie para /bin com:

sudo cp -r virt_manager_br10.sh virt_manager_br11.sh virt_manager_delete.sh virt_manager_start.sh virt_manager_stop.sh /bin/;

Depois disso, basta executar em qualquer local no terminal com o nome de um dos scripts, sem precisar navegar até a pasta em que eles estão.

O que faz cada um:


Como Configurar a Rede NAT no Virt-Manager Manualmente

Este script automatiza o processo de configuração de uma rede NAT no Virt-Manager, permitindo criar uma rede virtual para máquinas virtuais (VMs) que se conectam à rede externa por meio de um endereço IP privado.

Passos principais:

1. Criação do Arquivo de Rede (br10.xml): O script cria um arquivo XML de configuração da rede NAT (br10.xml). Ele define uma rede com NAT, um intervalo de portas de 1024 a 65535, e configura um DHCP com um intervalo de endereços IP de 192.168.30.50 a 192.168.30.200. O nome da rede é br10.

Você pode criar o arquivo br10.xml manualmente colocando o código abaixo nele e depois executar o comando sudo virsh net-define br10.xml no terminal no mesmo local que br10.xml se encontra!

<network>
  <name>br10</name>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='br10' stp='on' delay='0' />
  <ip address='192.168.30.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.30.50' end='192.168.30.200'/>
    </dhcp>
  </ip>
</network>

2. Desligamento da Rede de Segurança: O script desliga as interfaces de rede para garantir que o processo de configuração não seja interrompido. Ele usa comandos para desligar o NetworkManager e parar os serviços de rede.

sudo service network-manager stop;
sudo systemctl stop NetworkManager;
sudo nmcli networking off;

3. Reinício dos Serviços do Virt-Manager: O script reinicia os serviços do libvirtd e reinicia o socket do libvirtd, além de garantir que esses serviços iniciem automaticamente na inicialização do sistema.

sudo service network-manager stop;
sudo service network-manager start;
sudo service network-manager restart;
sudo systemctl stop NetworkManager;
sudo systemctl disable NetworkManager;
sudo systemctl enable NetworkManager;
sudo systemctl start NetworkManager;
sudo systemctl restart NetworkManager;
sudo nmcli networking off;
sudo nmcli networking on;

4. Limpeza das Regras do Firewall: O script limpa as regras atuais do firewall utilizando o iptables, garantindo que não haja conflitos de regras de firewall que possam impedir a comunicação da rede NAT.

sudo iptables -F  # Remove as regras de todas as chains
sudo iptables -X  # Apaga todas as chains
sudo iptables -Z  # Zera as regras de todas as chains
sudo iptables -P INPUT ACCEPT;
sudo iptables -P FORWARD ACCEPT;
sudo iptables -P OUTPUT ACCEPT;
sudo iptables -t filter -F;
sudo iptables -t filter -X;
sudo iptables -t filter -Z;
sudo iptables -t nat -F;
sudo iptables -t nat -X;
sudo iptables -t nat -Z;
sudo iptables -t mangle -F;
sudo iptables -t mangle -X;
sudo iptables -t mangle -Z;
sudo iptables -t raw -F;
sudo iptables -t raw -X;
sudo iptables -t raw -Z;

5. Habilitação do Encaminhamento de IP (IP Forwarding): O script garante que o encaminhamento de pacotes IP esteja ativado, permitindo que a máquina virtual acesse a rede externa via a rede NAT.

sudo echo 1 > /proc/sys/net/ipv4/ip_forward;
cat /proc/sys/net/ipv4/ip_forward;

6. Configuração do Virt-Manager: O script configura o Virt-Manager para usar a rede definida (br10.xml), iniciando a rede e configurando-a para iniciar automaticamente. Ele também verifica se a rede foi criada corretamente.

sudo virsh list --all;
sudo virsh net-define br10.xml;
sudo virsh net-start br10;
sudo virsh net-autostart br10;
ip addr show dev br10;

7. Reinício do NetworkManager: Após a configuração da rede, o script reinicia o NetworkManager para aplicar as alterações de rede.

sudo service network-manager stop;
sudo service network-manager start;
sudo service network-manager restart;
sudo systemctl stop NetworkManager;
sudo systemctl disable NetworkManager;
sudo systemctl enable NetworkManager;
sudo systemctl start NetworkManager;
sudo systemctl restart NetworkManager;
sudo nmcli networking off;
sudo nmcli networking on;

8. Exibição das Regras de Firewall e VMs e Redes Virt-Manager: Finalmente, o script exibe as regras de firewall (iptables) e lista as redes disponíveis no Virt-Manager.

sudo iptables -t filter -S;
sudo iptables -t nat -S;
sudo iptables -t mangle -S;
sudo iptables -t raw -S;
sudo virsh list --all;
sudo virsh net-list;


Veja os tutoriais sobre o modo BRIDGE MACVTAP e 100% em BRIDGE para KVM Virt Manager: Clique aqui!

Se inscrever em nossos cursos gravados de anonimidade e segurança online avançados? Clique aqui!

Doar monero para ajudar no crescimento desse projeto: Clique aqui!

Contato:
Clique aqui